如何判断输入是否为字母?

3 投票
2 回答
987 浏览
提问于 2025-04-16 05:44

我已经尝试解决这个问题一段时间了,但一直没能搞定。下面是我现在的代码:

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一起用的时候,少了一点魅力。

撰写回答