2016-11-16 6 views
1
name = input('Enter your name please: ') 
while name != str: 
    name = input('Please enter only letters for your name: ') 
ss = input('Enter your Social Security Number: ') 
while ss != int: 
    ss = input('Please enter only numbers for your social security number:') 

を制御することができますintを入力する。私はこれを試してみましたが、If文は入力がデータ型strまたはintかどうかを調べるために永遠にループします。変数がintかstrかどうかを調べるにはどうしたらいいですか?は、どのように私はだから私は彼の名前とSS#をユーザーに要求し、この基本的なプログラムを持っていると私は彼が想定しているユーザがいない入力strのか、フロートをやってみたかった私のユーザーの入力

+0

[有効な応答を返すまでユーザーに入力を求める](http://stackoverflow.com/questions/23294658/asking-the-user-for-input-until-they-give-a-有効応答) – wwii

答えて

2

値をtypeと比較しようとしています。代わりに、名前を格納し、文字だけ(.isalpha())があるかどうかをチェックして、セキュリティ番号にタイプキャストを試みてください。失敗した場合、有効な入力ではありません。 SSNにisnumeric()を使用することもできます。ような何か:

name = input('Enter your name please: ') 
while not name.isalpha(): 
    name = input('Please enter only letters for your name: ') 

ss = input('Enter your Social Security Number: ') 
try: 
    int(ss) 
    valid_ss = True 
except ValueError: 
    valid_ss = False 

while not valid_ss: 
    ss = input('Please enter only numbers for your social security number:') 
    try: 
     int(ss) 
     valid_ss = True 
    except ValueError: 
     valid_ss = False 

または

name = input('Enter your name please: ') 
while not name.isalpha(): 
    name = input('Please enter only letters for your name: ') 

ss = input('Enter your Social Security Number: ') 
while not ss.isnumeric(): 
    ss = input('Please enter only numbers for your social security number:') 
2

name != strは、あなたはそれがないと思う何をしません。 input()の結果は常に文字列です。特定の種類の文字列だけを取得したい場合は、それらを自分で検証する必要があります。何かに文字だけが含まれているか数字だけが含まれているかどうかを確認するには、name.isalpha()name.isnumeric()を使用できます。

他の組込み文字列メソッドよりも複雑なものが必要な場合は、正規表現やその他のカスタム検証コードを記述する必要があります。

関連する問題