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 /
|__\ |__\ |__\ |__\ |__\
| | | | |
添加回答
舉報