【问题标题】:Write a function in python for temperature conversion named ‘convert_temp’在python中编写一个名为'convert_temp'的温度转换函数
【发布时间】:2015-12-07 16:28:14
【问题描述】:

编写一个名为“convert_temp”的温度转换函数。

  • 它应该能够处理华氏到摄氏的转换以及摄氏到华氏的转换。
  • 它必须接受并读取传递给它的两个参数:第一,原始温度的温标(只能使用“F”或“C”),第二,原始温度的度数 温度。
  • 然后应酌情将原始温度从华氏温度转换为摄氏温度或从摄氏温度转换为华氏温度。
  • 最后,这个函数应该打印出原始温度和刻度以及转换后的温度和刻度。

函数签名应该是:

def convert_temp( scale=None, source_temp=None ):

然后编写一个简短的程序来使用您编写的函数(函数和程序都应该是同一个文件的一部分)。您的程序应该提示用户输入一个温标(假设用户将选择输入“F”或“C”),然后提示用户输入度数。使用用户提供的值,程序应该调用“convert_temp” 函数并传入两个参数,如下所示:

convert_temp(scale=F, source_temp=98.6)

并且子程序应该产生如下所示的输出行(从华氏到摄氏):

98.6 degrees F is 37.0 degrees C

或者,对于摄氏到华氏的转换:

100.0 degrees C is 212.0 degrees F

您应该报告的第一个温度和比例是用户输入的温度和比例,然后是转换后的温度和其他比例。

到目前为止,我有以下代码:

#!/usr/bin/env python3
def convert_temp(scale=None, source_temp=None):
    if scale == "F":
        return(source_temp - 32.0) * (5.0/9.0)
    elif scale == "C":
        return(source_temp * (9.0/5.0)) + 32.0
    else:
        print("Needs to be (F) or (C)!")

scale = input("Select (F) or (C): " )
source_temp = int(input("What is the temperature: " ))
m = convert_temp(scale, source_temp)
print(source_temp, "degrees", scale, "is", m, "degrees", scale)

需要帮助的是将转换后的比例(F 或 C)添加到我的打印输出中。

【问题讨论】:

  • 您好,欢迎您。看起来你已经取得了进展。目前还不清楚你特别纠结的是什么?

标签: python temperature


【解决方案1】:

您可以做的最简单的事情是让函数返回转换后温度的比例,因为它的行为已经基于给定的比例。

它可以简单地返回一个元组,将目标比例作为它的第一个元素

#!/usr/bin/env python3
def convert_temp(scale=None, source_temp=None):
    if scale == "F":
        return 'C', (source_temp - 32.0) * (5.0/9.0)
    elif scale == "C":
        return 'F', (source_temp * (9.0/5.0)) + 32.0
    else:
        print("Needs to be (F) or (C)!")

scale = input("Select (F) or (C): " )
source_temp = int(input("What is the temperature: " ))
s, m = convert_temp(scale, source_temp)
print(source_temp, "degrees", scale, "is", m, "degrees", s)

所以现在输出显示了原始比例和转换后的比例:

Select (F) or (C): F
What is the temperature: 92
92 degrees F is 33.333333333333336 degrees C

Select (F) or (C): C 
What is the temperature: 33
33 degrees C is 91.4 degrees F

注意:如果不支持给定的比例,该函数会打印出错误消息。它应该 raise 一个异常来代替。

注意2:为什么不将输入数字转换为浮点数?

【讨论】:

    【解决方案2】:

    :之后需要缩进...

    #!/usr/bin/env python3
    def convert_temp(scale=None, source_temp=None):
        if scale == "F":
            return(source_temp - 32.0) * (5.0/9.0)
        elif scale == "C":
            return(source_temp * (9.0/5.0)) + 32.0
        else:
            print("Needs to be (F) or (C)!")
            return
    
    scale = input("Select (F) or (C): " )
    source_temp = int(input("What is the temperature: " ))
    m = convert_temp(scale, source_temp)
    print(source_temp, "degrees", scale, "is", m, "degrees", scale)
    

    【讨论】:

    • 是的,缩进是错误的,但我知道问题是在打印结果时显示目标比例。如您所见,现在结果显示相同的比例
    【解决方案3】:

    只是根据上面的答案,我为了懒惰的用户对其进行了调整-他们可能不会在输入部分大写 F 或 C...而是将“f”或“c”放在较低的位置案子... 这个答案解决了这个问题,并在打印语句中以标题大小写正确格式返回比例。

    def convert_temp(scale=None, source_temp=None):
    if (scale == "F") or (scale == "f"):
        return 'C', (source_temp - 32.0) * (5.0/9.0)
    elif (scale == "C") or (scale == "c"):
        return 'F', (source_temp * (9.0/5.0)) + 32.0
    else:
        print("Needs to be (F) or (C)!")
    
    scale = input("Select (F) or (C): " )
    source_temp = int(input("What is the temperature: " ))
    s, m = convert_temp(scale, source_temp)
    print(source_temp, "degrees", scale.title(), "is", m, "degrees", s)
    

    【讨论】:

      猜你喜欢
      • 2015-07-06
      • 2022-12-08
      • 2014-12-28
      • 2020-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多