12、要设计一个温度转换程序,实现摄氏度和华氏度的相互转换,应该用什么结构来设计程序?

12、要设计一个温度转换程序,实现摄氏度和华氏度的相互转换,应该用什么结构来设计程序?

用if结构

choice = input("请选择转换模式:1. 摄氏度转华氏度,2. 华氏度转摄氏度: ")

if choice == '1':
    celsius = int(input("请输入摄氏温度: "))
    fahrenheit = (celsius * 1.8) + 32
    print("{}摄氏度转换为华氏度为:{}" .format(celsius, fahrenheit))

elif choice == '2':
    fahrenheit = int(input("请输入华氏温度: "))
    celsius = (fahrenheit - 32) / 1.8
    print("{}华氏度转换为摄氏度为:{}" .format(fahrenheit, celsius))

else:
    print("选择错误,请输入1或2")

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7515628
  • 这篇博客你也可以参考下:温度转换:摄氏度和华氏度转换
  • 除此之外, 这篇博客: 第三章课后练习中的 4.编程序实现华氏温度到摄氏温度的转换 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    #编程序实现华氏温度与摄氏温度的转换,其公式为c=5/9*(f-32),c为摄氏温度,f为华氏温度
    f=input("请输入需要转换的华氏温度:")
    f=int(f)
    c=5/9*(f-32)
    print("华氏温度",f,'转换后为',c,'摄氏度')
    

    运行结果:
    在这里插入图片描述

  • 以下回答来自chatgpt:

    针对这个问题,我们可以考虑使用面向对象的编程方法。具体地,我们可以设计一个Temperature类,其中包含摄氏度到华氏度和华氏度到摄氏度的转换方法,同时,类中可以设置一个成员变量来存储当前温度值,便于进行转换操作。下面是一个简单的温度转换程序的结构设计:

    class Temperature:
        def __init__(self, value, unit):
            """
            初始化 Temperature 类的实例。
    
            :param value: 温度值
            :type value: float
            :param unit: 温度单位,'C'表示摄氏度,'F'表示华氏度
            :type unit: str
            """
            self.value = value
            self.unit = unit
    
        def to_celsius(self):
            """
            将当前温度值从华氏度转换为摄氏度。
    
            :return: 转换后的摄氏度值
            :rtype: float
            """
            if self.unit == 'F':
                return (self.value - 32) * 5 / 9
            else:
                return self.value
    
        def to_fahrenheit(self):
            """
            将当前温度值从摄氏度转换为华氏度。
    
            :return: 转换后的华氏度值
            :rtype: float
            """
            if self.unit == 'C':
                return self.value * 9 / 5 + 32
            else:
                return self.value
    

    使用方法如下:

    >>> t = Temperature(32, 'F')
    >>> t.to_celsius()
    0.0
    >>> t.to_fahrenheit()
    32.0
    

    对于上述代码中的to_celsius和to_fahrenheit方法,我们可以通过以下几个变量和函数进行优化:

    • 使用常量来表示温度转换中的数字,例如在to_celsius中,就可以将5/9用0.55555表示,避免了每次计算时都要进行小数运算的麻烦。
    • 可以使用lambda函数来替换掉to_celsius和to_fahrenheit中的if else语句,简化代码,例如:
    class Temperature:
        ...
        f2c = lambda self, f: (f - 32) * 0.55555
        c2f = lambda self, c: c * 1.8 + 32
    
        def to_celsius(self):
            """
            将当前温度值从华氏度转换为摄氏度。
    
            :return: 转换后的摄氏度值
            :rtype: float
            """
            if self.unit == 'F':
                return self.f2c(self.value)
            else:
                return self.value
    
        def to_fahrenheit(self):
            """
            将当前温度值从摄氏度转换为华氏度。
    
            :return: 转换后的华氏度值
            :rtype: float
            """
            if self.unit == 'C':
                return self.c2f(self.value)
            else:
                return self.value
    

    此外,还可以在类中增加异常处理,防止输入错误的温度单位或温度值等情况引起程序崩溃。具体代码在此不再赘述。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^