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 个变量。但是我想要一些条件语句。但我不知道该怎么做。如果它只是一个变量或者您必须以特定的方式执行此操作,我是否就像您通常会做的那样?

4

1 回答 1

2

注意条件是否错误!它总是评估为 True:

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

应该:

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

类似的错误出现在第二个 if 代码中。

注意:非空字符串的布尔等效项始终为真,例如

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

因此,出于这个原因,您的 if 条件例如letter.strip() == "E" or "e":== letter.strip() == "E" or True:==Ture

正如@roippi在评论中建议的那样,您可以进一步简化 if 条件表达式,如下所示:

letter.strip().lower() == 'e':
于 2013-10-26T03:14:17.653 回答