qq_38436167 2019-10-25 16:25 采纳率: 0%
浏览 394
已结题

这个python程序为什么执行不出来,以Transfer类为函数的主体

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











  • 写回答

1条回答 默认 最新

  • threenewbee 2019-10-25 17:33
    关注

    你定义了类,但是没有一个主程序调用其中任何一个方法.实际上这个问题和昨天的问题是一样的,而我实际上回答过你

    评论

报告相同问题?

悬赏问题

  • ¥15 学不会递归,理解不了汉诺塔参数变化
  • ¥15 基于图神经网络的COVID-19药物筛选研究
  • ¥30 软件自定义无线电该怎样使用
  • ¥15 R语言mediation包做中介分析,直接效应和间接效应都很小,为什么?
  • ¥15 Jenkins+k8s部署slave节点offline
  • ¥15 如何实现从tello无人机上获取实时传输的视频流,然后将获取的视频通过yolov5进行检测
  • ¥15 WPF使用Canvas绘制矢量图问题
  • ¥15 用三极管设计一个单管共射放大电路
  • ¥15 孟德尔随机化r语言运行问题
  • ¥15 pyinstaller编译的时候出现No module named 'imp'