2 回答
TA贡献1841条经验 获得超3个赞
我不明白为什么迭代实际上会成为问题,除非您打印数百万个标志。我认为这将是最快的。无论如何,优化总是你最不想做的事情,你首先需要一个有效的算法。
我不会真正解决这个练习,而是一些事情。您可以先一行一行地使用强大的星号运算符:
print("ORA " * n)
print("MUDA " * n)
由于所有字符的间距相同,您可以看到它打印得很好。重要的是要检查所有行是否具有相同数量的字符,或者对其进行填充(例如,在行尾插入空格)。
现在,关于更改字母,您需要更改一些算法:
print("ORA " * n)
for i in range(n):
print("HELLO ".replace('E', i))
print(i)
print("MUDA " * n)
如果你担心你的老师会不喜欢这种编码风格,首先,这对你很好,然后你确实可以使用数组,有点像这样:
# Notice that all my line have the same length
flag = """
ORA
MUDA
"""
f_lines = flag.split("\n")
for l in f_lines:
print(l * n)
考虑到这一点,我认为您拥有解决锻炼所需的所有关键。
TA贡献1810条经验 获得超4个赞
您不能并排打印 - 您的光标移动到下一行,每次打印都会
顶部 = '+___'
您可以将图片拆分为单独的行。它创建了一个可以迭代的列表。
然后你可以使用简单的乘法打印一些字符串的倍数*:
n = int(input())
flag = """
+___
| /
|__\
|
"""
for line in flag.split("\n"):
print(line * n)
结果:
+___ +___ +___ +___ +___
| / | / | / | / | /
|__\ |__\ |__\ |__\ |__\
| | | | |
但这仅在您的原始标志的所有行长度相等时才有效。如果您不想确保其中有空格,您可以稍后添加填充。使用字符串格式或一些巧妙的技巧。
至于数字,字符串格式是你的朋友!
flag = """
+___
|{} /
|__\
|
"""
请注意这里的标志是如何被破坏的 -{}是两个字符,但我们将只使用一个数字来代替它!
然后我们需要一个内部循环,因为每个标志需要一个不同的数字。
for line in flag.split("\n"):
for i in range(1, n+1):
print(line.format(i), end="") #by default each print is one line, we want to stay in the same line!
print() #print the new line only after n * part of the flag is printed
结果:
+___ +___ +___ +___ +___
|1 / |2 / |3 / |4 / |5 /
|__\ |__\ |__\ |__\ |__\
| | | | |
添加回答
举报