条件语句不像它应该重定向

时间:2014-03-25 00:52:00

标签: python-2.7 conditional-statements

我是python的新手,我正在使用stript来获取用户输入以重定向到程序的另一部分。我使用条件语句要么返回要么退出。但是当我按下键继续退出时。请帮忙

def infoMenu():
a = '''
    1 = Volume Information
    2 = Volume Status
    3 = Display Peer Status
    4 = CTDB Status
    5 = CTDB Ip
    6 = Display CTDB config file
 '''
print a
a = raw_input('Enter your option: ')

if a == '1':
        option = raw_input('Please enter name of vol: ')
        subprocess.call(['gluster vol ', option, 'info'], shell=False)

elif a == '2':
   option = raw_input('Please enter name of vol: ')
   subprocess.call(['gluster vol ', option, 'status'], shell=False)

elif a == '3':
   subprocess.call(['lvdisplay'], shell=False)
   answer = raw_input('Press 0 to go back or any to exit (default[0]): ')

   if answer == '0':
       printOptions()
   else:
       exit()

elif a == '4':
    option = raw_input('Please enter name of vol')
    subprocess.call(['gluster vol ', option, 'info'], shell=False)

elif a == '5':
    option = raw_input('Please enter name of vol')
    subprocess.call(['gluster vol ', option, 'info'], shell=False)
else:
    exit()

我正在谈论条件陈述3,当我按0时,它想回到开始菜单,其他任何东西都应该退出。我做错了什么。

2 个答案:

答案 0 :(得分:0)

尝试将函数内的所有内容都放到

def function()
    while True:
         everything here

然后更改

    if answer == '0':
         pass
    else:
         break

另外,如果这样做,请将最后的exit()更改为break。

你的问题是该函数只被调用一次,因此所有条件只运行一次,并且不会恢复为一。

答案 1 :(得分:0)

跟踪您的代码:

  1. 运行infoMenu()
  2. 如果用户输入" 3" (返回)
  3. 您的subprocess.call正在运行
  4. 然后要求用户输入新内容
  5. 在此之后,您的代码和您的描述似乎不匹配,因为如果用户输入" 0",您调用的其他函数(不包括在内)称为&# 34;的printoptions()"

    一个超级简单的修复(如果你return会破坏)会重新调用infoMenu代替printOptions来电,但我强烈怀疑你会更好更好的重写。

    如果我尝试做你所描述的事情(使用类似你的风格),我会这样做:

    def infoMenu():
        def thing1():
            pass #do_somethings()
    
        def thing2():
            #do_someotherthings()
            user_input = raw_input('Press 0 to go back or any to exit (default[0]): ')
            if (len(user_input)==0) or (user_input == '0'):
                return
            else:
                exit()
        a="""
        1 = thing1
        2 = thing2
        """
        print a
        user_input = raw_input('Enter your option')
        if user_input == '1':
            thing1()
        if user_input == '2':
            thing2()
    
    while 1:
        infoMenu()