簡體   English   中英

如何在不需要時阻止我的程序讀取第二個 while 循環?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM