【问题标题】:How can I control my user's Input如何控制用户的输入
【发布时间】:2016-11-17 03:13:28
【问题描述】:
 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#,我想这样做,用户不能在他应该输入 int 的地方输入 str 或 float。我试过了,但它会永远循环,因为 If 语句正在检查输入是数据类型 str 还是 int,我该如何检查变量是 int 还是 str?

【问题讨论】:

标签: python user-input


【解决方案1】:

您正在尝试将该值与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:')

【讨论】:

    【解决方案2】:

    name != str 并没有按照你的想法去做。 input() 的结果始终是一个字符串。如果您只想获取某些类型的字符串,那么您必须自己验证它们。要检查某些内容是否仅包含字母或仅包含数字,您可以使用 name.isalpha()name.isnumeric()

    如果您需要比这些或其他内置字符串方法提供的更复杂的东西,那么您可能需要编写正则表达式或其他自定义验证代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-08
      • 1970-01-01
      • 1970-01-01
      • 2021-09-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多