利用函数对象制作功能选单的方法,编写某种度量衡(比如说货币)转换程序,实现该种度量衡双向(或多向)、任意多次的转换(也即打印功能选单提示用户选择,并输入数据得到转换值,直到用户选择退出为止)。
时间: 2024-06-09 16:09:44 浏览: 8
以下是一个使用函数对象制作功能选单的货币转换程序:
```python
class Converter:
def __init__(self, name, ratio):
self.name = name
self.ratio = ratio
def __call__(self, amount):
return amount * self.ratio
def show_menu(converters):
print("请选择要转换的货币:")
for i, converter in enumerate(converters):
print(f"{i + 1}. {converter.name}")
print(f"{len(converters) + 1}. 退出")
def get_input():
while True:
try:
value = float(input("请输入要转换的数值:"))
return value
except ValueError:
print("输入有误,请重新输入。")
def main():
converters = [
Converter("人民币", 1),
Converter("美元", 0.15),
Converter("欧元", 0.13),
Converter("日元", 16.27),
]
while True:
show_menu(converters)
choice = input("请输入选项序号:")
if choice == str(len(converters) + 1):
print("退出程序。")
break
try:
choice = int(choice)
converter = converters[choice - 1]
except (ValueError, IndexError):
print("输入有误,请重新输入。")
continue
amount = get_input()
result = converter(amount)
print(f"{amount} {converter.name} = {result} 人民币")
if __name__ == "__main__":
main()
```
运行程序后,用户可以选择要转换的货币,输入要转换的数值,程序会计算出转换后的值并输出。用户可以选择多次转换,直到选择退出为止。