Python新手,想知道是否有人可以帮助我解决我面临的这个问题。 我能够打印一个水平显示信息的列表,但是当我尝试创建一个垂直列表时,我似乎无法实现它或找到任何其他可以指导我完成类似场景的帮助。
cat1 = 4
cat2 = 3
cat3 = 5
cat4 = 3
print(" 0 to 29: ", end=" ")
for i in range(cat1):
print("*", end=" ")
else:
print("\n 30 to 39: ", end=" ")
for i in range(cat2):
print("*", end=" ")
else:
print("\n 40 to 69: ", end=" ")
for i in range(cat3):
print("*", end=" ")
else:
print("\n 70 to 100: ", end=" ")
for i in range(cat4):
print("*", end=" ")
break
This outputs:
0 to 29: * * * *
30 to 39: * * *
40 to 69: * * * * *
70 to 100: * * *
What I am trying to do is:
| 0 to 29 | 30 to 39 | 40 to 69 | 70 to 100 |
* * * *
* * * *
* * * *
* *
*
任何帮助将不胜感激! 谢谢!
最佳答案
此代码片段将产生您想要的输出:
cats = [cat1, cat2, cat3, cat4]
print('| 0 to 29 | 30 to 39 | 40 to 69 | 70 to 100 |')
for i in range(max(cats)):
c1, c2, c3, c4 = ['*' if i < cat else ' ' for cat in cats]
print(' {} {} {} {}'.format(c1, c2, c3, c4))
您可以调整 {}
之间的空格量如果您愿意,可以以不同的方式缩进星号
编辑: 正如 @Bram Vanroy 指出的,我的 for 循环可以改进为使用 print('' + ''.join(['*' if i < cat else ' ' for cat in cats]))
而不是我的两行,将代码减少到
cats = [cat1, cat2, cat3, cat4]
print('| 0 to 29 | 30 to 39 | 40 to 69 | 70 to 100 |')
for i in range(max(cats)):
print(' ' + ' '.join(['*' if i < cat else ' ' for cat in cats]))
关于Python 3.x - 使用代表整数的符号创建垂直列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52990808/