python - 我只是在打印模式时被困在 python 中。请帮帮我
问题描述
我是 python 编程的初学者,目前正在练习强大的主题“循环”。一个说打印以下模式的问题。BC DEF GHIJ 等等...
所以我做到了,但我想更进一步。
答。
x = int(input("How much rows you want to print:\n"))
letter = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']
k= 0
for row in range(x):
for col in range(row+1):
print(letter[k],end=" ")
k+=1
if k==len(letter):
k ==0
print()
但是当我输入 7 或更高的数字时,我得到了一个错误。
print(letter[k],end=" ")
list index out of range.
所以据我所知,这是因为“k”而导致的错误。当'k'到达len(字母)列表结束时,我尝试使用if语句修复当它到达len(字母)时将k的值重置为0。但我仍然遇到同样的错误。请告诉我我做错了什么。
解决方案
对于可以切片的迭代器来说,这是一项不错的工作itertools.islice
:
设置:
letter = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']
## NB. you could use ascii.ascii_uppercase
# from string import ascii_uppercase
# letter = list(ascii_uppercase)
n = 6
from itertools import islice
iter_letters = iter(letter) # make a iterator
for i in range(n+1):
print(' '.join(islice(iter_letters, i)))
输出:
A
B C
D E F
G H I J
K L M N O
P Q R S T U
7行的输出:
A
B C
D E F
G H I J
K L M N O
P Q R S T U
V W X Y Z
注意。就像列表方法一样,你在这里被限制为 7 行,否则你会用完字母
避免 7 行限制:
您甚至可以使用以下方法使您的列表循环itertools.cycle
:
from itertools import islice, cycle
n = 15
iter_letters = cycle(letter)
for i in range(n+1):
print(' '.join(islice(iter_letters, i)))
输出:
A
B C
D E F
G H I J
K L M N O
P Q R S T U
V W X Y Z A B
C D E F G H I J
K L M N O P Q R S
T U V W X Y Z A B C
D E F G H I J K L M N
O P Q R S T U V W X Y Z
A B C D E F G H I J K L M
N O P Q R S T U V W X Y Z A
B C D E F G H I J K L M N O P
推荐阅读
- path - ENOENT:没有这样的文件或目录 readFileSync
- flutter - 在 Flutter Web 中上传大文件
- google-apps-script - 我可以在 GAS 中有多个 toast 吗?
- azure - Azure Log Analytics:如何同时显示 AppServiceConsoleLogs 和 AppServiceHTTPLogs?
- nestjs - 如何在 Nest JS 中实现 Retrace 分析工具
- python - 使用 np.arange 定义时缺少最终刻度线
- javascript - $refs resetFields 不是函数 AntDesign
- python - 如何使用具有自定义频率和数据折叠的熊猫滚动窗口
- go - 获取 Go 可执行文件 (hugo) 以运行英特尔 Galileo/Quark
- database - Mongo shell 聚合管道错误:“未知运算符:$nor”