粘贴35660位10000!报错,设置sys.set_int_max_str_digits(0)仍无效
解决大整数字面量触发的SyntaxError问题
问题原因
你遇到的错误是因为Python解析器在读取代码的阶段就会检查整数字面量的长度,此时你写的sys.set_int_max_str_digits(0)还没执行,所以这个设置根本没生效,直接触发了语法错误。
可行解决方案
方案1:从文本文件读取大数字(推荐)
不要把3万多位的数字直接粘贴到代码里,先把数值保存成一个文本文件(比如10000_fact.txt),然后用代码读取转换:
import sys # 先取消转换限制 sys.set_int_max_str_digits(0) # 读取文件中的数字字符串 with open('10000_fact.txt', 'r', encoding='utf-8') as f: num_str = f.read().strip() # 转换为整数 big_fact = int(num_str)
方案2:用多行字符串拼接后转换(适合必须写在代码里的场景)
如果一定要把数字放在代码里,拆成多个字符串片段拼接,再在运行时转换(注意必须先设置sys参数):
import sys sys.set_int_max_str_digits(0) # 把大数字拆分成多个字符串片段,用括号拼接 fact_str = ( "1027373365776159953236906227366875333659668900033242776327228388708023839781932761998837808024256950448265089535960098070868960876969" "696969...这里补上剩下的所有数字片段" ) big_fact = int(fact_str)
内容的提问来源于stack exchange,提问作者Pinteco
相关产品推荐
相关产品推荐

