我正在尝试将用户提供的字词(例如"orange"
)与我在文本文件中的字词列表进行比较,如下所示:
menu.txt
apple
banana
orange
grape
mango
用户输入来自easygui.enterbox
。我永远不会得到我期望的结果,因为它很难比较字符串。这是我的代码。
import easygui
count = 0
dish = easygui.enterbox("enter your favourite dish:")
with open("menu.txt") as f:
content = f.readlines()
for item1 in content:
if item1 == dish :
easygui.msgbox("order taken.thankyou")
count = count + 1
continue
if count == 0 :
easygui.msgbox("plz order some other item")
答案 0 :(得分:1)
f.readlines()
返回包含行结尾的项目。您想要.strip()
换行符和额外空格。 else:
循环有for
个;你想在这里使用它;如果找到匹配,则break
退出循环; else
报告错误。另外,缩进4个空格,这是标准。
import easygui
dish = easygui.enterbox("enter your favourite dish:")
with open("menu.txt") as f:
content = f.readlines()
for item1 in content:
item1 = item1.strip()
if item1 == dish:
easygui.msgbox("order taken. thankyou")
# it can match 1 dish only; so we can exit now
break
else:
easygui.msgbox("plz order some other item")
答案 1 :(得分:0)
首先,你不需要readlines()
循环你的线,然后你需要在比较之前strip
你的线!因为那些包含换行符\n
!
import easygui
count = 0
dish = easygui.enterbox("enter your favourite dish:")
with open("menu.txt") as f:
for item1 in f:
if item1.strip() == dish :
easygui.msgbox("order taken.thankyou")
count = count + 1
continue
if count == 0 :
easygui.msgbox("plz order some other item")
答案 2 :(得分:0)
可能需要在项目和菜单上添加.strip()以确保所有空格或行尾符号不属于字符串