2013-07-24 102 views
0

我是編程方面的新手。去那裏直接開火。現在我要列出三個代碼模塊:Python - 嘗試使用不同模塊中某個模塊的名稱的值

def GCD(x,y): 
#gives the Greatest Common Divisor of two values. 
while y != 0: 
    r = x 
    while r >= y: #these two lines are used to 
     r -= y #calculate remainder of x/y 
    x = y 
    y = r 
print x 

這是我寫的基於歐幾里德算法GCD的原始程序。它的功能正確。我現在要除去上述兩個註釋行和與呼叫更換另一模塊I製成,其中計算餘數:

剩餘計算器

def xy(x, y): 
#Gives the remainder of the division of x by y. Outputs as r. 
    while x >= y: 
     x -= y 
    r = x 

該程序還正常工作。 我想在我編輯的程序中使用名稱'r'的值。我曾嘗試下面做到這一點,但它會導致問題:

def GCD(x,y): 
import remainder 
#gives the Greatest Common Divisor of two values. 
while y != 0: 
    remainder.xy(x,y) 
    from remainder import r #here is the problem. This line is my attempt at 
          #importing the value of r from the remainder calculating 
          #module into this module. This line is incorrect. 
    x = y 
    y = r #Python cannot find 'r'. I want to use the value for 'r' from the execution 
      #of the remainder calculating module. Attempts to find how have been 
      #unsuccessful. 
print x 

我需要找出如何在我的第二個GCD模塊使用「R」的計算值從我的XY模塊。我曾嘗試使用

global r 

在我的模塊,雖然我沒有成功。我不確定我是否正確解釋了「全局」的功能。

我將不勝感激您的幫助。

噴氣霍爾特

+1

爲什麼不只是有你的剩餘函數返回'r',而不是試圖設置呢? –

+0

'global'爲名稱提供了一個模塊級的範圍,而不是絕對的全局範圍。所以是的,你誤解了它的功能。返回'r'而不是設置它。如果你能幫到你,你不應該使用'global'。 – 2rs2ts

+0

謝謝,回報做了我想要的。正如我所提到的,我是一個完全新手,並沒有意識到「返回數據」的目的。噴射霍爾特。 –

回答

0

如果我理解正確:

from remainder import xy 
def GCD(x,y): 
    #gives the Greatest Common Divisor of two values. 
    while y != 0: 
     r = xy(x,y) 
     x = y 
     y = r 
    print x 

def xy(x, y): 
#Gives the remainder of the division of x by y. Outputs as r. 
    while x >= y: 
     x -= y 
    return x 
+3

爲什麼你有'從剩餘進口r'在那裏?什麼是'r'?如果它實際上在那裏,它會影響'r'的前一個值,如果它不在那裏,你會得到一個'ImportError'。 – 2rs2ts

+0

+ 1 ^我做了一個快速複製和粘貼工作,並錯過了當我撇取代碼。我會把它拿出來,謝謝你的收穫 – scohe001

相關問題