具有多个输入的Python转换器

时间:2018-07-20 11:28:58

标签: python-3.x

转换器,包括多个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的问题相同。 谢谢

1 个答案:

答案 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选项完全相同。但是在这种情况下,您还忘记了()函数调用之后的lowerA_ans1.lower只会返回较低的函数,但不会调用它。

编辑:

更Python化的方式

if A_ans1.lower() == ('miles') or A_ans1.lower() == ('m'):

要做的事情:

if A_ans1.lower() in ('miles', 'm'):