我正在尝试根据用户输入创建一个数字列表。
我尝试使用“追加”来创建列表,这样我就可以计算平均值,但“追加”不包括用户输入的第一个数字。
任何帮助表示赞赏。
提前致谢!
list_number = []
number = float(input("Please enter any number (enter (-1) when done): "))
while number != -1:
number = float(input("Please enter any number (enter (-1) when done): "))
list_number.append(number)
if number == -1 :
print("You have exited the loop")
break
print(list_number)
total_num = sum(list_number)
num_entries = len(list_number)
average = total_num / num_entries
print("Average: ", average)
发生这种情况的原因是您在第 2 行进行了输入,但没有将其附加到列表中。
您可以将第 2 行更改为:
number = 0 #(anything but -1)
或者,您在 while 循环之前将数字附加到列表中。
欢迎来到 StackOverflow!看起来您只是在第一个
list_number.append(number)
之后忘记了number = ...
。但是,此处使用的 while 循环应替换为“do while”以避免重复。要在 Python 中执行此操作,只需 while True
并添加 break 语句 if number == -1
正如您已经拥有的那样。
例如:
list_number = []
while True:
number = float(input("Please enter any number (enter (-1) when done): "))
if number == -1:
print("You have exited the loop")
break
else:
list_number.append(number)
print(list_number)
total_num = sum(list_number)
num_entries = len(list_number)
average = total_num / num_entries
print("Average: ", average)
list_number = []
while 1:
number = float(input("Please enter any number (enter (-1) when done): "))
if number == -1:
print("You have exited the loop")
break
list_number.append(number)
print(list_number)
total_num = sum(list_number)
num_entries = len(list_number)
average = total_num / num_entries
print("Average: ", average)
Output
python3 st.py
Please enter any number (enter (-1) when done): 12
Please enter any number (enter (-1) when done): 341
Please enter any number (enter (-1) when done): 2345
Please enter any number (enter (-1) when done): -1
You have exited the loop
[12.0, 341.0, 2345.0]
Average: 899.3333333333334
list_number = []
数 = 0
您使用了 2 个条目,而您的列表缺少其中一个,因此您应该将 number 的值设置为 0,就像这样
这是一种使用赋值表达式的可能方法(仅由 python >= 3.8 支持):
list_number = []
while (n := float(input("Enter a number (enter (-1) when done): "))) != -1:
list_number.append(n)
print("You have exited the loop")
print("Average: ", sum(list_number) / len(list_number))