您好,這邊我提供一個策略,
用「計數器」的概念,
計算目前我已經累積輸出幾個字了。
我先設定一個變數叫作cnt
,
初始值設為0
,
每當我找到一個數字可以被4 or 9整除時,
我就把cnt的值+1,
每當cnt的值累積到10(因為每個數4個字元,10個數就40個字元),
就印出一個換行
另外想修正你的程式碼邏輯,
你寫的while迴圈是多餘的,
因為while進去之後就break掉了,
這個while其實等於沒有
程式碼如下:
a = int(input())
b = int(input())
list1 = []
cnt = 0 # 設定一個計數器
for i in range(a, b+1):
if i%4==0 or i%9==0:
print(str(i).ljust(4), end='')
list1 += [i]
cnt += 1
if cnt == 10:
print() #當計數器累積到10個時(即40個字元),換行
cnt = 0 #計數器歸零
print('\t')
print(len(list1))
print(sum(list1))
另外,建議您未來在問問題時,
可以順便把程式碼貼上來,
方便答題者複製測試你的程式碼,
省去重新打一次的麻煩~
如解答有幫助,
還請不吝給予最佳解答,謝謝您~
list1+=[i]
改成
list1+=[i]
if len(list1)%10==0:
print("")
獻醜一下
a = int(input())
b = int(input())
num = list(x for x in range(a, b+1))
count = 0
num_list = list()
for i in num:
if i%4==0 or i%9==0:
if count<9 or count>9:
num_list.append(i)
print(i, '...', sep='', end='')
count += 1
elif count==9: #用一下上面大大的方法 elif len(num_list)==10:
print(i, '...', sep='', end='\n')
num_list.append(i)
count += 1
print(f"\n{count}")
print(sum(num_list))
#!/usr/bin/env python3
str1 = '8 9 12 16 18 20 24 27 28 32 36 40 44 45 48 52 54'
chunk_size = 40
result = [str1[y - chunk_size: y] for y in range(chunk_size, len(str1)+chunk_size, chunk_size)]
print(*result, sep='\n')
同意計算部分應該歸計算部分。
轉換成str和顯示應該用別的函式去做。我是懶就直接 list comprehension。
a = 5
b = 55
countResult = [x for x in range(a, b+1) if x % 4 == 0 or x % 9 == 0]
strResult = ["{} ".format(str(i))[:4] for i in countResult]
[print(x, end="") if i % 9 != 0 or i == 0 else print(x) for i, x in enumerate(strResult)]
enumerate()很好用,會傳回可疊代物件的索引和元素。
後來想想好像for也沒比較多字...
countResult = [8, 9, 12, 16, 18, 20, 24, 27, 28, 32, 36, 40, 44, 45, 48, 52, 54]
for i, x in enumerate(countResult):
if i % 9 != 0 or i == 0:
print("{} ".format(str(x))[:4], end="")
else:
print("{} ".format(str(x))[:4])