python - 使用嵌套的 for 循环和范围在 Python 3 中打印所需的显示
问题描述
我遇到了一个问题,我被要求编写一个使用嵌套循环和 range 函数来打印以下显示的函数:
SD1, SD2, SD3, SD4, SD5, SD6,
HD1, HD2, HD3, HD4, HD4, HD6, HD7, HD8, HD9, HD10, HD11,
CD1, CD2, CD3, CD4
我知道如何使用 for 循环和范围来打印每一行,但我不确定如何使用嵌套循环来打印所需的显示。我们还没有学习字典,我们只是真正介绍了如何使用列表。
我知道我可以执行以下操作来打印第一行,但使用嵌套循环打印其余部分对我来说似乎不合逻辑。在给导师发电子邮件之前,我认为最好在这里寻求指点,以防我遗漏了什么。有什么建议么?
for i in range(1, 7):
print(f'SD{i},', end=' ')
print('')
for i in range(1,12):
print(f'HD{i},' end=' ')
print('')
for i in range(1,5):
print(f'CD{i},' end=' ')
解决方案
这应该有效:
In [1]: idx_dict = {'SD': 6, 'HD': 11, 'CD': 4}
In [2]: for letter, idx in idx_dict.items():
...: print(', '.join(f'{letter}{i+1}' for i in range(int(idx))))
SD1, SD2, SD3, SD4, SD5, SD6
HD1, HD2, HD3, HD4, HD5, HD6, HD7, HD8, HD9, HD10, HD11
CD1, CD2, CD3, CD4
如果您需要更明确地使用嵌套循环,您可以这样做:
for letter, idx in idx_dict.items():
output = []
for i in range(int(idx)):
output.append(f'{letter}{i+1}')
print(', '.join(output))
这是一种不使用字典的方法:
In [20]: letters = ['SD', 'HD', 'CD']
In [21]: max_indexes = [6, 11, 4]
In [22]: for letter, max_idx in zip(letters, max_indexes):
...: output = []
...: for i in range(max_idx):
...: output.append(f'{letter}{i+1}')
...: print(', '.join(output))
如果您不想使用该zip
功能,则可以使用enumerate
:
In [23]: for idx, letter in enumerate(letters):
...: output = []
...: for i in range(max_indexes[idx]):
...: output.append(f'{letter}{i+1}')
...: print(', '.join(output))
推荐阅读
- python - python tkinter - 绑定可以从窗口外触发的“全局”快捷键
- javascript - 为什么用 google、RPN 和 Javascript 评估器评估相同的方程会有所不同?
- powershell - Powershell - MSExchange Set-Contact 如何在 cmdlet 返回错误消息时引发错误
- boost - 使用 Cmake 为 ARM 交叉编译应用程序时出错
- java - p:radarChart 堆叠一个 ArrayList 的所有对象
在每个图表中 - c# - 使用 Entity Framework Core 过滤软删除对象的最快方法
- java - 如何实现将在 android 中的单独进程上运行的远程服务器?
- c++ - 将函数参数包扩展为非类型参数包参数?
- css - 如何设置文本区域当前选定的行/行的样式?
- python - 将列表格式的字符串转换为 Python 中的列表