【问题标题】:Looping with a while statement while reading a string for an integer在读取整数的字符串时使用 while 语句循环
【发布时间】:2013-05-09 18:08:58
【问题描述】:

我需要帮助包装:

if any(c.isdigit() for c in name):
print("Not a valid name!")

while 语句的内部。这几乎只是读取“名称”变量的输入并查看其中是否有整数。我怎么能在 while 语句中使用它?我只是希望它是如果用户在输入中输入一个变量,它会打印出上面的字符串并循环回来并再次询问用户他们的名字,直到他们成功输入一个没有整数的字符串,然后我想要它打破。有什么帮助吗?

print("Hello there!")
yn = None
while yn != "y":
    print("What is your name?")
    name = raw_input()
    if any(c.isdigit() for c in name):
        print("Not a valid name!")
    print("Oh, so your name is {0}? Cool!".format(name))
    print("Now how old are you?")
    age = raw_input()
    print("So your name is {0} and you're {1} years old?".format(name, age))
    print("y/n?")
    yn = raw_input()
    if yn == "y":
        break
    if yn == "n":
        print("Then here, try again!")
print("Cool!")

【问题讨论】:

    标签: python variables while-loop integer


    【解决方案1】:

    输入有效名称后,使用while Truebreak 结束循环:

    while True:
        name = raw_input("What is your name? ")
        if not any(c.isdigit() for c in name):
            break
        print("Not a valid name!")
    

    这比首先将 name 初始化为无效的内容然后在 while 测试中使用 any() 表达式要容易得多。

    【讨论】:

      【解决方案2】:

      类似这样的:

      name = input("What is your name? : ")
      while any(c.isdigit() for c in name): 
          print ("{0} is invalid, Try again".format(name))
          name = input("What is your name? : ")
      

      演示:

      What is your name? : foo1
      foo1 is invalid, Try again
      What is your name? : 10bar
      10bar is invalid, Try again
      What is your name? : qwerty
      

      【讨论】:

        【解决方案3】:

        你只是说你想在你的print("Not a valid name!") 后面加上一个continue 吗?

        print("Hello there!")
        yn = None
        while yn != "y":
            print("What is your name?")
            name = raw_input()
            if any(c.isdigit() for c in name):
                print("Not a valid name!")
                continue
            print("Oh, so your name is {0}? Cool!".format(name))
            ...
        

        continue 将返回到循环的顶部。

        【讨论】:

        • 是的,我希望它一直循环,直到用户输入一个有效的名称(一个没有整数)
        • 那么……这不是你问题的答案吗?
        猜你喜欢
        • 2021-06-13
        • 2015-01-12
        • 1970-01-01
        • 2014-09-13
        • 2022-11-28
        • 2021-11-04
        • 1970-01-01
        • 2018-04-17
        • 2021-05-20
        相关资源
        最近更新 更多