我认为解释这个的最好方法是发布我的代码,以及shell的结果。我是Python的新手(使用3.3)和一般的编码,所以我确信我只是错过了一些非常简单的东西。
这是我的代码:
def menu():
global temp
global temp_num
temp = input('Enter a temperature to convert:\n (ex. 32F) -> ')
temp_select = temp[-1]
temp_num = int(temp[:-1])
if temp_select == 'F' or 'f':
return Fahr()
elif temp_select == 'C' or 'c':
return Cels()
elif temp_select == 'K' or 'k':
return Kelv()
else:
print('Please make a valid selection')
menu()
def Fahr():
''' Converts selected temperature from Fahrenheit to Celsius, Kelvin, or both.'''
selection = input('Convert to (C)elsius, (K)elvin, or (B)oth? -> ')
to_cels = round((5/9) * (temp_num - 32), 1)
to_kelv = round(5/9 * (temp_num - 32) + 273, 1)
if selection == 'C' or 'c':
print(temp_num, 'degrees Fahrenheit =', to_cels, 'degrees Celsius.\n')
exitapp()
elif selection == 'K' or 'k':
print(temp_num, 'degrees Fahrenheit =', to_kelv, 'degrees Kelvin.\n')
exitapp()
elif selection == 'B' or 'b':
print(temp_num, 'degrees Fahrenheit =', to_cels, 'degrees Celsius and', to_kelv, 'degrees Kelvin.\n')
exitapp()
else:
print('Please make a valid selection')
Fahr()
我还有其他两个Celsius和Kelvin函数。你会在shell中看到我的结果的问题。
这是我得到的:
Enter a temperature to convert:
(ex. 32F) -> 32C
Convert to (C)elsius, (K)elvin, or (B)oth? -> b
32 degrees Fahrenheit = 0.0 degrees Celsius.
Exit the program?
Enter "y" or "n":
没有失败,它总是从华氏温度转换为摄氏温度。每一次。
答案 0 :(得分:2)
你不能像你所做的那样缩短条件。这样:
if temp_select == 'F' or 'f':
return Fahr()
与此相同:
if temp_select == 'F':
return Fahr()
if 'f':
return Fahr()
or
和and
的每一方都是独立评估的,而'f'
本身始终是真的。您需要为每种情况使用完整的短语。
if temp_select == 'F' or temp_select == 'f':
return Fahr()