首页 > 解决方案 > 座椅系统,python中的循环问题

问题描述

我正在用 Python 制作一个座位应用程序,它会列出 10 个名字并给每个学生一个座位。座位是2排5个座位。

我写了一个简单的脚本来做到这一点,但我被困在为学生们循环座位上。这是我的代码:

from pprint import pprint as pp 

C = "ABCDE"
R = range(0, 2)

students= ["rob", "tim", "kaleb", "josh", "victoria", "amy", "fred", "xander", "cody", "dump man"]

seats = [{str(y)+ltr:"EMPTY" for ltr in C} for y in R]

for names in range(10):
   for i in range(2):
      for letters in C:
         for s in range(1):
                print(f'{i}{letters}')
                seats[i][f"{i}{letters}"]=students[names]


pp(seats)

如您所见,在循环中,我正在遍历 SEATS 的字母和数字。但是,在迭代学生姓名时,它总是给我 10。请您帮忙!

标签: pythonloopsfor-loopnested-loops

解决方案


这应该有效:

C = "ABCDE"
number_of_rows = 2
R = range(number_of_rows)
seats_per_row = 5

students= ["rob", "tim", "kaleb", "josh", "victoria", "amy", "fred", "xander", "cody", "dump man"]

seats = [{str(y)+ltr:"EMPTY" for ltr in C} for y in R]

for row in range(number_of_rows):
    for seat in range(seats_per_row):
        letter = C[seat]
        name = students[row * seats_per_row + seat]
        seats[row][f"{row}{letter}"]=name

print(seats)

输出:

[{'0A': 'rob', '0B': 'tim', '0C': 'kaleb', '0D': 'josh', '0E': 'victoria'}, {'1A': 'amy', '1B': 'fred', '1C': 'xander', '1D': 'cody', '1E': 'dump man'}]


推荐阅读