我正在尝试解决以下问题:
给定一个整数 n 和 n 个空格分隔的整数作为输入,创建一个由这 n 个整数组成的元组 t 。然后计算并打印 hash(t) 的结果。
我正在使用Python 3。 我的代码是
if __name__ == '__main__':
n = int(input())
integer_list = map(int, input().split())
t = tuple(integer_list)
print(hash(t))
预期输出是3713081631934410656,但我得到-3550055125485641917。我认为我的代码是正确的。为什么我得到不同的输出?
如果我使用 Pypy3,我会得到正确的输出 3713081631934410656 但使用 Python 3 则不然
Python 不承诺元组哈希会产生任何特定的输出。
hash(some_tuple)
不存在“正确”的输出。元组哈希实现可以自由更改,并且在 Python 3.8 中它已经更改了。
您的作业可能是为与您正在测试的版本不同的 Python 版本编写的,没有考虑元组哈希算法是一个实现细节这一事实。
在Python3上运行程序时,您将获得您提到的哈希值。尝试在 Pypy3 上运行它,它对我有用。