我正在嘗試檢查用戶輸入作為字串是否存在于名為 categoriesList 的串列中,該串列從名為 categories.txt 的文本檔案中附加類別。如果用戶輸入了一個存在于 categoriesList 中的類別,我的代碼應該能夠列印出“類別存在”,否則“類別不存在”。
這是代碼:
categoriesList = []
with open("categories.txt", "r") as OpenCategories:
for category in (OpenCategories):
categoriesList.append(category)
while True:
inputCategories = input("Please enter a category:")
if inputCategories in categoriesList:
print("Category exists")
break
else:
print("Category doesn't exist")
break
當我運行此代碼時,即使我輸入的類別實際上存在于 categoriesList 中,它總是輸出 Category 不存在。我將如何在代碼中解決這個問題?此外,我希望能夠從用戶那里獲得一個輸入來輸入一個類別,所以我不希望“請輸入一個類別”多次出現,我只希望代碼讓它只出現一次。
此外,如果我能知道如何在 tkinter 中執行上述所有操作的代碼,我將不勝感激,因為我需要在 GUI 中執行上述操作。我認為您需要有標簽并允許用戶在螢屏上的框中輸入類別。
uj5u.com熱心網友回復:
當您從文本檔案中讀取時,您還會讀取特殊字符,'\n'因此必須將其洗掉。這可以按照下面的代碼所示完成。
我還稍微調整了您的回圈布局,因為您不希望while回圈內有for回圈 - 否則您將在添加所有類別之前搜索串列。
categoriesList = []
with open("categories.txt", "r") as OpenCategories:
for category in (OpenCategories):
categoriesList.append(category.strip()) #remove newline, tabs etc
while True:
inputCategories = input("Please enter a category:")
if inputCategories in categoriesList:
print("Category exists")
break
else:
print("Category doesn't exist")
break
您可能還想' '從類別串列中洗掉任何空格。這可以通過替換來完成
category.strip()
和
category.strip().replace(' ','')
您可能還希望將輸入的變數和類別全部設為小寫,以便于比較。這可以使用lower字串上的函式來完成。
例如 inputCategories = inputCategories.lower()
uj5u.com熱心網友回復:
while 回圈不應該在 for 回圈內,并且根本不需要 while 回圈:
with open("categories.txt", "r") as OpenCategories:
categoriesList = OpenCategories.read().splitlines()
# don't need the while loop
inputCategories = input("Please enter a category:")
if inputCategories in categoriesList:
print("Category exists")
else:
print("Category doesn't exist")
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/414109.html
標籤:
下一篇:從字典串列中獲取不同的值串列
