转换器,包括多个input()。 :
def distance_converter():
print ('Please choose the value you wish to convert by entering the
relevant letter:')
intro=input('A) miles to km or km to miles B)cm to inch or inch to cm:')
if intro.upper() == ('A'):
A_ans1=input('would you like to convert miles or km? ')
if A_ans1.lower() == ('miles') or ('m'):
M_ans1 = input('please enter amount of miles: ')
y = float(M_ans1)*1.6 or int(M_ans1)*1.6
return 'the amount of km are: ' + str(round(y,2))
if A_ans1.lower() == ('km') or ('k'):
Km_ans1 = input('please enter amount of km: ')
x = float(Km_ans1)*0.62137 or int(Km_ans1)*0.62137
return 'the amount of miles are: ' + str(round(x,2))
if intro.upper() == ('B'):
B_ans1=input('would you like to convert cm or inch? ')
if B_ans1.lower == ('cm') or ('c'):
Cm_ans1 = input('please enter amount of cm: ')
t = float(Cm_ans1)/2.54 or int(Cm_ans1)/2.54
return 'the amount of inches are: ' + str(round(t,2))
if B_ans1.lower == ('inch') or ('i'):
Inch_ans1 = input('please enter amount of inch: ')
z = float(Inch_ans1)*2.54 or int(Inch_ans1)*2.54
return 'the amount of inches are: ' + str(round(z,2))
因此,该代码在A和B的第一个输入中可以正常工作。可以说我选择了选项A,以后再输入什么都无所谓,它总是带我去英里转换器。厘米和英寸的问题相同。 就像不考虑要输入公里数的第二个“ if”一样,总是导致“请输入里程数”的字符串。 B选项和cm / inch的问题相同。 谢谢
答案 0 :(得分:0)
if A_ans1.lower() == ('miles') or ('m'):
需要更改为
if A_ans1.lower() == ('miles') or A_ans1.lower() == ('m'):
第一个代码将检查A_ans1.lower() == ('miles')
是否为True,然后检查
('m')
是对的。 ('m')
只是一个非空字符串,因此始终为True。
与B
选项完全相同。但是在这种情况下,您还忘记了()
函数调用之后的lower
。 A_ans1.lower
只会返回较低的函数,但不会调用它。
编辑:
更Python化的方式
if A_ans1.lower() == ('miles') or A_ans1.lower() == ('m'):
要做的事情:
if A_ans1.lower() in ('miles', 'm'):