【发布时间】:2019-11-12 01:35:56
【问题描述】:
我写了一个温度转换程序。除了开尔文到摄氏度、开尔文到华氏度以及反之亦然的转换之外,一切都运行良好。我已经尝试了很多不同的代码来查看它是否会被修复,但都是徒劳的。请指教。下面是整个代码。您将在名为 ToTemp() 的第二个函数中找到问题区域;如果您输入下限温度缩写或上限(即 34F 或 34f),前几条语句效果很好。但其他任何事情都无法发挥作用。
'''
Python program to convert temperature from Celsius,
Fahrenheit or Kelvin. These next lines of code (loc) introduce
the program and ask user for temperature to be converted.
'''
import sys # to exit when user makes error.
print ("\n****Welcome to your own advanced temperature conversion application!****\n")
print ("^^^What would you like to convert?^^^")
print ("Type 'C' for Celsius, 'F' for Fahrenheit and 'K' for Kelvin \
after entering digits. (Ex: '34C')\n")
user_temp1 = input('--> ')
# function to determine which temperature user wishes to convert from.
def FromTemp(user_temp):
if user_temp1[-1] == 'C' or user_temp1[-1] == 'c':
print ("You wish to convert from Celsius.")
elif user_temp1[-1] == 'F' or user_temp1[-1] == 'f':
print ("You wish to convert from Fahrenheit.")
elif user_temp1[-1] == 'K' or user_temp1[-1] == 'k':
print ("Ah! Yes, the elusive Kelvin!")
else:
print ("You must think me mad; I only allow C, F and K.")
sys.exit() # exits when user makes mistake.
FromTemp(user_temp1)
# asks user for desired conversion rate.
print ("\n^^^What would you like to convert to? (Enter 'C', 'F' or 'K')^^^\n")
destin_temp = input("--> ")
# stripping the numbers from the temperature symbol.
real_temp = user_temp1[:- 1]
raw_temp = int(real_temp)
# function to make conversion from and to appropriate thermal unit.
def ToTemp(raw_temp):
if destin_temp == 'C' or destin_temp == 'c' and user_temp1[-1] == 'F' or user_temp1[-1] == 'f':
f_to_c = round(float((raw_temp - 32) * 5/9), 2)
print (real_temp, "degrees Fahrenheit is", f_to_c, "degrees Celsius.\n")
print ("****Thank you for stopping by!****\n") #good
elif destin_temp == 'F' or destin_temp == 'f' and user_temp1[-1] == 'C' or user_temp1[-1] == 'c':
c_to_f = round(float(raw_temp * (9/5) + 32), 2)
print (real_temp, "degrees Celsius is", c_to_f, "degrees Fahrenheit.")
print ("****Thank you for stopping by!****\n") #good
elif destin_temp == 'C' or destin_temp == 'c' and user_temp1[-1] == 'K' or user_temp1[-1] == 'k':
k_to_c = round(float(raw_temp - 273.15), 2)
print (real_temp, "degrees Kelvin is", k_to_c, "degrees Celsius.")
print ("****Thank you for stopping by!****\n") # doesn't work
elif destin_temp == 'K' or destin_temp == 'k' and user_temp1[-1] == 'C' or user_temp1[-1] == 'c':
c_to_k = round(float(raw_temp + 273.15), 2)
print (real_temp, "degrees Celsius is", c_to_k, "degrees Kelvin.")
print ("****Thank you for stopping by!****\n") # doesn't work
elif destin_temp == 'F' or destin_temp == 'f' and user_temp1[-1] == 'K' or user_temp1[-1] == 'k':
k_to_f = round(float((raw_temp - 273.15) * (9/5) + 32), 2)
print (real_temp, "degrees Kelvin is", k_to_f, "degrees Fahrenheit.")
print ("****Thank you for stopping by!****\n") # doesn't work
elif destin_temp == 'K' or destin_temp == 'k' and user_temp1[-1] == 'F' or user_temp1[-1] == 'f':
f_to_k = round(float(raw_temp - 32 *(5/9) + 273.15), 2)
print (real_temp, "degrees Fahrenheit is", k_to_f, "degrees Kelvin.")
print ("****Thank you for stopping by!****\n") # doesn't work
else:
print("You made a mistake somewhere. Try again later.")
sys.exit()
ToTemp(raw_temp)
【问题讨论】:
-
添加一些括号应该可以解决您的问题。
-
@iz_ 我应该在哪里包含这些括号?我已经查看这些代码几个小时了;我相信我现在会错过最明显的错误:'(
-
@manveti 它没有
标签: python if-statement