Python 如何用输入中断循环?
我是Python新手,所以请耐心听我说。我正在尝试编写一个程序,其中包含一个函数,该函数将数字K作为输入,每次读取K个名称,将它们存储到列表中,然后打印它们 不确定是否应该使用“for”或“while”循环,因此我首先尝试使用“while”循环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
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()