Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何用输入中断循环?_Python - Fatal编程技术网

Python 如何用输入中断循环?

Python 如何用输入中断循环?,python,Python,我是Python新手,所以请耐心听我说。我正在尝试编写一个程序,其中包含一个函数,该函数将数字K作为输入,每次读取K个名称,将它们存储到列表中,然后打印它们 不确定是否应该使用“for”或“while”循环,因此我首先尝试使用“while”循环 k = input ("How many names?\n") def names(): lst = [] while True: name = input("Enter name:") if = int

我是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
文件“”,第7行
if=int(k)
^
SyntaxError:无效语法

Python中的等式比较是使用

==
您还需要某种东西来比较int(k)。如果你想计算循环数,你可以这样做

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

因此,循环的
while
之间的区别是:

  • 如果要执行特定次数的操作,或对某个集合中的每个元素执行一次,请使用
    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
,并为每次迭代增加一个变量,直到
x==k
,但这比
for
循环更冗长,更难一目了然。

很好地解释了为什么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()

这正是
for
循环在一定次数上的循环。
while
循环用于不确定循环,在不确定循环中,您会一直循环,直到某些内容不再为真

尽管如此,两者兼而有之可能是有益的,这样你就能更好地理解两者的区别。这是
循环的
。它将循环
k次
。有关更多详细信息,请参阅

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()
k=int(输入(“多少个名称?\n”))
定义名称():
lst=[]
i=0
而我
请注意,在
while
循环中,您必须自己初始化并递增迭代器(
i
),这就是为什么
for
循环更合适的原因


最后,请注意两个示例都没有使用
break
break
是结束循环的好方法,但如果没有必要,最好不要使用它-通常它只用于通过异常结束循环(也就是说,出于某些原因,它不是主循环条件)。将其用于普通循环结尾会导致逻辑代码更少,更难理解。

如果name==int(k)
我认为您缺少了
。另外,for肯定是您要寻找的,而现在您的循环没有多大意义。@lc74我怀疑,因为这会将字符串与int进行比较。您试图用
if=int(k)
表示什么?请注意,在python3
范围中,实际上并没有创建列表。它的行为类似于python2中的
xrange
,也就是说,它被惰性地评估,本质上是一个生成器。
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()