2016-07-09 6 views
0

私は個人的な人生によって長い休憩の後に自分自身をPythonに戻すための簡単なプログラムを作成しようとしています。Python - ユーザーからの入力が "Y"または "N"として認識されない

  • は、どのようなユーザ入力は
  • チェックすると有効であれば5(非常に単純な、私は知っている)
  • チェックに等しい番号を入力するようにユーザーに確認する:プログラムの目的は、以下のように行うことですユーザーの入力は、彼らがユーザ入力yまたはY場合は、プログラムを実行し、入力がnまたはN
  • の場合はプログラムを終了
  • 再度プログラムを実行したい場合は、ユーザを掲載し5
  • に等しく、

輸入OS

askme = raw_input("Enter a number that is equal to 5: ") 

def check_att(attrib): 
    if int(attrib) == 5: 
     os.system("cls") 
     print "Yes, %s is equal to 5! Good job!" % attrib 
     again = raw_input("Would you like to try again? (Y/N): ") 
     print again 
     if again == again.isalpha(): 
      if again == "y" or "Y": 
       os.system("cls") 
       print attrib 
       print check_att(attrib) 
      elif again == "n" or "N": 
       os.system("exit") 
     else: 
      os.system("cls") 
      not_alpha1 = raw_input("Sorry, that's not a valid answer. Would you like to try again? (Y/N): ") 
      print not_alpha1 
      if not_alpha1 == "y" or "Y": 
       os.system("cls") 
       print attrib 
       print check_att(attrib) 
      elif not_alpha1 == "n" or "N": 
       os.system("cls") 
    else: 
     sorry = raw_input("Sorry, %s is not equal to 5. Try again? (Y/N): " % attrib) 
     print sorry 
     if sorry == sorry.isalpha(): 
      if sorry == "y" or "Y": 
       os.system("cls") 
       print attrib 
       print check_att(attrib) 
      elif sorry == "n" or "N": 
       os.system("exit") 
     else: 
      os.system("cls") 
      not_alpha = raw_input("Sorry, that's not a valid answer. Would you like to try again? (Y/N): ") 
      print not_alpha 
      if not_alpha == "y" or "Y": 
       os.system("cls") 
       print attrib 
       print check_att(attrib) 
      elif not_alpha == "n" or "N": 
       os.system("cls") 

print askme 
print check_att(askme) 

私がいる問題は、彼らが再びプログラムを実行したい場合は、プログラムがユーザーに尋ねる部分です。

Enter a number that is equal to 5: 5 
5 
Yes, 5 is equal to 5! Good job! 
Would you like to try again? (Y/N): Y 
Y 
Sorry, that's not a valid answer. Would you like to try again? (Y/N): 

私は有効な入力としてYを認識するためのプログラムを取得する方法がわからない:これは私がコードを実行するときに何が起こるかです。どんな助けでも大歓迎です。

+1

["y"、 "Y"]の中でnot_alpha1を行うことはできませんか?: – megadarkfriend

+0

@ idjawその投稿はif文自体に関連する混乱を取り除くのに少し役立ちましたが、持っている。 – Bearclaw

答えて

2

代わりのif again == "y" or "Y":は、次のものが必要です。

if again == "y" or again == "Y": 

か:

while True: 
    entry = raw_input("Enter a number that is equal to 5: ") 
    if entry == 5: 
     break 
    else: 
     print("That's not right, please try again.") 

のみ:

if again.lower() == 'y': 

しかし、あなたはこのようなraw_inputセットアップと方が良いかもしれませんループはwhileループのうち、breakにすることです。あなたが入力したものについて心配する必要はありません。もし5でないなら、彼らはどこにも行きません。

+0

答えとして投稿することは本当に必要ですか?私はかなりこの質問が重複していることを確信しています –

+1

答えを書くのに20秒もかかりましたが、OPにはコードにエラーがあり、うまくいけば助けになります。そして、@ Jim-Lewisは私が逃した2番目のエラーを指摘しました。 – Jeff

0
if again == again.isalpha(): 

私はこれがあなたの望むものだとは思わない。 again.isalpha()はTrueまたはFalseを返します。したがって、それをagainの値と比較するのは意味がありません。 おそらく意図:

if again.isalpha(): 

また、

if again == "y" or "Y": 

これはおそらく、あなたはそれがないと思う何をしません。 「y」と「Y」の論理「または」 を入力し、その結果をagainと比較します。それはあなたが意図したもので、おそらく

if again == "y" or again == "Y": 

の同義語 ではありません。

+0

これは、ユーザーにプログラムを再度実行するかどうかを尋ねる質問の入力を認識するのに役立ちました。私が今行っている問題は、 'askme'をもう一度印刷してユーザの入力を変更し、' check_att'関数をもう一度実行することです。 – Bearclaw

関連する問題