【问题标题】:Function which asks for age询问年龄的功能
【发布时间】:2012-12-23 15:18:53
【问题描述】:

我需要这个来询问年龄,但如果年龄低于 11 岁或超过 100 岁,则拒绝它并拒绝除整数以外的任何内容。如果输入的数字超出给定范围或不是整数,我需要它循环返回并再次询问

def PlayerAgeFunction():
   VALID = True
   while VALID == True:
      PlayerAge = int(raw_input('ENTER YOUR AGE: '))
      if PlayerAge == type(int):
          VALID = False
     elif PlayerAge != type(int):
         print 'THAT IS NOT A NUMBER.'
   return PlayerAge

我之前在这里寻找答案,但我发现没有帮助。 请有人帮忙,谢谢。

【问题讨论】:

  • @Lattyware: 没有输入一个整数,对于一个..
  • 你真的应该阅读python.org/dev/peps/pep-0008,了解你的python代码应该是什么样子。
  • 另外,if PlayerAge == type(int): 并没有像你想象的那样做。
  • @ThiefMaster:但这不是 Python,而是 Fortran……哦等等……它 Python?!!
  • 大部分都没有按照他的想法做。

标签: python function loops logic


【解决方案1】:
def prompt_age(min=11, max=100):
    while True:
        try:
            age = int(raw_input('ENTER YOUR AGE: '))
        except ValueError:
            print 'Please enter a valid number'
            continue
        if not min <= age <= max:
            print 'You are too young/old'
            continue
        return age

【讨论】:

  • OP 要求它循环直到年龄在范围内,所以你真的想要while not (min &lt;= age &lt;= max):
  • 没错,只是忘记了continue。我觉得这样更干净。无需在循环外使用变量。
  • 不客气。但请尝试真正理解代码并阅读我在问题的 cmets 中链接的 PEP8 文档。否则你最终会写出可怕的 Python 代码,以后没人会想阅读或修复。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-22
  • 1970-01-01
  • 2022-01-19
  • 2011-02-01
  • 1970-01-01
相关资源
最近更新 更多