2013-09-11 30 views
1

我正在做一個代碼來顯示G.P.的4個初始數字。使用此代碼:Python中的幾何進程2.7

def progG(a1,q): 
    return float(a1), float(a1*q), float(a1*q**2), float(a1*q**3) 

def main(): 
    a1 = input("Informe o valor inicial de sua Progressão Geométrica: ") 
    q = input("Informe a razão de sua Progressão Geométrica: ") 
    print "Os 4 primeiros elementos de uma P.G. de valor inicial %.f e razão %.f são: %.f ." %(a1,q,(progG(a1,q))) 
if __name__ == "__main__":  
    main() 

當我把這個在程序中運行,這讓我的兩個問題,但隨後會出現這樣的錯誤:

Traceback (most recent call last): 
    File "C:\Users\Suzana Maria\Downloads\aula6_ex8.py", line 25, in <module> 
    main() 
    File "C:\Users\Suzana Maria\Downloads\aula6_ex8.py", line 23, in main 
    print "Os 4 primeiros elementos de uma P.G. de valor inicial %.f e razão %.f são: %.f ." %(a1,q,(progG(a1,q))) 
TypeError: float argument required, not tuple 

回答

1

我不說話Poruguese(或這是西班牙語嗎?),但我盡我所能去刪除您的錯誤:

def progG(a1,q): 
    return float(a1), float(a1*q), float(a1*q**2), float(a1*q**3) 

def main(): 
    a1 = input("Informe o valor inicial de sua Progressão Geométrica: ") 
    q = input("Informe a razão de sua Progressão Geométrica: ") 
    print "Os 4 primeiros elementos de uma P.G. de valor inicial %.f e razão %.f são: ." %(a1,q), (progG(a1,q)) 

if __name__ == "__main__":  
    main() 
+0

這是葡萄牙語,我是巴西人。非常感謝您的幫助,它非常完美。 –

+1

這種修復方法很有效,但以這種方式混合使用%-formatting和print-magic-commad會引起混淆 - 當然,它會將句子結束後的最後一個值放在句子中間。更好的辦法是將OP的最後一個'%.f'改爲'%s',它可以得到相同的結果,但不會搞亂順序,而且更容易理解。 – abarnert

2

的問題是,你的函數progG(A1, q)返回一個元組 - 四個值 - 不是一個浮點數,但是你試圖把它打印出來作爲一個浮點數。

你可以嘗試:

geometric_string = ", ".join(["%.f" % x for x in progG(a1, q)]) 

print"Os 4 primeiros elementos de uma P.G. de valor inicial %.f e razão %.f são:", geometric_string 
+0

那麼,我該如何解決這個問題?我很抱歉,我不知道太多,我開始在我的大學上學習關於Python的課程,並且我從來沒有聽說過元組。 –

+0

感謝您的幫助:) –

+0

元組是一個值的集合,所以在你的情況下有四個不同的浮點數。在上面的代碼中,我將它們組合成一個字符串,然後將其打印出來,格式化元組中的每個浮點數。 – Owen

1

的問題是,%.f需要一個浮點數,但是你要給它四個浮點數,幷包裝在一個元組中。

您可以通過使用%s代替%.f解決這個問題,因爲%s採取任何東西:

print "Os 4 primeiros elementos de uma P.G. de valor inicial %.f e razão %.f são: %s ." %(a1,q,(progG(a1,q))) 

的輸出將是這樣的:

Os 4 primeiros elementos de uma P.G. de valor inicial 2 e razão 3 são: (2.0, 6.0, 18.0, 54.0) . 

請注意,你有沒有控制權如何格式化元組中的數字,或者元組本身是如何格式化的。所以你得到2.0而不是2,並且你在整個事情上得到了括號,依此類推。

如果你想要更多的控制,你需要分兩步格式化:首先爲元組構建一個字符串,然後用該字符串代替元組進行最終格式化。擁有完全的控制也意味着你必須做更多的工作,但它也不是太糟糕:

g = ", ".join("%.f" % x for x in progG(a1, q)) 
print "Os 4 primeiros elementos de uma P.G. de valor inicial %.f e razão %.f são: %s ." %(a1,q,g) 

現在:

Os 4 primeiros elementos de uma P.G. de valor inicial 2 e razão 3 são: 2, 6, 18, 54 . 

第一招這裏使用的字符串join方法,該方法接受一系列字符串並將它們連接起來。例如,":".join([1, 2, 3, 4])會給你字符串1:2:3:4。第二個技巧是使用理解將元組的每個成員映射到不同的東西 - 在這種情況下,將每個浮點數x映射到字符串"%.f" % x