簡體   English   中英

如何用輸入打破循環?

[英]How to break a loop with an input?

我是 Python 新手,所以請耐心等待。 我正在嘗試編寫一個程序,該程序涉及一個函數,該函數以數字 K 作為輸入,一次讀取 K 個名稱,將它們存儲到列表中,然后打印它們。

不確定我是否應該使用“for”或“while”循環,所以我首先嘗試使用“while”循環。

k = input ("How many names?\n")

def names():
    lst = []
    while True:
        name = input("Enter name:")
        if = int(k)
            break
    return lst
names()

我希望看到的是一個名稱列表,該列表將在 K 個名稱之后被切斷。

我一直收到此錯誤消息:

File "<ipython-input-21-24a26badc1b5>", line 7
    if = int(k)
       ^
SyntaxError: invalid syntax

Python 中的相等比較是通過一個

==

您還需要某種東西來比較 int(k) 。 如果你想計算循環,你可以做類似的事情

x = 0
while True:
    name = input("Enter name:")
    lst.append(name)
    x+= 1
    if x== int(k)
        break

whilefor循環之間的區別是:

  • 如果您想執行特定次數的某事,或者對某個集合中的每個元素執行一次,請使用for循環。
  • 如果你想無限次地做某事,直到滿足某個條件,請使用while循環。

使用for循環實現你想要的方法是這樣的:

k = input("How many names?\n")

def names():
    lst = []
    for i in range(int(k)):  # creates a list `[0, 1, 2, ..., k-1]` and iterates through it, for `k` total iterations
        name = input("Enter name:")
        lst.append(name)
    return lst
names()

現在,您可以使用while循環執行此操作 - 通過事先設置一個像x=0這樣的變量,並在每次迭代時將其增加 1 直到x == k ,但這比for循環更冗長且難以一目了然是。

@Green Cloak Guy很好地解釋了為什么 for 循環適合您的任務。 但是,如果您確實想使用 while 循環,則可以執行以下操作:

def get_names(num_names):
  names = []
  i = 1
  while i <= num_names: # equivalent to `for i in range(1, num_names + 1):`
    current_name = input(f"Please enter name {i}: ")
    names.append(current_name)
    i += 1
  return names


def main():
  num_names = int(input("How many names are to be entered? "))
  names = get_names(num_names)
  print(f"The names are: {names}")


if __name__ == '__main__':
  main()

示例用法:

How many names are to be entered? 3
Please enter name 1: Adam
Please enter name 2: Bob
Please enter name 3: Charlie
The names are: ['Adam', 'Bob', 'Charlie']

這正是for循環的 for - 循環“for”一定次數。 while循環用於無限循環,在這種循環中您會一直循環,直到某些事情不再正確為止。

盡管如此,看到兩者可能會有所啟發,因此您可以更好地了解差異。 這是for循環。 它將循環k次。 有關更多詳細信息,請參閱Python wiki

k = int(input ("How many names?\n"))

def names():
    lst = []
    for i in range(k):
        name = input("Enter name:")
        lst.append(name) # I'm assuming you want to add each name to the end of lst
    return lst
names()

這與while循環相同。 循環一直持續到循環條件不為真,因此您只需要提出一個條件,該條件對前k循環為真,之后不成立。 這將:

k = int(input ("How many names?\n"))

def names():
    lst = []
    i = 0
    while i < k:
        name = input("Enter name:")
        lst.append(name) # I'm assuming you want to add each name to the end of lst
        i += 1
    return lst
names()

請注意,在while循環中,您必須自己初始化和遞增迭代器 ( i ),這就是for循環更適合的原因。

最后,請注意這兩個示例如何使用break break是結束循環的好方法,但如果沒有必要,那么最好不要使用它 - 通常它僅用於通過異常結束循環(即,出於某種原因,這不是主循環條件)。 將它用於正常的循環結束會導致更少的邏輯代碼更難遵循。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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