2013-10-26 83 views
0
while True: 

    letter,Text,numRails= input("").split('\"') 
    if numRails ==(""): 
     numRails=(2) 
     plainText= Text.strip() 
    numRails=int(numRails) 


    if letter.strip() == "E" or "e": 
     x =Encrypt(numRails,Text) 

    elif letter.strip()=="D" or "d": 
     x =scramble2Decrypt(numRails,Text) 

    else: print("invalid encryption command") 

E「WEAREDISCOVEREDGO」 2 我需要能夠輸入在同一行上的所有3個變量。但是我想要有一些條件陳述。但我不知道該怎麼做。就像我通常那樣做,如果它只是一個變量,或者有特定的方法,你必須這樣做?如何在蟒格式化輸入3.2

+0

我忘了提報價所必需的輸入,但不該」 t影響我的回答 – user2864064

回答

2

如果條件不對,請注意!它始終評估爲真:

letter.strip() == "E" or "e": 
#      ^^^^ always True 

應該是:

letter.strip() in ["E", "e"]: 

類似的錯誤出現在第二,如果代碼。

注意:一個非空字符串的布爾等值總是爲True,例如

>>> bool("") # bool of empty string 
False 
>>> bool(" ") # bool of non-empty string 
True 
>>> bool("e") 
True 

因此,爲了這個原因,你的條件例如letter.strip() == "E" or "e": == == letter.strip() == "E" or True:Ture

正如@roippi是在暗示在評論,你可以進一步簡化,如果條件表達式只是如下:

letter.strip().lower() == 'e': 
+0

可選letter.strip()。lower()=='e' – roippi

+0

@roippi是的我想補充我的回答謝謝! –