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:')
所以我有这个基本程序要求用户输入他的名字和SS#,我想这样做,用户无法输入一个str或一个浮点数,他应该输入一个int。我尝试了这个,但它只是永远循环,因为If语句正在检查输入是否是数据类型str或int,我该怎么做才能检查变量是int还是str?
答案 0 :(得分:2)
您正在尝试将该值与type
进行比较。您应该存储名称并检查是否只有字母(.isalpha()
)并尝试对安全号码进行类型转换。如果失败,则不是有效输入。使用isnumeric()
作为SSN也是一种选择。类似的东西:
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:')
答案 1 :(得分:2)
name != str
没有按照您的想法行事。 input()的结果总是一个字符串。如果您只想获得某些类型的字符串,那么您必须自己验证它们。要检查某些内容是否仅包含字母或仅包含数字,您可以使用name.isalpha()
和name.isnumeric()
。
如果您需要比这些或其他内置字符串方法提供的内容更复杂的内容,那么您可能需要编写正则表达式或其他自定义验证代码。