Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 列表的平均值_Python_Python 3.x - Fatal编程技术网

Python 列表的平均值

Python 列表的平均值,python,python-3.x,Python,Python 3.x,因此,我试图使程序将我打印为平均值,我得到以下错误: name1 = input("Please enter in your first name :") name2 = input("Please enter in your last name :") prompt = "Please enter in your grades. When you are finished, enter 'quit': " grades = [] grades2 = (input(prompt).strip()

因此,我试图使程序将我打印为平均值,我得到以下错误:

name1 = input("Please enter in your first name :")
name2 = input("Please enter in your last name :")
prompt = "Please enter in your grades. When you are finished, enter 'quit': "
grades = []
grades2 = (input(prompt).strip())
length = len(grades)

while (grades2 != "quit"):
    grades.append(grades2)
    grades2 = input(prompt).strip()

if (grades2 == "quit"):
    average = float( sum(grades) / len(grades) )
    print (name1, name2, average)    
回溯(最近一次呼叫最后一次):
文件“C:/Users/Owner/AppData/Local/Programs/Python/Python35/Project.py”,第13行,在
平均值=浮动(总和(等级)/长度(等级))
TypeError:不支持+:“int”和“str”的操作数类型

救命啊

您可以通过修改while循环并在检查其是否为退出字符串后将用户输入转换为浮点值来解决问题:

    Traceback (most recent call last):
   File "C:/Users/Owner/AppData/Local/Programs/Python/Python35/Project.py",      line      13, in <module>
          average = float( sum(grades) / len(grades) )
      TypeError: unsupported operand type(s) for +: 'int' and 'str'

注意。如果用户提供其他“退出”字符串,程序将失败。因此,在将用户输入附加到成绩列表之前,您可能需要扩展到这一点,以确保用户输入是数字。

您的问题是,您将字符串附加到列表中,而不是数字。在将用户输入附加到列表之前,需要将其强制转换为整数。通过在while循环的每次迭代中打印列表,可以看到这一点:

name1 = input("Please enter in your first name: ")
name2 = input("Please enter in your last name: ")
prompt = "Please enter in your grades. When you are finished, enter 'quit': "

grades = []

while True:
    an_input = input(prompt).strip()
    if an_input == 'quit': 
         break        
    grades.append(float(an_input))

average = sum(grades) / len(grades)
print(name1, name2, average)
此外,在将其添加到
成绩
列表之前,应检查用户输入是否等于字符串
“quit”
,以便不将其添加到列表中:

Please enter in your first name :dummy
Please enter in your last name :name
Please enter in your grades. When you are finished, enter 'quit': 1
[]
Please enter in your grades. When you are finished, enter 'quit': 2
['1']
Please enter in your grades. When you are finished, enter 'quit': 3
['1', '2']
Please enter in your grades. When you are finished, enter 'quit': 4
['1', '2', '3']
Please enter in your grades. When you are finished, enter 'quit': 5
['1', '2', '3', '4']
Please enter in your grades. When you are finished, enter 'quit': 6
['1', '2', '3', '4', '5']
Please enter in your grades. When you are finished, enter 'quit': 
更改:

  • 我使用while true而不是while条件,因为不需要在while循环中测试用户输入以及if语句
  • 我添加了检查,以查看用户是否退出,然后再将用户输入添加到您的
    grades
    列表中
  • 我先将用户输入转换为整数,然后再将其添加到
    grades
    列表中

将最后第二行更改为

name1 = input("Please enter in your first name :")
name2 = input("Please enter in your last name :")
prompt = "Please enter in your grades. When you are finished, enter 'quit': "
grades = []

while True:
    grade = input("Enter a grade: ")
    if grade == "quit":
        average = sum(grades) / len(grades)
        print(name1, name2, average)
        break
    grades.append(int(grade))
“input”方法只返回字符串。如果希望它返回整数,请使用“int(输入(提示))”
average = float(sum([float(i) for i in grades]) / len(grades) )