你如何让用户选择for循环的范围?

时间:2017-11-12 18:23:53

标签: python loops for-loop

我必须制作这个节目:

编写一个程序,允许教师输入他/她班级中的学生数量,然后允许他们输入名称并使用for循环标记班级中的每个学生。请注意,您不需要记录所有名称以供以后使用,这超出了课程的范围*所以只需询问每个名称,让它在一个名称变量中将名称保存在彼此之上。

即。)

内圈

name = input (“Please enter student name: “)

计算整个班级的平均分数 - 这将要求您使用总计。 在程序结束时输出类平均值,并询问是否要为另一个类输入标记。如果他们说是,则重新循环程序,如果不是,则停止该程序。

所以我开始编写程序,它看起来像这样

studentamount = int(input("Please enter how many students are in your class: "))

for count in range():

    name = input ("Please enter student name: ")
    mark = int(input("Please enter the student's mark"))

我遇到了以下问题:如何让for循环下的代码集为每个学生循环?我以为我可以输入studentamount变量作为范围,但我不能,因为python不允许你输入作为范围的变量。

如何输入for循环以获得输入的学生数量?例如如果输入20名学生金额的学生,我希望for循环循环20次。非常感谢您的帮助和知识。

3 个答案:

答案 0 :(得分:0)

阅读用户输入,将其转换为int并将其作为参数传递给range

studentamount = input("Please enter how many students ...: ")  # this is a str
studentamount = int(studentamount)  # cast to int ...

for count in range(studentamount):  # ... because that's what range expects
    # ...

答案 1 :(得分:0)

  

Python不允许您将变量作为范围输入。

Python 允许您输入变量作为范围,但它们必须是数字。 Input ()以字符串形式读取输入,因此您需要将其输入。

所以,这是正确的:

```的Python studentamount = int(输入("请输入您班级中有多少学生:")

为范围内的计数(studentamount):

name = input ("Please enter student name: ")
mark = int(input("Please enter the student's mark)

```

P.S a try - except子句在此处用于捕捉人们在[TypeError]中输入非整数数据

P.S.P.S @schwobaseggl的例子也很好,使用嵌套函数studentamount = int(input("Text")可能比较麻烦。 studentamount = input("Text") studentamount = int(studentamount)

答案 2 :(得分:0)

您可以将每个学生姓名和标记存储在字典或元组中,并将每个字典(或元组)存储到列表中,参见代码示例(最后输入“no”退出或任何其他值重新循环程序):

response = None
while response != 'no':

        student_count = int(input('Please enter the number of students: '))
        students = []
        mark_sum = 0
        print('There are {} student(s).'.format(student_count))
        for student_index in range(student_count):
            student_order = student_index + 1
            student_name = input('Please enter the name of student number {}: '.format(student_order))
            student_mark = float(input('Please enter the mark of student number {}: '.format(student_order)))
            students.append({'name': student_name, 'mark': student_mark})
            mark_sum += student_mark

        print('The average mark for {} student(s) is: {}'.format(student_count, mark_sum / student_count))

        response = input('Do you want to enter marks for another class [yes][no]: ')