bugfix> python > 投稿

次のプログラムの場合、質問への回答によってユーザーが投票できなくなった場合、プログラムにすぐにそのように言わせ、残りの質問をしないようにするにはどうすればよいですか?

def main():
    print("This program determines if a user is eligible to vote in the US\n")
    q1 = str(input("Are you a US citizen? y/n: "))
    q2 = int(input("What is your age?: "))
    q3 = str(input("Do you meet your state's residency requirement? y/n: "))
    if q1 == "n":
        print("\nNot eligible to vote.")
    elif q2 < 18:
        print("\nNot eligible to vote.")
    elif q3 == "n":
        print("\nNot eligible to vote.")
    else:
        q1 == "y"
        q2 >= 18
        q3 == "y"
        print("\nYou are eligible to vote!")
main()

回答 3 件
  • ネストされた「ifelse」ステートメントを使用して、質問の1つが間違っている場合に終了します。そのようです:

    def main():
    print("This program determines if a user is eligible to vote in the US\n")
    q1 = str(input("Are you a US citizen? y/n: "))
    if q1 == 'y':
        q2 = int(input('What is your age?:  '))
        if q2 > 18:
            q3 = str(input('Do you meet your states residency requirement? y/n:  '))
            if q3 == 'y':
                print("\nYou are eligible to vote!")
            else:
                print("\nNot eligible to vote.")
                exit()
        else:
            print("\nNot eligible to vote.")
            exit()
    else:
        print("\nNot eligible to vote.")
        exit()
    main()
    
    

  • 後で質問の結果が再び必要ない場合は、 inputif それらを調整し、連鎖させます and 。このように、2番目 input 最初のものがすでに状態の結果を決定したかどうかを再度尋ねられることはなく、3番目のものについても同じです。

    if (input("Are you a US citizen? y/n: ") == "y" and
            int(input("What is your age?: ")) >= 18 and
            input("Do you meet your state's residency requirement? y/n: ") == "y"):
        print("\nYou are eligible to vote!")
    else:
        print("\nNot eligible to vote.")
    
    

    それを組み合わせることもできます (...) または or ある時点でネストされた条件を使用しますが、より複雑な条件を取得します if/else 構造が読みやすくなる可能性があります。

  • 毎回ユーザーの入力を確認する必要があります input ステートメント。毎回if-elseステートメントを使用できます。答えが間違っている場合は、何かを印刷してから使用してください return およびの残りのコード main() 関数は実行されません。残りの質問はされません。

あなたの答え