【发布时间】:2022-01-17 20:54:10
【问题描述】:
我正在尝试检查用户输入作为字符串是否存在于名为 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 中。我将如何在代码中解决这个问题?此外,我希望能够从用户那里获得一个输入来输入一个类别,所以我不希望“请输入一个类别”出现多次,我只希望代码让它只出现一次。
此外,如果我能知道如何在 tkinter 中完成上述所有操作的代码,我将不胜感激,因为我需要在 GUI 中执行上述操作。我认为您需要有标签并允许用户在屏幕上的框中输入类别。
我尝试编写代码,在获取 tk 屏幕上的输入后尝试检查列表中是否存在用户输入,因为它不足以让我只在 python 控制台中进行检查并且它没有正确执行,所以这里是代码:
import tkinter as tk
from tkinter import ttk
window=tk.Tk()
canvas1 = tk.Canvas(window, width = 400, height = 300)
canvas1.pack()
label1 = Label(window, text="Please enter a category:")
label1.pack()
entry = Entry(window, width=50)
entry.pack()
def for_button():
checkUserInput = entry.get()
button = Button(window, text="Check", command=for_button)
button.pack()
for i in categoriesList:
if button in categoriesList:
categoryExist = Label(window, text="Category exists")
categoryExist.pack()
else:
categoryNotExist= Label(window, text="Category doesn't exist")
categoryNotExist.pack()
window.mainloop()
它使用给出的帖子中代码早期的列表 categoriesList ,我试图让用户在 tk 屏幕上的文本框中输入一个类别,然后在用户可以之前单击“检查”按钮输入“类别不存在”多次出现,这是我不希望代码执行的操作。
【问题讨论】:
-
一个建议,尤其是当
categoriesList很小的时候,改为写print("Category doesn't exist", categoriesList, inputCategories)。这可能会更详细地说明为什么它在列表中找不到输入类别。 -
“如果我能知道如何在 tkinter 中完成上述所有操作的代码,我将不胜感激” - Stackoverflow 不是免费的编码服务。最好的办法是完成 tkinter 教程,然后在遇到问题的特定部分时回到这里。
-
while循环不应在for循环内。实际上,while 循环根本不需要。