问题出现是因为函数取一个,而10e+99确实是一个。虽然10e + 99当然不是无穷大,因此你不应该期望无穷大在程序执行过程中弹出任何地方,但如果你真的想让你的for循环按原样工作,你可以简单地做range()intfloata=0for i in range(1, int(10e+99)): a += 1 print (a)然而,正如其他用户所指出的那样,我会完全重新考虑你的策略:使用基于范围的for循环来“找出”无穷大的值是行不通的。无穷大不是一个数字。
使用是代码,你可以检查你的变量是否无穷大。import mathinfinity = float('inf')a = 99999999999999999999999999999999if a > infinity: print('Your number is an infinity number')else: print('Your number is not an infinity number')#or you can check with math.isinfprint('Your number is Infinity: ',math.isinf(infinity ))# Also infinity can be both positive and negative 注意:无穷大是无穷大,没有尽头,无论您输入什么值或数字,它都将始终返回false。
以下是如果您更正并执行程序将会发生什么:a=0for i in range(1, 10**100): a += 1 print (a)假设你有一个超级高效的python虚拟机(每个人都知道他们有多高效...)。假设您有一个非常有效的(无界)大整数实现。假设每个循环需要几个机器周期才能以十进制形式打印这些数字(假设只有1000,这在现实中是很不真实的)。假设每个周期大约需要1.0e-10秒(10GHz),这意味着利用并行度实现打印。有了这些不切实际的假设,程序完成已经需要10 ^ 93秒。宇宙的年龄估计小于10^ 18秒。这将是漫长的。现在让我们计算一下它将在400W计算机的基础上吸收的能量。假设所有太阳物质(2e30 kg)都可以转换为计算机的电能(通过E = m c ^ 2),您将消耗大约2 10 ^ 48相当于Sun来执行此计算。在你回头之前,我恳请你:三思而后行!拯救宇宙!