2016-03-18 10 views
1

if文を作成して、入力された数値がintかどうかをチェックしたいと思います。私は入力を分割しているときに何をすべきかわかりません(3dと3を変数に、dを変数にします)。あなたが手紙を入力するとエラーメッセージが出ないようにしたい。ここで数値がint型かstr型かをチェックする方法

は、問題のコードです:

while directionloop ==0: 
    while DAmountLoop==0: 
     direction=input('How do you want to move? Your answer should look like this 4u, this moves you up 4: ') 
     directiondirection=str(direction[1]) 
     directionamount=(direction[0]) 
     if type(directionamount) != int: 
      print('You need to enter a number for the amount you want to move') 
     elif type(directionamount) == int: 
      directionamount=int(direction[0]) 
      DAmountLoop=1 
+0

"input"を使用すると、入力したデータタイプに関係なく常に「文字列」表現が得られます – kmario23

答えて

2

input()strを返すためdirectionの種類は常に、strになります。したがって、direction[0]のタイプは常にstrです(directionが空でないと仮定します)。このため、type(direction[0]) != intは常にTrueになります。

ただし、文字列には内容をチェックするメソッドがあります。この場合は、あなたがstr.isnumeric()を使用することができます。

move = input('How do you want to move? ') 
direction = direction[1] 
amount = direction[0] 
if not amount.isnumeric(): 
     print('You need to enter a number for the amount') 

をまた入力が2つの文字より短い場合は、これはIndexErrorを調達することに注意してください。そのための具体的なチェックをしたり、一致するロジックをすべて組み込むためにregular expressionを使用することができます。

また、ループについては、this questionを参照して、ユーザー入力の検証の一般的なレシピを参照してください。

+0

ありがとう、私はそれを働かせました。私はあなたのコードでいくつかの他のものを並べ替えるつもりですし、あなたがリンクしたバリデーションポストを見ていきます。私が投稿したもののようなバリデーションを持つコードの約5つの部分があります。 –

関連する問題