簡體   English   中英

嵌套的陳述,我做錯了什么?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM