#!/usr/bin/env Python
# -*- coding:utf-8 -*-
# transfer.py
# 翻译小程序 用面向对象的思想进行重构
class Transfer(object):
"""单位转换的输入输出"""
def __init__(self):
self.welcome()
self.converter = self.convert_choose()
self.converter()
def welcome(self):
menu = {
"1":"温度转换",
'2':'长度转换',
'3':'货币转换',
'q':'退出'
}
for k,v in menu:
print(f'{k}:{v}')
def convert_choose(self):
converter = None # 定义一个转换器
while True:
choose = input('请输入转换的类型(Q退出)').upper()
if choose == '1':
converter = Temperature
elif choose == "2":
converter = Length
elif choose == '3':
converter = Currency
elif choose == "Q":
print("退出")
exit()
else:
print('输入错误,请重新输入')
continue
return converter
class Temperature(object):
"""温度转换"""
def __init__(self):
self.user_input()
def user_input(self):
"输入入口"
temp = input("请输入要转换的值(1C 1F,Q退出)").upper()
while True:
if temp.endswith("C"):
try:
temp = float(temp.strip("C"))
except:
print('请按照提示输入')
res = f'{temp}转换为华氏度为{self.c_to_f(temp)}'
elif temp.endswith('F'):
try:
temp = float(temp.strip("F"))
except:
print('请按照提示输入')
res = f'{temp}转换为摄氏度为{self.f_to_c(temp)}'
elif temp == "Q":
exit()
else:
res = None
print('输入不正确,请重新输入')
continue
print(res)
def c_to_f(self, num):
"摄氏度转华氏度"
num1 = ( 9 / 5 ) * num + 32
round(num1, 0)
return num1
def f_to_c(self, num):
"华氏度转摄氏度"
num1 = ( 5 / 9 ) * num - 32
round(num1, 0)
return num1
class Length:
"""长度转换"""
def __init__(self):
self.user_input()
def user_input(self):
"输入入口"
temp = input("请输入要转换的值(1m 1foot,Q退出)").upper()
while True:
if temp.endswith("M"):
try:
temp = float(temp.strip("M"))
except:
print('请按照提示输入')
res = f'{temp}转换为英尺为{self.m_to_ft(temp)}'
elif temp.endswith('FOOT'):
try:
temp = float(temp.strip("F"))
except:
print('请按照提示输入')
res = f'{temp}转换为米为{self.m_to_ft(temp)}'
elif temp == "Q":
exit()
else:
res = None
print('输入不正确,请重新输入')
continue
print(res)
def m_to_ft(self, num):
"米转化为英尺"
num1 = num * 3.2808399
round(num1, 0)
return num1
def ft_to_m(self, num):
"英尺转化成米"
num1 = num * 0.3048
round(num1, 0)
return num1
class Currency:
"""货币转换"""
def __init__(self):
self.user_input()
def user_input(self):
"输入入口"
temp = input("请输入要转换的值(1rmb 1d,Q退出)").upper()
while True:
if temp.endswith("RMB"):
try:
temp = float(temp.strip("RMB"))
except:
print('请按照提示输入')
res = f'{temp}转换为美金为{self.r_to_d(temp)}'
elif temp.endswith('D'):
try:
temp = float(temp.strip("D"))
except:
print('请按照提示输入')
res = f'{temp}转换为人民币为{self.r_to_d(temp)}'
elif temp == "Q":
exit()
else:
res = None
print('输入不正确')
continue
print(res)
def r_to_d(self, num):
"人民币转化为美金"
num1 = num * 0.1404
round(num1, 0)
return num1
def d_to_r(self, num):
"美金转化为人民币"
num1 = num * 7.1218
round(num1, 0)
return num1
def main():
x = Transfer()
x.convert_choose()
if __name__ == "__main__":
main()