比较用户输入与已知字符串

时间:2015-02-22 17:56:26

标签: python string user-interface easygui

我正在尝试将用户提供的字词(例如"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")

3 个答案:

答案 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()以确保所有空格或行尾符号不属于字符串