2012-05-10 10 views
4

私はプログラミングが新しく、入力検証を行う際に問題があります。 私のプログラムは1から10までの数字、またはyという文字を入力する必要がありますが、エラーハンドラはできません。整数と文字列のPython入力の検証

かの条件に変更する提案jamylakとして
def checkingInput(): 
    while True: 
     try: 
      a = input() 
      if 10 >= a >= 1 or a == 'y': 
       return value 
      else: 
       print('Invalid input!') 
     except NameError: 
      print('Name error!Please try again!') 
     except SyntaxError: 
      print('Syntax Error!Please try again!') 
+0

を、私はあなたがしてください可能性に起因 'プリント()'へのpython 3を使用したがされていると推定確認して? – jamylak

+0

はい私はPython 3.1を使用します – ScorpDt

+2

'SyntaxError'は通常実行時に発生する例外ではありません。 –

答えて

4

if a == 'y' or 1 <= int(a) <= 10: 

プログラム:

def checkingInput(): 
    while True: 
     try: 
      a = input('enter') 
      if a == 'y' or 1 <= int(a) <= 10: 
       return a 
      else: 
       print('Invalid input!') 
     except ValueError: 
      print('Value error! Please try again!') 
+0

は 'a'が' 'y''の場合には動作しません。' if'文は条件を左から右にチェックし、 ''y''を' int'に変換することはできません。 'a == 'y'または1 <= int(a)<= 10'の場合 – jamylak

+0

@jamylakありがとう、私は本当に' If'が左から右のチェックを使用していることを知りませんでした。 –

+0

+1また、それが皮肉かどうかはわかりません...もしそれが残念ですが、私はそれを読んでいる他の人のために説明する価値があると思っただけです。 – jamylak

関連する問題