2014-11-23 204 views
0

我對Python(和編程)很陌生,只是試着做一個程序來轉換小數。我已經定義了一個函數,因爲我希望稍後在程序中重用它,但是我有一個問題將函數的結果傳遞給程序的其餘部分。從函數返回值

print "For decimal to binary press B" 
print "For decimal to octal press O" 
print "For decimal to hexadecimal press H" 

def checker(n): 
    choice = n 
    while choice not in ("B", "O", "H"): 
     print "That is not a choice." 
     choice = str.upper(raw_input("Try again: ")) 
    else: 
     return choice 

firstgo = str.upper(raw_input("Enter your choice: ")) 
checker(firstgo) 

if choice == 'B': 
    n = int(raw_input("Enter the number to be converted to binary: ")) 
    f = bin(n) 
    print n, "in binary is", f[2:] 
elif choice == 'O': 
    n = int(raw_input("Enter the number to be converted to octal: ")) 
    f = oct(n) 
    print n, "in octal is", f[1:] 
elif choice == 'H': 
    n = int(raw_input("Enter the number to be converted to hexadecimal: ")) 
    f = hex(n) 
    print n, "in hexadecimal is", f[2:] 
+0

什麼是你的問題/問題/堆棧跟蹤? – bereal 2014-11-23 19:13:26

回答

1

您需要保存函數返回的值。 做這樣的事情:

choice = checker(firstgo) 

然後保存結果從功能回來了。

您聲明的每個變量僅在您聲明的函數的範圍內可用 因此當您在函數檢查器外部使用choice時,程序不知道選擇是什麼,這就是爲什麼它不會工作。

+0

我在哪裏添加該行?在功能內還是外面? – MHogg 2014-11-23 19:18:40

+0

當然功能的一面。這是您保存函數結果並在函數外部使用它的方法。只要你在函數內部使用了東西,你就不能在它之外使用它們。 – Idan 2014-11-23 19:20:28

+0

謝謝你的幫助! – MHogg 2014-11-23 19:26:16

0

相反的:

checker(firstgo) 

您需要:

choice = checker(firstgo) 

當你擁有了它,通過checker返回的值丟失。由checker定義的choice變量與其外部定義的變量不同。您可以對不同的範圍中定義的不同變量使用相同的名稱。這樣你就不用擔心同一個名字可能已經在程序的其他地方被使用了。

+0

謝謝你的幫助! – MHogg 2014-11-23 19:41:52