[英]How do I stop my program from reading the second while loop when not needed?
我有一些作業,我不知道如何完成。
給出的任務是編寫一個腳本,要求用戶輸入他的名字,在輸入之后,腳本會檢查輸入的名字是否與預先存在的列表中的任何名字匹配。
如果名稱匹配,腳本會詢問用戶他們是想從列表中刪除該名稱還是保留它。
如果名稱與列表中的任何名稱都不匹配,它會詢問用戶是否願意將其添加到列表中。
該腳本應在最后寫出名稱列表。
我是這樣寫的:
name = input("Please enter your name:")
lk = ['Peti','John','Mary','Claire','Hellen']
while name in lk:
print("Your name is already in our list.")
if name in lk:
bris = input("Would you like to delete your name off our list?[Y/N]:")
if bris == "Y":
lk.remove(name)
print("Your name was removed.")
print(lk)
break
elif bris == "N":
print("OK!",name,"Your name will be saved.")
print(lk)
break
while name not in lk:
doda = input("Your name is not registered on our list, would you like to add it?[Y/N]:")
if doda == "Y":
lk.append(name)
print("Your name has been added.")
print(lk)
elif doda == "N":
print("Alright, goodbye",name,"!")
break
問題是,一旦用戶選擇從列表中刪除他們的名字,我不知道如何停止它,它總是在下一個時間讀取,因為刪除的名稱不再在列表中。
另外,如果這看起來像便便,我很抱歉,我是編碼新手
如果用戶只需要輸入一次,為什么要使用循環?
name = input("Please enter your name:")
lk = ['Peti','John','Mary','Claire','Hellen']
if name in lk:
print("Your name is already in our list.")
bris = input("Would you like to delete your name off our list?[Y/N]:")
if bris == "Y":
lk.remove(name)
print("Your name was removed.")
print(lk)
elif bris == "N":
print("OK!",name,"Your name will be saved.")
print(lk)
else:
doda = input("Your name is not registered on our list, would you like to add it?[Y/N]:")
if doda == "Y":
lk.append(name)
print("Your name has been added.")
print(lk)
elif doda == "N":
print("Alright, goodbye",name,"!")
您的循環結構是問題的根源。 由於您使用的是while
循環,我假設您希望您的腳本循環並不斷詢問新的輸入。 在這種情況下,您將需要一個循環,當您根據某些用戶輸入輸入名稱后,您可以中斷該循環:
lk = ['Peti','John','Mary','Claire','Hellen']
while keep_looping = 'Y':
# check a name
name = input("Please enter a name: ")
if name in lk:
# name in list logic here
else:
# name not in list logic here
# ask user if the loop should continue. Entering 'N' will break the loop
keep_looping = input("Would you like to try another name? (Y/N): ")
您可以重用現有邏輯來檢查列表中的名稱並添加/刪除,但您還希望名稱檢查邏輯作為 if/else 塊,以便每個循環只能滿足一個條件。 否則,當名稱存在並被刪除時,您將遇到同樣的問題。
您還可以進行其他優化,但我會讓您自己解決這些問題。
name = input("請輸入您的姓名:")
lk = ['Peti','John','Mary','Claire','Hellen']
如果在 lk 中命名:
print("your name already present in list")
k= input(("would you like to delete your name from the list: [y/n]:"))
if k=="y":
lk.remove(name)
print("your name is deleted from the list")
print(lk)
else:
print("your name kept as it is in the list")
別的:
print("your name is not present in list")
k= input(("would you like to add your name to the list: [y/n]:"))
if k=="y":
lk.append(name)
print("your name is added to the list")
print(lk)
else:
print("list is kept as it is")
print(lk)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.