如何中断输入的循环?

时间:2019-06-20 21:16:06

标签: python

我是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

4 个答案:

答案 0 :(得分:1)

Python中的平等比较是通过

完成的
==

您还需要某种东西来比较int(k)。如果您要计算循环次数,可以执行

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

答案 1 :(得分:1)

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,直到{{1} },但比起x == k循环来说,一眼就显得更加冗长和困难。

答案 2 :(得分:1)

@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']

答案 3 :(得分:1)

这正是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循环更适合的原因。

最后,请注意,两个示例都不使用breakbreak是结束循环的一种好方法,但是如果没有必要,那么最好不要使用它-通常,它仅用于异常结束循环(也就是说,出于某种原因,它不是主循环是有条件的)。将其用于正常循环结束会导致逻辑代码更少,难以遵循。