2017-08-21 2 views
0

私のwhileループのifの文では、ユーザがverify_nameをnoに設定したときに会社名を尋ねるためにループバックします。ただし、ユーザがverify_nameをnoに設定すると、verify_name入力にリピートされます。このループを解消して会社名を再確認できるように、これを修正するにはどうすればよいですか?whileループでif文を修正するにはどうすればよいですか?

import time 
while True: 
    company_name = input("\nWhat is the name of your company? ") 
    while True: 
     verify_name = input("\nPlease verify that {} is the correct name of your company \nusing Yes or No: ".format(company_name)) 
     if verify_name.lower() == "no": 
      print("\nPlease re-enter your company name.") 
      continue 
     elif verify_name.lower() not in ('yes', 'y'): 
      print("\nThis is an invalid response, please try again.") 
      time.sleep(1) 
      continue 
     else: 
      print("\nWelcome {}.".format(company_name)) 
      break 
    else: 
     continue 

    break 

答えて

2

ネストされたループwhileの外再尋ねる会社名に意思決定を行います。内側のwhileループはのみとする必要があります。

while True: 
    company_name = input("\nWhat is the name of your company? ") 

    while True: 
     verify_name = input("\nPlease verify that {} is the correct name of your company \nusing Yes or No: ".format(company_name)) 
     verify_name = verify_name.lower() 
     if verify_name not in {'yes', 'no', 'y', 'n'}: 
      print("\nThis is an invalid response, please try again.") 
      time.sleep(1) 
      continue 
     break 

    if verify_name in {'y', 'yes'}: 
     print("\nWelcome {}.".format(company_name)) 
     break 

    else: 
     print("\nPlease re-enter your company name.") 
+0

{'y'、 'yes'}の 'verify_nameの後に' else'が必要と思わない: '。ユーザーが有効な会社名を入力すると、すぐにループを解除します。だから 'print(" \ nあなたの会社名を再入力してください。) 'が' else'なしでループの最後に置かれた場合、 'yes/y'を入力しなかったときだけ実行されます。 –

+0

@ChristianDean:確かに、あなたは 'else:'インデントを省略することができます。私はただ明白である。結果のバイトコードはいずれの場合も同じです。 –

関連する問題