首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误的条件匹配和输出

错误的条件匹配和输出
EN

Stack Overflow用户
提问于 2017-12-02 19:14:02
回答 2查看 24关注 0票数 0
代码语言:javascript
复制
import os
import sys
import subprocess
from subprocess import call
import sys, termios
print "A list of food that we recommend while you are in Rajasthan \n"
print "> Dal Bati Churma"
print "> Laal Maas"
print "> Gatte ki Khichdi"
print "> Rajasthani Kadi"
print "> Gatte ka Pulao"
print "> Churma Ladoo"
print "> Badam ka Halwa"
print "> Gujia"
print "I can show you a few food images"
show=raw_input("What do you want to see? \n")
while 1:
    if show is 'Gujia' or 'gujia': 
        call(['bash','gujia.sh'])
        termios.tcflush(sys.stdin, termios.TCIOFLUSH)
        break
#   subprocess.call(["gujia.sh"])
    elif input is 'Dal Bati Churma' or 'dal bati churma':
        call(['bash','dbc.sh'])
        break
#   subprocess.call(['dbc.sh'])
    elif input is 'Laal Maas' or 'laal maas' or 'lal maas':
        call(['bash','lm.sh'])  
        break   
#   subprocess.call(['lm.sh'])
    elif input is 'Gatte ki Khichdi' or 'gatte ki khichdi':
        call(['bash','gkk.sh'])
        break
#   subprocess.call(['gkk.sh'])
    elif input is 'Rajasthani Kadi' or 'rajasthani kadi':
        call(['bash','rk.sh'])
        break
#   subprocess.call(['rk.sh'])
    elif input is 'Gatte ka Pulao' or 'gatte ka pulao':
        call(['bash','gkp.sh'])
        break
#   subprocess.call(['gkp.sh'])
    elif input is 'Churma Ladoo' or 'churma ladoo':
        call(['bash','cl.sh'])
        break
#   subprocess.call(['cl.sh'])
    elif input is 'Badam ka Halwa' or 'badam ka halwa':
        call(['bash','bkh.sh'])
        break
#   subprocess.call(['bkh.sh'])
    else: 
        print "I am not sure what you want?"
os.system("python food.py")
print "Now don't wait up and get something to eat"

我正在尝试匹配一个字符串"Gujia“,然后执行一个与它相关的特定shell脚本,但是无论我输入什么,它总是运行第一个循环,我尝试注释掉"Gujia”case,但它仍然继续调用顶部的if/case if循环

EN

回答 2

Stack Overflow用户

发布于 2017-12-02 19:27:58

代码语言:javascript
复制
show=raw_input("What do you want to see? \n")
while 1:
    if show in ('Gujia', 'gujia'): 
        call(['bash','gujia.sh'])
        termios.tcflush(sys.stdin, termios.TCIOFLUSH)
        break

尝试上面的方法,它将会工作,

如果显示在('words','...','....','...')它将搜索单词,如果匹配其中的一个,则执行代码。

票数 0
EN

Stack Overflow用户

发布于 2017-12-02 19:41:44

你似乎犯了几个错误,如下所示。

我认为

  1. show=raw_input("What do you want to see? \n")需要在while 1循环中,为了进行字符串比较,你需要使用

,sadly.

  1. show is 'Gujia' or 'gujia'==,实际上是(show is 'Gujia') or ('gujia')'guija'不是空字符串,它总是正确的。
  2. 有很多输入,但可能‘elif input ...’是‘elif input ...’,不是吗?

因此,将这些条件放在一起:

代码语言:javascript
复制
while 1:
    show=raw_input("What do you want to see? \n")
    show = show.lower() # translate strings to lower case.
    if show == 'gujia': 
        call(['bash','gujia.sh'])
        termios.tcflush(sys.stdin, termios.TCIOFLUSH)
#   subprocess.call(["gujia.sh"])
    elif show == 'dal bati churma':
        call(['bash','dbc.sh'])
    ...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47607294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档