我想创建一个if语句来检查输入的数字是否为int。当我分割输入时,我不知道该怎么做(你输入3d和一个带有3的变量和一个带有d的变量)。我想要它,这样如果你输入一个字母,那么它就不会产生错误信息。
以下是问题中的代码:
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 :(得分:2)
direction
的类型始终为str
,因为input()
会返回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以获取验证用户输入的一般方法。