如果用户输入字符串,则python给出选项

时间:2010-12-10 22:44:16

标签: python

我正在使用Python 2.6.6

我有这段代码:

height = 20
width = 10
x = input('Please insert a number between ' + str(width + 1) + ' and ' + str(height) + ': ')
while x < (width + 1) or x > 20:
     print 'That option is not valid'
     x = input('Please insert a number between ' + str(width + 1) + ' and ' + str(height) + ': ')

如果用户只输入数字,一切正常,但如果用户输入错误并输入,例如q,则会显示:

  

NameError:名称'q'未定义

我想,如果用户插入一个字符串,while循环就会启动并给用户:该选项无效.... 如何在不使用raw_input的情况下解决这个问题,因为宽度和高度我想将其视为数字?

此致

Favolas

修改 根据丹尼尔的建议,我已将我的代码修改为:

height = 20
width = 10
x = raw_input('Please insert a number between ' + str(width + 1) + ' and ' + str(height) + ': ')
x = int(x)
while x < (width + 1) or x > 20:
    print 'That option is not valid'
    x = raw_input('Please insert a number between ' + str(width + 1) + ' and ' + str(height) + ': ')
    x = int(x)

如果用户只输入int代码按计划工作,但不能防止用户错误。如果用户犯了错误并键入'q',则会出现此错误:

ValueError: invalid literal for int() with base 10: 'q'

我理解为什么但是如何解决这个问题?

此致

Favolas

1 个答案:

答案 0 :(得分:5)

必须在Python 2.x中使用raw_input而不是inputinput假定用户正在输入要评估的有效Python。您最好的选择是获取字符串输入,然后根据需要进行转换。在这种情况下,您需要尝试使用int进行转换。

提醒一下,from the documentation

  

input([prompt])

     

相当于eval(raw_input(prompt))

     

警告:此功能不安全,不会出现用户错误!它期望一个有效的Python表达式作为输入;如果输入语法无效,则会引发SyntaxError。如果评估期间出现错误,可能会引发其他异常。 (另一方面,有时这正是您编写专业用途的快速脚本时所需要的。)