Python程序,要求用户在列表中输入0到100之间的分数

时间:2017-11-29 21:51:02

标签: python-3.x

试图自己解决这个问题,但是代码中存在错误。希望有人能帮助我。

def integer_list_input():
    print('Enter test scores between 0 and 100.')
    scores=[]
    while True:
         scores=input('Enter test scores: ')
         if scores>100 or scores<0:
            print('Invalid input. Score couldn\'t be negative or heigher')
         elif scores=='':
             break
    scores.remove(min(scores))
    return min(scores)
    q=sum(scores)/len(scores)
    return q

这里问题要做什么:

编写一个不断要求用户输入测试分数的程序。有效分数必须介于0到100之间,并且对用户可以输入的分数没有限制。从下面列出的要求中可以清楚地看出,无法处理得分,而是必须将用户输入的得分保存到列表中。当用户输入测试分数后,他们只需在程序提示符下输入下一个分数,然后程序执行以下计算:

1)找到列表中的最小分数(您可能需要查看函数min()并阅读其文档)。

2)从列表中删除最小的分数

3)计算并打印剩余分数的平均值(即将它们相加并除以剩余分数的数量)

2 个答案:

答案 0 :(得分:2)

您需要先将输入转换为int。

输入实际上是一个字符串,因此您需要先将其转换为int。

然后将数字添加到列表中。

您可以更改此代码:

def integer_list_input():
    print('Enter test scores between 0 and 100.')
    scores=[]
    while True:
         score=input('Enter test scores: ')
         if score=='':
             break
         elif int(score)>100 or int(score)<0:
            print('Invalid input. Score couldn\'t be negative or heigher')
         else :
            scores.append(int(score))
    scores.remove(min(scores))
    q=sum(scores)/len(scores)
    print('Minimum is ':, min(scores))
    print('Average is ':, q)
    return [q, min(scores)]

答案 1 :(得分:0)

你的代码有很多问题,我只是介绍有关输入的部分:

  • 您应该为列表和输入使用不同的变量名称。
  • Python 3的input()函数返回一个字符串。您无法将字符串与数字进行比较。
  • 您需要将输入的字符串转换为数字,然后再将其与限制进行比较。
  • 您需要处理输入的字符串不是有效整数的情况。

作为参考,这是一个函数,它读取一个数字,检查限制并返回None如果用户只按下回车:

def readNumber(prompt, min, max):
    while True:
        raw = input(prompt)
        if raw == '':
            return None
        try:
            number = int(raw)
            if number < min or max < number:
                print('Please enter a number between ' + str(min) + ' and ' + str(max) + '.')
            else:
                return number
        except ValueError:
            print('Please enter an integer.')

x = readNumber('Enter score: ', 0, 100)