2013-12-14 101 views
-1

我編寫了以模式選擇開始的程序,每當完成一個模式時應該提示此選擇。代碼如下:重複模式選擇

def get_mode(): 
    mode=raw_input('Welcome to Learning Helpmate BETA. Select mode, insert number of wanted mode: \n 1.mode \n 2.mode \n 3.mode\n') 
    return mode 

mode=get_mode() 

if mode =='1': 
    print 'Welcome to mode 1' 
    mode=get_mode() 

if mode =='2': 
    print 'Welcome to mode 2' 
    mode=get_mode() 

if mode =='3': 
    print 'Welcome to mode 3' 
    mode=get_mode() 

我的問題是,當我選擇特定模式並運行它,然後儘量選擇相同的模式再次,我的程序結束,什麼都不會發生。我怎樣才能解決這個問題,而不會覆蓋現有的代碼太多?

謝謝

回答

1

你的問題是,您認爲get_mode()將帶你回到你的代碼的頂部,但它不會。您可以定義模式0將退出,然後您的代碼將是這樣的:

def get_mode(): 
    mode=raw_input('Welcome to Learning Helpmate BETA. Select mode, insert number of wanted mode: \n 1.mode \n 2.mode \n 3.mode\n') 
    return mode 

mode=get_mode() 

while mode != '0': 
    if mode =='1': 
     print 'Welcome to mode 1' 
     mode=get_mode() 

    if mode =='2': 
     print 'Welcome to mode 2' 
     mode=get_mode() 

    if mode =='3': 
     print 'Welcome to mode 3' 
     mode=get_mode() 
1

使用while循環:

def get_mode(): 
    mode=raw_input('Welcome to Learning Helpmate BETA. Select mode, insert number of wanted mode: \n 1.mode \n 2.mode \n 3.mode\n') 
    return mode 

while True: 
    mode=get_mode() 
    if mode == '1': 
     print 'Welcome to mode 1' 
    elif mode == '2': 
     print 'Welcome to mode 2' 
    elif mode == '3': 
     print 'Welcome to mode 3' 
    else: 
     break 
0

你的問題是,所有的if■不要再次獲得當你提示符下執行。爲了解決這個問題,使用while循環:

while True: 
    mode = raw_input("Enter Mode:") 
    if mode == "1": 
     print "Welcome to mode 1" 
     do_stuff_1() 
    elif mode == "2": 
     print "Welcome to mode 2" 
     do_stuff_2() 
    etc.. 

while語句,只要條件爲真執行的代碼塊。由於此處的條件設置爲True,因此此操作將永久運行,因此您可能需要添加中止選項:

mode = "" 
while mode != "q": 
    mode = raw_input("Enter Mode: (or q to abort)") 
    if mode == "1": 
     do_stuff() 
    etc...