2009-05-21 84 views
1

我只是想進入python,但我發現很難找到任何Python 3的資源。到目前爲止,我所擁有的僅僅是diveintopython3.org及其限制。無論如何,我只是想通過一些非常基本的東西來體驗語言,但我無法弄清楚爲什麼這個小程序不會做我想要的,就是增加2個數字。我敢肯定,這裏有人知道如何解決它,而是包含在Python 3教程任何其他資源將不勝感激:尋求幫助,今天剛剛開始使用Python。 (3.0)

def add(num=0,num2=0): 
    sumEm = (num+num2) 
    print (sumEm) 

if __name__ == '__main__': 
    num = input("Enter a number: ") 
    num2 = input("Enter a number: ") 
    add(num,num2) 

輸出:

Enter a number: 23 
Enter a number: 24 
23 
24 
+0

我沒有安裝python3,但這對Python 2.5的正常工作... – 2009-05-21 22:54:06

+0

@sharth:哇,我想,「一」的區別在2.5和3.0之間。我也有2.5的正確結果。 – OscarRyz 2009-05-21 22:59:18

回答

7

A Byte of Python適用於Python 3的細節。這本書還有一個2.X版本,可以幫助比較和比較語言的差異。

要解決您的問題,您需要將輸入轉換爲整數。它默認存儲爲一個字符串。

num = int(input("Enter a number: ")) 
num2 = int(input("Enter a number: ")) 
3

你沒有說你 GET - 我猜numnum2級聯,作爲input返回一個字符串。添加兩個字符串只是連接它們。如果你希望numnum2表示整數,你可以使用int的字符串轉換成整數:

num = int(input("Enter a number:") 
num2 = int(input("Enter a number:") 

而且你可能會得到更好的結果。請注意,仍然有更好的錯誤檢查空間,但這可能會讓您開始。其他

一件事嘗試 - 在你__main__像這樣的末尾添加一行:

add(4, 3) 

,看看會打印。這會告訴你錯誤是add還是你的輸入例程。

當然,這些都沒有爲您提供資源 - 在線文檔無法提供幫助嗎?如果你還沒有,我會從tutorial開始。

0

有一個由Mark Summerfield編寫的Addison-Wesley書,名爲「Programming in Python 3」,我發現它是我讀過的最好的Python書。我想,對於你來說,一件好事就是Summerfield不會在2.X和3.x之間產生差異,所以只有剛接觸Python的人才能夠獲得(新的和改進的)Python的不間斷視圖。除此之外,他還解釋了其他書籍 - 在我的案例中來自1.X--或者從未涉及或者(我認爲)錯誤陳述。關於定製例外的段落讓我擺脫了困境,他把*和**作爲拆包運營商的待遇爲我清除了相當大的精神迷霧。一流的書。

順便說一句,有一個名爲sys的模塊可以做有用的事情,比如讓你訪問命令行參數。這些參數是(子)字符串,並且有一天我不得不使用int()作爲dkbits的評論者來使用它們。 (類型()函數告訴你的Python認爲一個變量是什麼類型的。)我有:

import sys 

#Parse the command line. 
if len(sys.argv) != 4: 
    print "Usage: commandName maxValueInCell targetSum nCellsInGroup" 
    exit() 
else: 
    maxv = int(sys.argv[1]) 
    tgt = int(sys.argv[2]) 
    nc = int(sys.argv[3]) 
print "maxv =",maxv, "; tgt = ",tgt, "; nc = ",nc 
print type(sys.argv[1]) #strings 
print type(sys.argv[2]) 
print type(sys.argv[3]) 
print type(maxv)   #ints 
print type(tgt) 
print type(nc) 
1

有趣的是,3個答案,他們沒有正確地解決你的問題。

所有你需要做的是這樣的:

def add(num=0,num2=0): 
    sumEm = (int(num)+int(num2)) # may need the int() because in python 3.0 the manual says it only returns strings 
    return sumEm # use return here not print 
相關問題