如何在循环中拒绝字母与符号,仅接收1-9的数字?
解决输入仅接受1-9整数的问题
你的核心问题是没处理非整数输入的报错——原代码只检查了数字范围,但如果用户输入字母、符号或者非整数内容,int(input())会直接抛出ValueError导致程序崩溃,这就是你之前各种尝试没搞定的原因。
下面是修正后的完整代码,同时解决了缩进错误和输入验证问题:
areasevolumes = [ "1. Área de um quadrado.", "2. Área de um triãngulo.", "3. Área de um retângulo.", "4. Área de um trapézio.", "5. Área de um círculo.", "6. Volume de um cubo.", "7. Volume de um paralelepípedo.", "8. Volume de um prisma triãngular.", "9. Volume de um cílindro." ] # 打印选项列表(修正原代码的缩进错误) for prompt in areasevolumes: print(prompt) n = None while True: user_input = input("Insira um número. ") try: # 尝试将输入转为整数 n = int(user_input) # 检查是否在1-9范围内 if 1 <= n <= 9: break # 符合条件,退出循环 else: print("Por favor, insira um número entre 1 e 9.") except ValueError: # 捕获非整数输入的错误 print("Entrada inválida! Por favor, insira um número inteiro.") # 后续可以用n做逻辑处理 print(f"Você selecionou a opção {n}")
关键说明:
- 缩进修正:原代码中
for循环有多余缩进,会导致IndentationError,已经修正。 - try-except捕获错误:处理用户输入非整数的情况,避免程序崩溃。
- 循环逻辑优化:用
while True做无限循环,直到用户输入符合要求才退出,比原代码的逻辑更严谨。 - 明确提示:给用户清晰的错误提示,知道该输入什么内容。
内容的提问来源于stack exchange,提问作者Pires Pires Legen_D
相关产品推荐
相关产品推荐

