Python 如何确定输入是按字母顺序的?

Python 如何确定输入是按字母顺序的?,python,validation,user-input,Python,Validation,User Input,我试图解决这个问题已经有一段时间了,但似乎无法使它正常工作。。这是我目前的工作 while True: guess = int(raw_input('What is your number?')) if 100 < guess or guess < 1: print '\ninvalid' else: .....continue on 为True时: guess=int(原始输入('您的数字是多少?')) 如果100

我试图解决这个问题已经有一段时间了,但似乎无法使它正常工作。。这是我目前的工作

while True:

    guess = int(raw_input('What is your number?'))

    if 100 < guess or guess < 1:
        print '\ninvalid'

    else:
        .....continue on
为True时:
guess=int(原始输入('您的数字是多少?'))
如果100<猜测或猜测<1:
打印“\n无效”
其他:
……继续
现在我已经这样做了,当用户输入一个大于100或小于1的数字时,它会打印出“无效”。但是,如果我想这样做,当用户输入一个不是数字的字符串(字母、标点符号等)时,它也会返回这个“无效”消息,该怎么办


我曾考虑过使用if not…isdigit(),但它不起作用,因为为了使上述范围起作用,我将猜测值设为整数。Try/except是我考虑过的另一个选项,但仍然没有弄清楚如何在中正确实现它。

您可以使用异常处理:

try:
    guess = int(raw_input('What is your number?'))
    if not (1 <= guess <= 100):
        raise ValueError
    # .....continue on
except ValueError:
    print '\ninvalid'
试试看:
guess=int(原始输入('您的数字是多少?'))
如果不是(1<代码>为真:
尝试:
guess=int(原始输入(“…”)
除EOFError外:
打印“哇,耐莉!EOF?我们可能应该退出”
中断#或sys.exit,或引发其他异常,
#或者根本就别抓住这个让它渗透,
#取决于你想要什么
除值错误外:
打印“非法输入:应为整数”
其他:

如果没有(1哇,谢谢你Frederic,你的代码看起来简单多了。虽然我从来没有学过python中的“raise”是什么,但在什么情况下你可以使用它?它有什么好处?谢谢你!谢谢你所有的人contributed@neogeo,
raise
允许您自己抛出异常(请参阅)
如果传递的值不是数字,则引发
ValueError
。如果我们通过同时引发
ValueError
来扩展该行为,如果该值是数字但不在我们的域内,则我们可以在同一位置同时处理这两种错误情况。+1用于在
try
之间放置最少的行数,但
除外,另外,对于使用
1,我喜欢弗雷德没有重复,但这里面有更多的Pythonic位。(
x
,还有额外的
其他:
子句。)@Nick:通常你处理非法输入(即不是数字)的方式与处理无效输入(即超出范围)的方式不同,即使只是告诉用户更多的信息。一旦发生这种情况,就不会有重复。(注意:在“非法”/“无效”中的区别)由于术语并不重要,我甚至没有遵循上面的说明,我也不知道有谁会有这种区别,除非另有说明。但是,你可以在技术/标准规范中找到相同的想法。)如果1
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