2009-05-21 61 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 
相关问题