2014-10-09 105 views
-3

我有需要在一開始的用戶輸入一個代碼:運行代碼(Python3,熊貓)

var = input("Do you want A (Type: A) or an B (Type: B)?") 

基於此輸入,它將運行一組特定的代碼。我知道如何做到這一點使用是這樣的:

if var = 'A': 
    run code... 

elif: var = 'B': 
    run other code... 

else: 
    print ('Incorrect Input') 

我的問題是,我居然合併兩個不同的和非常長的組碼連成一片。上述方法的問題是由於Python「if」語句的空白限制 - 我不想手動縮進一千行代碼。有沒有更好的方式來實現這種基於用戶輸入的代碼運行相同的概念,而不需要我縮進一切?

+0

調用函數? – 2014-10-09 22:37:05

+0

不知道爲什麼所有負面downvotes ... – user3682157 2014-10-15 17:20:11

+1

我懷疑這是不明顯的,你已經嘗試過,請參閱http://stackoverflow.com/help/how-to-ask。我喜歡所提供的答案(當我評論「調用函數」時,這就是我的意思)。 – 2014-10-15 17:22:29

回答

1

您可以根據輸入運行功能。

def func_a(): 
    #Do stuff here... 
    return 

def func_b(): 
    #Do stuff here... 
    return 

type = input("A/B: ").lower() 

if type == "a": 
    func_a() 
elif type == "b": 
    func_b() 
else: 
    print("Invalid option.") 

另一種方式可以是使用調用一個os.system()腳本。

if type == "a": 
    os.system("python script_a.py") 
elif type == "b": 
    os.system("python script_b.py") 
else: 
    print("Invalid option.") 

而且,如果我正確理解你的問題,這裏有一種基於用戶輸入使用字典運行函數的方法。這樣你就不需要輸出一百個if-else語句。

types = {"A": func_a, 
     "B": func_b} 

choice = input("A/B: ") 

types[choice]()