qq_38436167 2019-10-25 19:37 采纳率: 0%
浏览 373
已结题

怎么把这个程序进行实例化并最终执行出来?

#!/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()












  • 写回答

1条回答 默认 最新

  • threenewbee 2019-10-25 22:48
    关注

    你又是单位转换又是温度转换,你得做一个菜单选择,然后分别调用对应的功能

    评论

报告相同问题?

悬赏问题

  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题