Python 如何检测无效输入并将用户放入循环,直到键入可接受的答案?

Python 如何检测无效输入并将用户放入循环,直到键入可接受的答案?,python,Python,我正试图找出如何让用户输入字母和返回数字作为无效输入 这是我的代码,我仍然不清楚ValueError,因为如果我运行代码并键入字母,它将作为无效输入,但如果我输入数字,它将作为有效输入 while True: try: name = int(input("What is your name? ")) except ValueError: print("Invalid response. Letters only please.")

我正试图找出如何让用户输入字母和返回数字作为无效输入

这是我的代码,我仍然不清楚ValueError,因为如果我运行代码并键入字母,它将作为无效输入,但如果我输入数字,它将作为有效输入

while True:
    try:

        name = int(input("What is your name? "))
    except ValueError:
        print("Invalid response. Letters only please.")
        continue
    else:

        break

    correctName = input("Your name is...'" + (name) + "', is this correct? \n Please use 'Y' as yes and 'N' as no.\n")
    if correctName == "Y":
        print("Thank you..!")
int(input())
需要一个整数作为输入,因此当您键入名称时(除非您的名称完全由数字组成),您将得到一个
ValueError
,就像您现在遇到的那样。相反,您可以使用
str(input())
获取用户输入,然后使用
str.isdigit()
方法检查它是否是一个数字

name = str(input("What is your name? "))
if name.isdigit():
    print("Invalid response. Letters only please.")
    continue
else:
    break
int(input())
需要一个整数作为输入,因此当您键入名称时(除非您的名称完全由数字组成),您将得到一个
ValueError
,就像您现在遇到的那样。相反,您可以使用
str(input())
获取用户输入,然后使用
str.isdigit()
方法检查它是否是一个数字

name = str(input("What is your name? "))
if name.isdigit():
    print("Invalid response. Letters only please.")
    continue
else:
    break

您还可以尝试使用正则表达式检查字符串是否包含数字:

bool(re.search(r'\d', name))
\d
将匹配数字[0-9]

如果字符串包含数字,它将返回True

name = str(input("What is your name? "))
if name.isdigit():
    print("Invalid response. Letters only please.")
    continue
else:
    break
完整代码:

import re
while True:
        name = input("What is your name? ")
        if bool(re.search(r'\d', name)):
            print("Invalid response. Letters only please.")
        else:
            correctName = input("Your name is...'" + (name) + "', is this correct? \n Please use 'Y' as yes and 'N' as no.\n")
            if correctName == "Y":
                print("Thank you..!")
                break

您还可以尝试使用正则表达式检查字符串是否包含数字:

bool(re.search(r'\d', name))
\d
将匹配数字[0-9]

如果字符串包含数字,它将返回True

name = str(input("What is your name? "))
if name.isdigit():
    print("Invalid response. Letters only please.")
    continue
else:
    break
完整代码:

import re
while True:
        name = input("What is your name? ")
        if bool(re.search(r'\d', name)):
            print("Invalid response. Letters only please.")
        else:
            correctName = input("Your name is...'" + (name) + "', is this correct? \n Please use 'Y' as yes and 'N' as no.\n")
            if correctName == "Y":
                print("Thank you..!")
                break
用于蟒蛇3

while True:
  name = input()
  if name.isalpha():
    break
用于蟒蛇2

while True:
  name = str(input())
  if name.isalpha():
    break
用于蟒蛇3

while True:
  name = input()
  if name.isalpha():
    break
用于蟒蛇2

while True:
  name = str(input())
  if name.isalpha():
    break
您所说的“仅将字母和返回数字作为无效输入”是什么意思?您所说的“仅将字母和返回数字作为无效输入”是什么意思?