1

我只是想进入 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
4

4 回答 4

7

A Byte of Python详细介绍了 Python 3。这本书还有一个 2.X 版本,可以帮助比较和对比语言的差异。

要解决您的问题,您需要将输入转换为整数。它默认存储为字符串。

num = int(input("Enter a number: "))
num2 = int(input("Enter a number: "))
于 2009-05-21T22:50:00.563 回答
3

你没有说你得到了什么- 我猜测numnum2连接,因为input返回一个字符串。添加两个字符串只是将它们连接起来。如果您期望numnum2表示整数,则可以使用int将字符串转换为整数:

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

你可能会得到更好的结果。请注意,仍有更好的错误检查空间,但这可能会让您入门。

要尝试的另一件事-在您的末尾添加一行,__main__如下所示:

add(4, 3)

看看打印了什么。这将告诉您故障是与您的输入例程有关add还是与您的输入例程有关。

当然,这些都没有为您提供资源——在线文档没有帮助吗?如果您还没有,我将从教程开始。

于 2009-05-21T22:53:31.087 回答
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
于 2009-05-21T22:59:46.190 回答
0

Mark Summerfield 有一本 Addison-Wesley 的书,名为“Programming in Python 3”,我发现它是我读过的最好的 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)
于 2009-05-21T22:54:11.007 回答