2013-05-09 40 views
0

我需要幫助包住:用while語句循環,而讀一字符串整數

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

while語句的內部。這幾乎只是讀取「name」變量的輸入,並查看是否有一個整數。我怎麼能在一個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!") 

回答

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的東西,是無效的,那麼用在any()表達更容易while測試。

0

事情是這樣的:

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 
0

你只是說你想要一個continue後您的print("Not a valid name!")

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將回到您的循環的頂部。

+0

是的,我希望它保持循環,直到用戶輸入一個有效的名稱(一個沒有整數) – Xiam 2013-05-09 18:20:08

+0

所以......這不是你的問題的答案嗎? – 2013-05-09 18:22:36