如何判断输入是否为字母?
我已经尝试解决这个问题一段时间了,但一直没能搞定。下面是我现在的代码:
while True:
guess = int(raw_input('What is your number?'))
if 100 < guess or guess < 1:
print '\ninvalid'
else:
.....continue on
目前,我已经设置了当用户输入一个大于100或小于1的数字时,程序会输出“无效”。但是,如果我想让程序在用户输入一个不是数字的字符串(比如字母、标点符号等)时,也返回“无效”这个信息,该怎么做呢?
我考虑过使用 if not ...isdigit(),但这样不行,因为我需要把输入的内容转成整数,才能判断范围。还有一个选项是使用 try/except,但我还是没弄明白怎么正确地实现它。
2 个回答
5
在编程中,有时候我们需要处理一些数据,这些数据可能来自不同的地方,比如用户输入、文件或者网络请求。为了让程序能够理解这些数据,我们通常会把它们转换成一种统一的格式。
比如说,如果你有一个数字和一个字符串,你可能需要把它们都转换成字符串,这样才能进行比较或者拼接。这个过程叫做“类型转换”。
在不同的编程语言中,类型转换的方法可能会有所不同。有些语言会自动帮你转换,有些则需要你手动去做。
总之,理解数据的类型和如何转换它们是编程中的一个重要基础,能够帮助你更好地处理和使用数据。
while True:
try:
guess = int(raw_input("..."))
except EOFError:
print "whoa nelly! EOF? we should probably exit"
break # or sys.exit, or raise a different exception,
# or don't catch this at all, and let it percolate up,
# depending on what you want
except ValueError:
print "illegal input: expected an integer"
else:
if not (1 <= guess <= 100):
print "out of range"
else:
print "processing guess... (but if it wasn't 42, then it's wrong)"
break # out of while loop after processing
6
你可以使用异常处理:
try:
guess = int(raw_input('What is your number?'))
if not (1 <= guess <= 100):
raise ValueError
# .....continue on
except ValueError:
print '\ninvalid'
这样的话,如果用户输入了一个不是数字的字符串,或者输入的数字大于100或小于1,就会打印出\ninvalid
。
编辑:好吧,我接受x < y < z
这种写法。不过我还是觉得在和not
一起用的时候,少了一点魅力。