簡體   English   中英

使用帶范圍的 for 循環填充空列表時檢查用戶輸入

[英]Check for user input while filling an empty list using a for loop with range

雖然找不到答案,但我確實花了一些時間尋找答案。 我敢肯定,我在這里的第一個問題有點明顯......我只是無法確定答案。

我正在嘗試編寫此代碼,以便當用戶輸入此列表中已有的名稱時,打印語句將顯示“請輸入唯一名稱”或類似的內容。然后循環回到開頭而不影響總共6個輸入。 我嘗試玩一個while循環和幾個for循環,但我做錯了。

感謝閱讀和回答!

name_list = []
question = "Please enter a name: "

for i in range(6):
    name_list.append(input(question))

for name in name_list:
    print("- " + name.title())
name_list = []
added_new_name = 0
while True:
    new_name = input("Please enter a name: ")
    if new_name.lower() in name_list:
        print(f"{new_name} is already known! Please use a unique name.")
        continue
    else:
        print(f"Added {new_name.title()} to our database!")
        added_new_name += 1
        name_list.append(new_name.lower())
        if added_new_name >= 6:
            print("Done adding names!")
            print(f"Final Names:")
            for name in name_list:
                print(name)
            break

這個 for 循環將一直運行,直到輸入了 6 個名稱。 正在發生的事情是使用continue 和 break 語句,然后使用一個單獨的計數器來查找添加了多少名稱,如果給出了唯一名稱,我會增加該計數器並將小寫的名稱添加到name_list並檢查是否new_name在我剛剛做的列表中: if new_name.lower() in name_list檢查小寫 new_name 是否在我們僅將小寫字符串附加到的列表中。

這是一些更具可讀性的代碼。

names = []

while len(names) < 6:
    name = input("Please enter a name:\n").strip() # Remove spaces before/after

    if name.lower() in [x.lower() for x in names]:
        print("Name already in list, try again")
    else:
        names.append(name)

print("Names:\n" + "\n".join(names))

您不需要 break/continue 語句。 這不是使用它們的情況。將用戶輸入更改為小寫也會破壞某些名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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