2017-10-11 56 views
1

我的代碼中的一個函數需要用戶輸入的二進制數字,而另一個函數將該數字轉換爲10的數字。出於某種原因,我的變量不能正常工作。功能「base2TO10」不識別被定義爲「base2」的用戶輸入。我該如何解決這個問題,讓主要運行我所有的功能?在函數中聲明的用戶輸入變量不在其他函數/在Python中的主要工作?

def isBase2(): 
    flag2 = True 

    while(flag2 == True): 
     base2 = input("Enter a base 2 number: ") 
     try: 
      base2 = int(base2 , 2) 
      flag1 = False 
      return True 
     except ValueError: 
      flag1 = True 
     else: 
      flag1 = True 
    return base2 


**def base2TO10(): 
    b = base2 
    number = 0 
    for idx, num in enumerate(b[::-1]): 
     base2 += int(num)*(2**idx) 
    return number**  


def main(): 

    if printmenu() == "2": 
     askUserValue() 
     isBase2() 
     base2TO10() 
+3

這是因爲你的變量'base2'不在範圍之內。您可以在這裏瞭解[函數範圍](http://python-textbok.readthedocs.io/en/1.0/Variables_and_Scope.html)。 – blakev

+1

您需要了解變量範圍規則。您正在使用局部變量。你*可以*使你的變量全局範圍,但這不是一個好的設計方法。相反,您應該將數據作爲參數並從您的函數返回數據。另外,這是一個術語nitpick,但Python沒有變量聲明 –

回答

-2

您的範圍是關閉的。

我假設你正在聲明變量askUserValue()函數。當你在函數中聲明變量時,它保持在該範圍內。你可以做的是返回的變量,並將其存儲在諸如:

userReturn = askUserValue() 

再折騰,在給

isBase2(userReturn) 

如果您正在使用全局變量,聲明他們(建議不要這麼做)。 這裏有一個幫助的資源:link

+0

仍然不明白爲什麼它被拒絕投票... – Alex

相關問題