Python用整数填充列表,可以';t使用';退出';

Python用整数填充列表,可以';t使用';退出';,python,list,mean,Python,List,Mean,我试图创建一个空列表,用户将用随机整数填充该列表,直到用户写入“exit”,然后程序应该计算整数的平均值(我应该在没有Python模块或函数(如len())的帮助下执行此操作)。我的代码到目前为止: # Start with an empty list. numbers = [] # Set new_number to something other than 'exit'. new_number = '' # Start a loop that will run until the use

我试图创建一个空列表,用户将用随机整数填充该列表,直到用户写入“exit”,然后程序应该计算整数的平均值(我应该在没有Python模块或函数(如
len()
)的帮助下执行此操作)。我的代码到目前为止:

# Start with an empty list.
numbers = []

# Set new_number to something other than 'exit'.
new_number = ''

# Start a loop that will run until the user enters 'exit'.
while new_number != 'exit':
    new_number = int(input("Write a new number to the list, or enter 'exit': "))

# Add the new number to our list.
    if new_number != 'exit':
       numbers.append(new_number)

# Start calculating the mean of the numbers.
def average(numbers):
    total = 0
    count = 0
    for num in numbers:
        total += num
        count += 1

    return total / count

Numbmean = average(numbers)

print( 'The mean: ' + round(Numbmean ,2)) 
但是,我看到以下两种情况之一:

  • 要么程序不喜欢我试图将“exit”指定为整数(
    ValueError:invalid literal for int(),以10为基数:“exit”
    ),要么:

  • 程序无法计算字符串变量的平均值,因为输入将变成字符串(
    TypeError:不支持+=:'int'和'str'的操作数类型


  • 如何解决此问题?

    第一个问题是由以下行引起的:

    new_number = int(input("Write a new number to the list, or enter 'exit': "))
    
    如果用户键入
    exit
    ,那么input将返回它,它自然无法转换为整数,从而导致
    ValueError
    。您可以通过首先检查
    输入
    返回值是否与
    退出
    匹配来修复此问题,如果匹配,则中断循环。检查后,您可以将返回值转换为int并将其附加到列表中

    # Start a loop that will run until the user enters 'exit'.
    while True:
        new_number = input("Write a new number to the list, or enter 'exit': ")
    
        # Add the new number to our list.
        if new_number == 'exit':
            break
    
        try:
            numbers.append(int(new_number))
        except ValueError:
            print('Please enter number or exit')
    

    这还可以修复您遇到的第二个错误,因为它可以确保
    numbers
    中的所有项目都是整数。

    在将数字添加到数字列表之前,将数字转换为整数。
    numbers.append(int(new_number))
    谢谢,解决了这个问题!我不知道你可以这样指定。现在我明白你的其他评论的意思了。。。唉。谢谢你可以做
    new\u number=input(“某物”)
    number.append(int(new\u number))
    。但是对于转换,如果您使用
    try…catch…
    yes,则此代码不会“确保数字中的所有项目都是整数”。如果您输入整数或“exit”(例如带空格的“exit”)之外的任何内容,则此代码不会中断。您必须使用try确保添加了错误处理以使其完整,并删除了代码不处理整数和退出之外的其他输入的备注