如何显示无效输入

问题描述 投票:0回答:1

我的任务是

写一个反复提示用户输入整数的程序 直到用户输入 "完成"。一旦输入'done',打印出最大和最小的数字。如果用户输入的不是有效的数字,就用tryexcept捕捉它,并发出适当的信息,忽略这个数字。输入7、2、bob、10和4,并匹配下面的输出。

我想忽略任何无效的整数,并打印''。无效输出'消息后计算最大和最小的数字.但它总是在用户输入后立即打印无效信息。我应该如何解决这个问题呢,先谢谢了。

代码是这样的

largest = None
smallest = None
while True:
    num = input("Enter a number: ")
    if num == "done":
        break
    try:
        n = int(num)
    except:
        print('Invalid input')
    if largest is None:
        largest=n
    elif n>largest:
        largest=n
    elif smallest is None:
        smallest=n
    elif n<smallest:
        smallest=n
print("Maximum", largest)
print('Minimum', smallest)
python-3.x user-input try-except invalidoperationexception
1个回答
1
投票

你可以存储 invalid output 作为布尔变量

largest = None
smallest = None
is_invalid=False
while True:
    num = input("Enter a number: ")
    if num == "done":
        break
    try:
        n = int(num)
    except:
        is_invalid=True
    if largest is None:
        largest=n
    elif n>largest:
        largest=n
    elif smallest is None:
        smallest=n
    elif n<smallest:
        smallest=n
print("Maximum", largest)
print('Minimum', smallest)
if is_invalid:
    print('Invalid Input')

0
投票

这可以是一种解决方案

largest = None
smallest = None
errors = False
while True:
    num = input('Please type a number : ')
    if num == 'done':
        break
    try:
        number = int(num)
        #your logical operations and assignments here
    except ValueError:
        errors = True
        continue
if errors:
    print('Invalid input')
else:
    print('Your Results')

希望能帮到你:)


0
投票

如果你熟悉list,你可以使用list来有效地解决你的问题,这里是一个使用list的修改版本。

num1=[]
while True:
    num = input("Enter a number: ")
    num1.append(num)
    if num == "done":
        break

for i in num1:
    try:
        i = int(i)
    except:
        print('Invalid input:',i)
        num1.remove(i)

print("Maximum", max(num1))
print('Minimum', min(num1))

输出。

Enter a number: 34
Enter a number: 57
Enter a number: 89
Enter a number: ds
Enter a number: 34
Enter a number: do
Enter a number: done

Invalid input: ds
Invalid input: do
Maximum 89
Minimum 34

希望对你有所帮助,如果有什么不对的地方请告诉我。


-1
投票

试着把 try 块中的 (int) 去掉,因为你想在 try 块中只输入整数,所以如果不满足整数输入的条件,就会执行 except 块。因为你想在try块中只输入整数,所以如果不满足整数输入的条件,就会执行except块。

你的代码在 try 块中应该是这样的: try: n = num。

© www.soinside.com 2019 - 2024. All rights reserved.