Python循环代码

时间:2015-01-28 20:08:26

标签: python python-3.x

total = 0          
gradeCounter = 0  
numbers = []
grade = input("Enter grade, -1 to end:")   # get one grade
grade = int(grade)   # convert string to an integer

while grade != -1:
    total = total + grade
    gradeCounter = gradeCounter + 1
    grade = input( "Enter grade, -1 to end: " )
    grade = int( grade )

if gradeCounter != 0:
    average = float( total ) / gradeCounter
    print('Largest is {}, smallest is {}'.format(max(numbers), min(numbers)))
    print ("Class average is", average)

如果有人能修复我的编码,我将不胜感激。我试图找到一种简单的方法来打印用户输入的最低和最高整数。我所发现的并不工作我怀疑它是因为我使用的是Python3 +。我希望它能够适应我已经放置的编码,但是我使用的代码是不能正常工作的。

我试图找到代码,所以我的程序(用户放入学校成绩)发现avarge(done)最低和最高并打印出来..最低和最高位是我能做的&#39 ;做。 -

3 个答案:

答案 0 :(得分:1)

您应该将grade添加到numbers列表中,如下所示:numbers.append(grade)否则您的列表为空。

答案 1 :(得分:1)

你错过了这些行

if grade != -1:
    numbers.append(grade)
grade = int(grade)之后

。这会将等级添加到列表numbers

评分

  • 使用PEP8(您可以使用pep8online.com)检查您的代码
  • 对于未命名的输入,我更喜欢"Largest is %i, smallest is %i" % (max(numbers), min(numbers))
  • 您可以使用sum来汇总列表中的整数
  • 如果你添加一个shebang(第一行#!/usr/bin/env python),Linux用户可以直接执行你的脚本:./yourscript.py而不是python yourscript.py

代码

我宁愿写这样的代码:

#!/usr/bin/env python


def get_grades():
    """Return a list of grades."""
    numbers = []
    while True:
        grade = int(input("Enter grade, -1 to end: "))
        if grade != -1:
            numbers.append(grade)
        else:
            return numbers


if __name__ == '__main__':
    grades = get_grades()
    if len(grades) != 0:
        average = float(sum(grades)) / len(grades)
        print('Largest is %i, smallest is %i.' % (max(grades), min(grades)))
        print("Class average is %0.2f." % average)

读取错误消息

您可能拥有以下内容:

$ python test.py 
Enter grade, -1 to end:1
Enter grade, -1 to end: 2
Enter grade, -1 to end: 3
Enter grade, -1 to end: -1
Traceback (most recent call last):
  File "test.py", line 15, in <module>
    print('Largest is {}, smallest is {}'.format(max(numbers), min(numbers)))
ValueError: max() arg is an empty sequence

现在您应首先查找行号。这个在line 15中说的是错误的。这是:

print('Largest is {}, smallest is {}'.format(max(numbers), min(numbers)))

现在你必须进一步调查。究竟出了什么问题?这条线路可能出现什么问题?

现在你读了

ValueError: max() arg is an empty sequence

这应该看起来很奇怪,因为您选中了gradeCounter != 0。接下来,您将打印max参数的内容。这是空的,因此添加到列表numbers不起作用。

答案 2 :(得分:0)

我认为更快的方法是在一些列表中添加所有用户输入数据,然后对该列表进行排序

>>> list = [3, 1, 9, 8, 6]
>>> sorted(list)
[1, 3, 6, 8, 9]
>>> sorted(list, reverse = True)
[9, 8, 6, 3, 1]
>>> list
[3, 1, 9, 8, 6]

然后你可以打印列表[0]并列出[len(list)-1]