-1

我的目标是确保当用户在 userName 输入中输入数字时,它不应该接受它并让他们重试。

与 userNumber 相同。当用户输入字母时,应该用另一行提示他们再试一次。

问题是当他们输入正确的输入时,程序将继续循环并无限期地列出数字。

我是编码新手,我正试图找出我做错了什么。先感谢您!

 userName = input('Hello there, civilian! What is your name? ')

while True:
    if userName.isalpha() == True:
        print('It is nice to meet you, ' + userName + "! ")
    else:
        print('Choose a valid name!')


userNumber = input('Please pick any number between 3-100. ')

while True:
    if userNumber.isnumeric() == True:
        for i in range(0,int(userNumber) + 1,2):
            print(i)
    else:
        print('Choose a number please! ')
        userNumber = input('Please pick any number between 3-100. ')
4

2 回答 2

4

你永远不会停止循环。有两种方法可以做到这一点:要么改变循环条件(while true永远循环),要么break从内部退出。

在这种情况下,使用以下方法更容易break

while True:
    # The input() call should be inside the loop:
    userName = input('Hello there, civilian! What is your name? ')

    if userName.isalpha(): # you don't need `== True`
        print('It is nice to meet you, ' + userName + "! ")
        break # this stops the loop
    else:
        print('Choose a valid name!')

第二个循环有同样的问题,同样的解决方案和额外的更正。

于 2015-06-24T23:19:34.260 回答
0

while替代方法:在循环中使用条件。

userName = ''
userNumber = ''

while not userName.isalpha():
    if userName: print('Choose a valid name!')
    userName = input('Hello there, civilian! What is your name? ')

print('It is nice to meet you, ' + userName + "! ")

while not userNumber.isnumeric():
    if userNumber: print('Choose a number please! ')
    userNumber = input('Please pick any number between 3-100. ')

for i in range(0,int(userNumber) + 1,2):
    print(i)
于 2015-06-24T23:27:22.997 回答