为什么不打印列表中的负值?

2024-09-29 02:18:16 发布

您现在位置:Python中文网/ 问答频道 /正文

为什么代码不打印列表中的负值?“最大”值工作正常,但负片不打印

user_input = ''
user_values = []
x = 0
maxim = 0
sum = 0
avg = 0
neg_values = 0
mini = 0
while True:
    user_input = (input('input:'))
    if user_input in ['q', 'Q']:
        break

    elif user_input not in  ['q', 'Q'] and user_input.isnumeric():
        user_values.append(int(user_input))

for value in user_values:
    maxim = max(value,maxim)
print( "the maximum value in the list is : " , maxim)

Minumum_value = min(user_values)
print( "the minumum value in the list is : " , Minumum_value)

for value in user_values:
    if value < 0:
        print("the negative values are : "  ,  value)

代码应该作为用户输入值使用,并在用户键入q时退出。然后它应该找到负值或最大值等


Tags: the代码inforinputifisvalue
3条回答

这并不是在做你期望的事情,因为isnumeric()没有做你认为它做的事情。在Python提示符下尝试以下操作:

>>> "-1".isnumeric()
False

要执行所需操作,请将输入值转换为int,并将转换包装为try...except ValueError

try:
    user_values.append(int(user_input))
except ValueError:
    print("Invalid input", user_input, "ignored")

作为旁注,这是:

for value in user_values:
    maxim = max(value,maxim)

这是毫无意义的。取而代之的是maxim = max(user_values)。您只需计算一次最大值。最低限度也一样

这是由于您的isnumeric检查:这并没有达到您期望的效果

>>> '-3'.isnumeric()
False

方法检查所有字符都是数字,减号不在其中

您可以使用try/except:

try:
    user_values.append(int(user_input))
except ValueError:
    print('invalid input')

为什么不直接用try-except呢

while True:
    user_input = (input('input:'))
    if user_input in ['q', 'Q']:
        break

    elif user_input not in  ['q', 'Q'] and user_input.isnumeric():
        user_values.append(int(user_input))

除了试试这个代码

while True:
    user_input = (input('input:'))
    if user_input in ['q', 'Q']:
        break
    else:
        try:
            user_values.append(int(user_input))
        except ValueError:
            print("Error log...")

相关问题 更多 >