5

そのため、「string」、「python」、「validate」、「user input」などの単語のほぼすべての順列を検索しましたが、まだうまくいく解決策に出くわしていません。

私の目標は、文字列「はい」と「いいえ」を使用して別のトランザクションを開始するかどうかをユーザーに確認することです。文字列の比較は Python ではかなり簡単なプロセスになると思いましたが、何かがうまくいきません右。私はPython 3.Xを使用しているので、私が理解している限り、入力は生の入力を使用せずに文字列を取り込む必要があります。

プログラムは、「はい」または「いいえ」を入力した場合でも、無効な入力を常にキックバックしますが、本当に奇妙なことは、長さが 4 文字を超える文字列または int 値を入力するたびに、有効な正としてチェックすることです。プログラムを入力して再起動します。有効な負の入力を取得する方法が見つかりません。

endProgram = 0;
while endProgram != 1:

    #Prompt for a new transaction
    userInput = input("Would you like to start a new transaction?: ");
    userInput = userInput.lower();

    #Validate input
    while userInput in ['yes', 'no']:
        print ("Invalid input. Please try again.")
        userInput = input("Would you like to start a new transaction?: ")
        userInput = userInput.lower()

    if userInput == 'yes':
        endProgram = 0
    if userInput == 'no':
        endProgram = 1

私も試してみました

while userInput != 'yes' or userInput != 'no':

私の問題を解決するだけでなく、Python がどのように文字列を処理するかについて誰かが追加情報を持っていれば、それは素晴らしいことです。

他の誰かがすでにこのような質問をしている場合は事前に申し訳ありませんが、私は検索するために最善を尽くしました.

皆さんありがとう!

〜デイブ

4

2 に答える 2

12

ユーザー入力 yesまたはであるかどうかをテストしていますno。追加not:

while userInput not in ['yes', 'no']:

少しだけ速く、意図に近づけるために、セットを使用します。

while userInput not in {'yes', 'no'}:

使用したのは ですuserInput in ['yes', 'no']。これはTrueuserInputが と等しいか のいずれか'yes'です'no'

次に、ブール値を使用して設定しendProgramます。

endProgram = userInput == 'no'

がまたはであることuserInputは既に確認済みであるため、フラグ変数を設定するためにまたはを再度テストする必要はありません。yesnoyesno

于 2013-05-19T13:20:57.760 に答える
1
def transaction():

    print("Do the transaction here")



def getuserinput():

    userInput = "";
    print("Start")
    while "no" not in userInput:
        #Prompt for a new transaction
        userInput = input("Would you like to start a new transaction?")
        userInput = userInput.lower()
        if "no" not in userInput and "yes" not in userInput:
            print("yes or no please")
        if "yes" in userInput:
            transaction()
    print("Good bye")

#Main program
getuserinput()
于 2016-09-11T21:48:14.757 に答える