难题求解
本帖最后由 一点沙 于 2023-1-24 16:13 编辑小甲鱼在《零基础入门学习Python》第一版里第006讲里的动动手第1道题的答案说系统会输出Memory Overflow 那为啥我的报错了呢???
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
print(2 ** 2 ** 32)
ValueError: Exceeds the limit (4300) for integer string conversion; use sys.set_int_max_str_digits() to increase the limit 这是 3.11 版本新增的功能,限制(除了2的整次幂进制)的数字字符串和整数表示之间的转换的最大长度(即:禁止将太长的数字字符串转换为整型或反之)来减小拒绝服务攻击的攻击面
https://docs.python.org/3/library/stdtypes.html#integer-string-conversion-length-limitation (2**2)**32 != 2**(2**32)
自已理解下 2 ** 2 ** 32 相当于 2 ** (2 ** 32) 我是问为什么我报错了,他没有报 一点沙 发表于 2023-1-23 18:29
我是问为什么我报错了,他没有报
哪只能说明你的电脑没有人家的配置高。python版本也是一个问题 。 一点沙 发表于 2023-1-23 18:29
我是问为什么我报错了,他没有报
这就得看内存大小啦 ba21 发表于 2023-1-23 18:40
哪只能说明你的电脑没有人家的配置高。python版本也是一个问题 。
应该有一条语句可以扩大范围的吧
我去找找 print(2 ** 2 ** 32)
翻了一下老师的答案,也是说这么写会爆内存的:
# 一般很多机子都会在一会儿之后:Memory Overflow,内存不够用。
# 设计到幂操作,结果都是惊人滴。 dolly_yos2 发表于 2023-1-23 19:06
这是 3.11 版本新增的功能,限制(除了2的整次幂进制)的数字字符串和整数表示之间的转换的最大长度(即: ...
我用的就是3.11 本帖最后由 ba21 于 2023-1-23 20:10 编辑
为此不得不去翻开你说的动动手看看。
学习得仔细
输出 Memory Overflow也是报错。不同python可能报不同的错误。
页:
[1]