我只是想进入python,但我发现很难找到任何Python 3的资源。到目前为止我所有的都是diveintopython3.org,而且它有限。无论如何,我只是试图通过做一些非常基本的东西来感受语言,但我无法弄清楚为什么这个小程序不会做我想要的,即添加2个数字。我相信这里有人知道如何修复它,但是非常感谢在Python 3中包含教程的任何其他资源:
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 :(得分:7)
A Byte of Python详细介绍了Python 3。本书还有一个2.X版本,可以帮助比较和对比语言的差异。
要解决您的问题,您需要将输入转换为整数。它默认存储为字符串。
num = int(input("Enter a number: "))
num2 = int(input("Enter a number: "))
答案 1 :(得分:3)
你没有说出你做什么得到 - 我猜是num
和num2
连接,因为input
返回一个字符串。添加两个字符串只是连接它们。如果您希望num
和num2
表示整数,则可以使用int
将字符串转换为整数:
num = int(input("Enter a number:")
num2 = int(input("Enter a number:")
你可能会得到更好的结果。请注意,仍然有更好的错误检查空间,但这可能会让您入门。
要尝试的另一件事 - 在__main__
的末尾添加一行,如下所示:
add(4, 3)
看看打印的内容。这将告诉您错误是add
还是输入例程。
当然,这些都没有为您提供资源 - 在线文档没有帮助吗?我会从tutorial开始,如果你还没有。
答案 2 :(得分: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
答案 3 :(得分:0)
Mark Summerfield写的一本名为“Python 3编程”的Addison-Wesley书,我发现它是我读过的最好的Python书。对于你来说,一件好事,我想,Summerfield并没有带来2.X和3.x之间的差异,所以有人拿起Python就可以获得(新的和改进的)Python的不间断视图。除此之外,他解释了其他书籍 - 在我的情况下来自1.X ---要么从未接触过,要么(我认为)错误陈述。关于自定义异常的段落让我摆脱了困境,他对*和**的处理作为解包操作员为我清除了相当大的精神迷雾。一流的书。
顺便说一下,有一个名为sys的模块可以执行有用的操作,例如让您访问命令行参数。那些args是(子)字符串,而另一天我必须使用int(),正如评论者dkbits所说,要使用它们。 (type()函数告诉你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)