我是編程的初學者,從 python 開始。
我需要列印以下圖案:
*** *** *** ***
* * * * * * * *
* *** *** *** *
這看起來就像一個由星號組成的方波。輸入是星號的數量。所以上面的例子的輸入是 31。
類似地,輸入 13 的輸出如下所示:
*** ***
* * *
* ***
我想出了以下代碼,但對于大多數奇怪的輸入它都失敗了,我無法弄清楚我哪里出錯了,并且在嘗試了這么長時間后老實說感到沮喪。
n=11
count = 1
if n%4 == 0:
add = 1
else:
add = 2
for i in range(1,4):
for j in range(1,2*(n//4) add):
if(i==2 and (i j)%2==0) or ((i j-1)%4 == 0 and i!=2):
print("-", end="")
elif count<=n and j<n//2:
count =1
print("*", end="")
else:
break
print()
PS:我使用了連字符而不是空格來分隔,因為它在我的終端上更容易識別。
uj5u.com熱心網友回復:
有點臟,但它有效:)
x = 22 # change this to change the number of asterisk
l = []
i=0
while x>0:
if i%2==0:
x-=3
i =1
l.append(3) #3 asterisks
else:
i =1
x-=1
l.append(1)#1 asterisk
if x<0: # 2 or 1 asterisk tail
l[-1] = l[-1] x
top =[] # display the top
mid=[] # display the middle
bot =[] # display the bottom
for i in range(len(l)):
if l[i]==3: # if 3 asterisks
top.append('*')
mid.append('*')
bot.append('*')
elif l[i]==2: # if 2
if i%4==0: # to up
top.append('')
mid.append('*')
bot.append('*')
else: #to down
top.append('*')
mid.append('*')
bot.append('')
elif i%4==1:# asterisk up
top.append('*')
mid.append(' ')
bot.append(' ')
elif i%4==3: #asterisk down
top.append(' ')
mid.append(' ')
bot.append('*')
#display the result
print(''.join(top))
print(''.join(mid))
print(''.join(bot))
對于 31 個星號:
*** *** *** ***
* * * * * * * *
* *** *** *** *
22 人:
*** *** ***
* * * * * *
* *** ***
我希望它會幫助你 :D
uj5u.com熱心網友回復:
每 8 個星號模式重復一次。所以我們將每個水平段有 4 個字符(包括空格)n/8 次,還有 n%8 個額外的“*”。
第一行將重復 '***' n/8 次,如果 n%8 是 3、4 或 5,則附加 1、2 或 3 個 '*'。
第二行將重復 '* * ' n/8 次,如果 2 <= n%8 < 6,則附加一個 ' ',或者如果 n%8 >= 6 ,則重復 ' *' 。
第三行將重復 '* **' n/8 次,如果 1 <= n%8 <= 6,則為' ',如果 n%8 == 7,則為' *'。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/349912.html
上一篇:遍歷多個串列和條件if陳述句
