Python: 循环中的循环?

0 投票
6 回答
658 浏览
提问于 2025-04-18 04:20

我刚学会了编程和Python的基础知识,作为一个“挑战”,我需要用一个for循环来打印出每个学生的数据。我只想显示学生的名字和他们的分数,而不是像这样直接打印字典:

  1. 打印学生的名字
  2. 打印学生的作业分数
  3. 打印学生的测验分数
  4. 打印学生的考试分数

打印学生的作业分数,打印学生的测验分数,打印学生的考试分数。

但我现在在通过一个变量(在这个例子中是“students”)访问字典的值时遇到了困难。我需要在一个for循环里再用一个for循环吗?

lloyd = {
    "name": "Lloyd",
    "homework": [90.0, 97.0, 75.0, 92.0],
    "quizzes": [88.0, 40.0, 94.0],
    "tests": [75.0, 90.0]
}
alice = {
    "name": "Alice",
    "homework": [100.0, 92.0, 98.0, 100.0],
    "quizzes": [82.0, 83.0, 91.0],
    "tests": [89.0, 97.0]
}
tyler = {
    "name": "Tyler",
    "homework": [0.0, 87.0, 75.0, 22.0],
    "quizzes": [0.0, 75.0, 78.0],
    "tests": [100.0, 100.0]
}

students = [lloyd, alice, tyler]

for i in students:
    print i[i] #<------ I have no idea what to do here

请一步一步指导我写出好的代码(这样我才能理解),任何答案都将非常感谢。

6 个回答

0

试试这个:

    lloyd = {
        "name": "Lloyd",
        "homework": [90.0, 97.0, 75.0, 92.0],
        "quizzes": [88.0, 40.0, 94.0],
        "tests": [75.0, 90.0]
    }
    alice = {
        "name": "Alice",
        "homework": [100.0, 92.0, 98.0, 100.0],
        "quizzes": [82.0, 83.0, 91.0],
        "tests": [89.0, 97.0]
    }
    tyler = {
        "name": "Tyler",
        "homework": [0.0, 87.0, 75.0, 22.0],
        "quizzes": [0.0, 75.0, 78.0],
        "tests": [100.0, 100.0]
    }

    students = [lloyd, alice, tyler]

    for i in students:
      total=0;
      for s in i['quizzes']:
        total=total+s;
      print "Name: "+i['name']+" Score:"+str(total);

演示链接

0

注释代码:

lloyd = {
    "name": "Lloyd",
    "homework": [90.0, 97.0, 75.0, 92.0],
    "quizzes": [88.0, 40.0, 94.0],
    "tests": [75.0, 90.0]
}
alice = {
    "name": "Alice",
    "homework": [100.0, 92.0, 98.0, 100.0],
    "quizzes": [82.0, 83.0, 91.0],
    "tests": [89.0, 97.0]
}
tyler = {
    "name": "Tyler",
    "homework": [0.0, 87.0, 75.0, 22.0],
    "quizzes": [0.0, 75.0, 78.0],
    "tests": [100.0, 100.0]
}

students = [lloyd, alice, tyler]

for student in students:
    print student # The dictionnary, so...

    for j in student:
        print student[j] # Print each value
1

在你的for循环中,i已经代表了学生:

for i in students:
    print i

{'quizzes': [88.0, 40.0, 94.0], 'tests': [75.0, 90.0], 'name': 'Lloyd', 'homework': [90.0, 97.0, 75.0, 92.0]}

你可以这样显示所需的信息:

print i['name']

你需要阅读这个: https://docs.python.org/2/tutorial/datastructures.html

1

你应该把 i[i] 替换成 i["name"]。当你遍历 students 时,每次循环你得到的是一个字典,而这个字典的内容存储在 i 里。

要获取字典里的值,你需要用“键”来访问(在Python中,字典是由键和值组成的);在你的例子里,你想用 name 作为键来获取对应的值。

1

在编程中,有时候我们需要让程序在特定的条件下执行某些操作。这就像给程序设定了一些规则,只有当这些规则被满足时,程序才会继续运行。

比如,你可能想要在用户输入的数字大于10时,程序才进行下一步。这种情况下,你就需要用到“条件语句”。条件语句就像是一个检查点,程序会在这里停下来,看看条件是否成立。如果成立,程序就会继续执行;如果不成立,程序可能会选择做其他事情,或者直接停止。

在编程中,条件语句通常用“if”这个词来表示。你可以把它想象成一个问句:“如果这个条件成立,我就做这个事情。”

这样一来,程序就能根据不同的情况做出不同的反应,变得更加灵活和智能。

for d in students:
    print d["name"],d["homework"],d["quizzes"],d["tests"]

撰写回答