【问题标题】:For and if loops in pythonpython中的for和if循环
【发布时间】:2018-07-24 22:57:54
【问题描述】:

几个等级后,我输入完成,它打印到最低等级,但不是平均水平。有人可以帮我解决这个问题吗?

grades = []
print('Enter up to 100 grades')
  for i in range(1,100):
    number = input("Please Enter Grade/enter 'done' when finish: ")
    grades.append(number)
  if 'done' in grades:
    grades.remove('done')
    print('\n')
    print(grades)   
    print('Highest Grade: ',max(grades))      
    print('Minimum Grade:',min(grades))
    print('Average Grade: ',(sum(grades)/len(grades)))

【问题讨论】:

标签: python-3.x loops for-loop average


【解决方案1】:

这是您的代码格式:

grades = [] 
print('Enter up to 100 grades') 

for i in range(1,100): 
  number = input("Please Enter Grade/enter 'done' when finish: ") 
  grades.append(number) 

  if 'done' in grades: 
    grades.remove('done') 

print('\n') 
print(grades)
print('Highest Grade: ',max(grades))
print('Minimum Grade:', min(grades))
print('Average Grade: ',(sum(grades)/len(grades)))

您将成绩存储为字符串,因此 sum 函数在尝试对 grades 中的元素求和时崩溃。您应该将输入转换为数字,但要注意 done 的情况。

【讨论】:

    【解决方案2】:

    请试试这个:

    grades = []
    print('Enter up to 100 grades')
        for i in range(1,100):
        number = input("Please Enter Grade/enter 'done' when finish: ")
        grades.append(number)
        if 'done' in grades:
            grades.remove('done')
            print('\n')
            print(grades) 
            grades = list(map(int, grades))
            print('Highest Grade: ',max(grades))      
            print('Minimum Grade:',min(grades))
            print('Average Grade: ',sum(grades)/len(grades))
    

    你会注意到我稍微改变了缩进。此外,我添加了一行将字符串列表转换为整数列表。我不确定您收到了什么(如果有的话)错误消息,但这些更改解决了编译错误(缩进是原因)和数据类型错误(对字符串执行 sum 函数)。

    希望对你有帮助!

    【讨论】:

    • 用户应该能够为程序输入尽可能多的成绩来计算最高、最低和平均成绩。所以我不能事先在程序中对列表进行编码。
    • 我更新了我的评论,为您提供动态输入的代码。正如布鲁诺所指出的,您最大的问题是在字符串(成绩)列表中使用 sum。我尽可能少地修改以维护您提供的代码,同时使其进入工作状态。
    猜你喜欢
    • 2021-07-30
    • 1970-01-01
    • 2018-08-12
    • 2017-07-21
    • 2019-07-31
    • 2011-12-23
    • 1970-01-01
    • 1970-01-01
    • 2023-01-13
    相关资源
    最近更新 更多