打破循环或在特定条件下继续循环 (Python)
Breaking out of a loop or continuing it under certain conditions (Python)
我对 Python 有点陌生,所以如果这是一个非常简单的问题,我提前表示歉意,但我已经尝试了一段时间来解决这个问题。
简而言之,我的代码是提示用户是否正确地写下了几个值,如果正确的话,我希望循环继续,以便可以将这些值保存到数据库中。如果他们没有,我希望代码循环回到 while 循环的顶部,以便他们可以重新输入值。
出于某种原因,当我输入 'no' 时,它无论如何都会进入循环,我该如何解决这个问题?
下面是代码:
while True:
clear()
print("\nPlease input the required data.\n")
in_name = input('Name: ')
in_email = input('Email: ')
in_address = input('Address: ')
clear()
print("\nDoes this look correct?\n")
print("#--START--#\n")
print("Name: " + in_name)
print("Email: " + in_email)
print("Address " + in_address)
print("\n#---END---#\n")
validate == input(">>> ")
if validate == "no":
continue
elif validate == "yes":
print("/nAttempting to copy to the database...")
cursor.execute("""
INSERT INTO contacts(name, email, address)
VALUES (?,?,?)
""", (in_name, in_email, in_address))
conn.commit ()
print ( 'Data entered successfully.\n' )
break
(我应该注意到这个编写程序是一个更大程序的一部分,循环嵌套在另一个充当主菜单的循环中,也许这可能会有所帮助。)
关键字 continue 将带你回到下一个迭代而不完成当前的迭代,例如。
for i in range(5):
if i == 2:
continue
print(i * 5)
这意味着当 i 为 2 时,它不会打印 (i=2 * 5),而是上升到 i=3 处开始下一个循环。输出将是
0
5个
15
20
如果你使用break,一旦到达这个关键字,它就会完全停止并退出迭代。
我认为您正在寻找关键字 pass。
'while True:' 将始终为 True,这意味着循环将永远进行下去。我相信您需要跳出循环才能停止。根据 Jorge Alvarez 的回答,即使将 'continue' 更改为 'pass' 也会让循环永远持续下去。
如果我理解正确,您需要更改初始 'while True:' 语句以测试验证是否等于 'no' 或 'yes'.
我对 Python 有点陌生,所以如果这是一个非常简单的问题,我提前表示歉意,但我已经尝试了一段时间来解决这个问题。
简而言之,我的代码是提示用户是否正确地写下了几个值,如果正确的话,我希望循环继续,以便可以将这些值保存到数据库中。如果他们没有,我希望代码循环回到 while 循环的顶部,以便他们可以重新输入值。
出于某种原因,当我输入 'no' 时,它无论如何都会进入循环,我该如何解决这个问题? 下面是代码:
while True:
clear()
print("\nPlease input the required data.\n")
in_name = input('Name: ')
in_email = input('Email: ')
in_address = input('Address: ')
clear()
print("\nDoes this look correct?\n")
print("#--START--#\n")
print("Name: " + in_name)
print("Email: " + in_email)
print("Address " + in_address)
print("\n#---END---#\n")
validate == input(">>> ")
if validate == "no":
continue
elif validate == "yes":
print("/nAttempting to copy to the database...")
cursor.execute("""
INSERT INTO contacts(name, email, address)
VALUES (?,?,?)
""", (in_name, in_email, in_address))
conn.commit ()
print ( 'Data entered successfully.\n' )
break
(我应该注意到这个编写程序是一个更大程序的一部分,循环嵌套在另一个充当主菜单的循环中,也许这可能会有所帮助。)
关键字 continue 将带你回到下一个迭代而不完成当前的迭代,例如。
for i in range(5):
if i == 2:
continue
print(i * 5)
这意味着当 i 为 2 时,它不会打印 (i=2 * 5),而是上升到 i=3 处开始下一个循环。输出将是 0 5个 15 20
如果你使用break,一旦到达这个关键字,它就会完全停止并退出迭代。 我认为您正在寻找关键字 pass。
'while True:' 将始终为 True,这意味着循环将永远进行下去。我相信您需要跳出循环才能停止。根据 Jorge Alvarez 的回答,即使将 'continue' 更改为 'pass' 也会让循环永远持续下去。
如果我理解正确,您需要更改初始 'while True:' 语句以测试验证是否等于 'no' 或 'yes'.