[英]Nested statements, what am I doing wrong?
如果我為限制輸入'5'而副本輸入'3',我希望輸出為
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
這是我的代碼
limit = int(input("Limit: ")
copies = int(input("Copies: ")
count = 1
for i in range(copies):
for j in range(limit):
print(count, end= " ")
count += 1
if count == limit: count = 0
print()
但是這段代碼的輸出是
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
為什么我的“if count == limit:count = 0”似乎沒有做任何事情?
讓我們手動查看迭代:從count = 1
開始。
因此,在copies
的第一次迭代中,內部循環運行limit=5
次。 在每次內部迭代之后, count
增加1。 因此,在5次迭代之后, count
將增加五次 。 所以內循環后的值將是6
。
此時,檢查count
是否等於limit
的值。 所以你檢查6
是否等於5
,這顯然不是真的。 因此,變量不會重置,下一個外部迭代會運行。
由於您永遠不會減少count
,因此檢查將永遠不會成為真,因此count
將不斷增加而不會被重置。
要解決此問題,只需刪除檢查並重置count
無論其值如何。 由於您始終運行內循環limit
時間,因此您將始終知道增加count
頻率,因此沒有理由檢查:
for i in range(copies):
for i in range(limit):
print(count, end= " ")
count += 1
count = 1
您還希望將值重置為1
以匹配初始大小寫,並使行中的第一個值為1
。
因為當你做range(limit)
,它只會達到limit-1
。
例如, range(3
)將給出[0, 1, 2]
,因此最后一次計數將始終為limit + 1
。
您可以在外部循環中重置count = 1
的替代解決方案,或者可以檢查count - 1 == limit
。
你不需要那個。 簡單地說,復位后聲明自己內心for
只需初始化外部for
循環中的count
變量,之后不必重置它:
limit = int(input("Limit: ")
copies = int(input("Copies: ")
for i in range(copies):
count = 1
for j in range(limit):
print(count, end= " ")
count += 1
print()
但你可以更有效地做到這一點:
limit = int(input("Limit: ")
copies = int(input("Copies: ")
sequence = range(1, limit+1)
for i in range(copies):
print(" ".join(sequence))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.