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 つの変数すべてを同じ行に入力できるようにする必要があります。ただし、いくつかの条件ステートメントが必要です。しかし、私はそれを行う方法がわかりません。変数が 1 つだけの場合や、これを行う必要がある特定の方法がある場合は、通常どおりに行いますか?

4

1 に答える 1

2

条件が間違っている場合は注意してください。常に True と評価されます。

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

次のようにする必要があります。

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

2番目のifコードにも同様のミスがあります。

注: 空でない文字列に相当するブール値は常に True です。

>>> 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 に答える