我写了一个温度转换程序。除了开尔文到摄氏度、开尔文到华氏度以及反之亦然之外,一切都很好。我尝试了很多不同的代码,看看它是否会被修复,但都是徒劳的。请告知。下面是整个代码。您将在第二个名为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)
我宁愿重写这个:
if destin_temp == 'C' or destin_temp == 'c' and user_temp1[-1] == 'F' or user_temp1[-1] == 'f':
如下:
destin_temp = destin_temp.lower()
user_temp = user_temp1[-1].lower()
if destin_temp == 'c' and user_temp == 'f':
将所有内容转换为小写(或大写(并处理简单得多的表达式。
将华氏温度转换为开尔文时会出现错误,因为在上一个elif
中,您计算了f_to_k
,但打印了k_to_f
。您的错误来自代码的这一部分。此外,最好使用圆括号,以便有一个明确的条件。这是最后的代码。
'''
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", f_to_k, "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)
更新:这里有一个组织得更好的代码。
'''
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.
# 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.
# function to make conversion from and to appropriate thermal unit.
def ToTemp(raw_temp):
if destin_temp.lower() == 'c' and user_temp1[-1].lower() == '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.lower() == 'f' and user_temp1[-1].lower() == '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.lower() == 'c' and user_temp1[-1].lower() == '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.lower() == 'k' and user_temp1[-1].lower() == '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.lower() == 'f' and user_temp1[-1].lower() == '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.lower() == 'k' and user_temp1[-1].lower() == 'f':
f_to_k = round(float(raw_temp - 32 *(5/9) + 273.15), 2)
print (real_temp, "degrees Fahrenheit is", f_to_k, "degrees Kelvin.")
print ("****Thank you for stopping by!****n") # doesn't work
else:
print("You made a mistake somewhere. Try again later.")
sys.exit()
if __name__ == "__main__":
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('--> ')
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)
ToTemp(raw_temp)
Python并没有按照您认为的方式解释您的和/或语句。
你认为它好像(1或2(和(3或4(:
但蟒蛇并没有这么看。它正在读取1或(2和3(或4:
通过使用.upper((命令压缩代码来清除代码可以解决您的问题。
'''
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].upper() == 'C':
print ("You wish to convert from Celsius.")
elif user_temp1[-1].upper() == 'F':
print ("You wish to convert from Fahrenheit.")
elif user_temp1[-1].upper() == '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.upper() == 'C' and user_temp1[-1].upper() == '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.upper() == 'F' and user_temp1[-1].upper() == '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.upper() == 'C' and user_temp1[-1].upper() == '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.upper() == 'K' and user_temp1[-1].upper() == '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.upper() == 'F' and user_temp1[-1].upper() == '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.upper() == 'K' and user_temp1[-1].upper() == 'F':
f_to_k = round(float(raw_temp - 32 *(5/9) + 273.15), 2)
print (real_temp, "degrees Fahrenheit is", f_to_k, "degrees Kelvin.")
print ("****Thank you for stopping by!****n") # doesn't work
else:
print("You made a mistake somewhere. Try again later.")
sys.exit()