Py学习  »  Python

Python:对列表中的输入进行验证

boonie • 5 年前 • 1787 次点击  

在这个程序中,q的验证不起作用。除integer之外的任何其他值都会引发相同的消息“Enter integer values only”。即使输入为“q”,也会发生这种情况。 为什么会这样?解决这个问题的办法是什么?

my_list = []

print("Enter q once done")

while True:
    try:
        my_list.append(int(input()))
    except:
        if input == 'q':
            break
        else:
            print("Give integer values only")
            continue

print(my_list)
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/56243
 
1787 次点击  
文章 [ 2 ]  |  最新文章 5 年前
Gaurav Agarwal
Reply   •   1 楼
Gaurav Agarwal    5 年前
  1. Recommended read for Try-Except in Python

ValueError 对于这种情况,必须引发异常,下面是一个片段:

  • q 已输入
  • 其余的案子,继续
my_list = []

while True:
    try:
        x = input("Please enter a number or `q` for exit:")
        if(x == 'q'):
            break
        my_list.append(int(x))

    except ValueError:
        print("Oops! Give integer values only")

print(my_list)
Alex
Reply   •   2 楼
Alex    5 年前

代码的最小修改:

my_list = []

print("Enter q once done")

while True:
    try:
        s = input()
        if s == 'q':
            break
        my_list.append(int(s))
    except:
        print("Give integer values only")

print(my_list)

此代码有一个问题,即它无法识别输入结束/键盘中断。在stdin中还有一些输入时,最好从stdin中读取行:

import sys
my_list = []

print("Enter q once done")

for line in sys.stdin:
    if line == 'q\n':
        break
    try:
        my_list.append(int(line))
    except ValueError:
        print("Give integer values only")

print(my_list)