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