我正在尝试编写一个程序,您可以在其中输入一个数字,然后输入您想要的数字乘以及多少次。在此之后,您可以选择所需的#步骤以及该步骤的编号:
numbr= int(raw_input("pick a number: "))
mult= int(raw_input("keep multiplying by what: "))
listy= []
ff= 1
while x < 999999999999999999999999999:
numbr *= mult
listy.append(x)
ff += 1
cc = int(raw_input("what number do you want: "))
print listy[cc-2]
目前它只能达到那么大的数字。如何输出用户想要的#步骤?如果我在x&gt; 1,然后它只是加载,甚至不允许用户输入他们想要的东西。我该怎么办?
答案 0 :(得分:1)
首先,计算机内存有限,通常应该避免使用比您绝对需要的更多的计算机内存。特别是问题,您根本不需要中间值 - 如果只需要一个数字,为什么要列出一个列表?
另外,对样式的一些随机评论:尝试使变量不言自明,并避免在必要时跳过字母或缩短内容。无论如何,这是一个如何做到这一点的例子:
number= int(raw_input("pick a number: "))
multiplier = int(raw_input("keep multiplying by what: "))
times = int(raw_input("multiply how many times: "))
x = 0
while x < times:
number *= multiplier
x += 1
print(number)
但有一点,你不必为此使用while循环,因为for _ in range(times)
也能完成这项工作,而且更具可读性。这里的_
是一个变量名,通常用于我们不需要的值,例如: a&#34;丢弃&#34;变量,因此代码变为:
number= int(raw_input("pick a number: "))
multiplier = int(raw_input("keep multiplying by what: "))
times = int(raw_input("multiply how many times: "))
for _ in range(times):
number *= multiplier
print(number)
此外,如果你观察到你正在做什么样的数学运算,可以进一步降低代码的复杂性,因为你实际上是将数字乘以另一个数字的幂,例如原始代码中的numbr * mult^cc
。由于Python中的权限运算符为**
,因此最终代码为:
number= int(raw_input("pick a number: "))
multiplier = int(raw_input("keep multiplying by what: "))
times = int(raw_input("multiply how many times: "))
print(number * multiplier ** times)
我发布的代码与您的代码有所不同,因为它不会将原始数字作为序列的一部分计算,但是,我将把它作为练习留给您,因为它是不是很难;)
答案 1 :(得分:0)
每次乘以一个数字,都会将其附加到列表中。您的列表正在跟踪所有999999999999999999999999999条目。随着条目越来越大,它们的速度非常快,每个条目将占用更多的内存空间。常规int将从8位开始。
你应该让程序采取用户想要的任何步骤,并使用公式计算它,而不是生成到那一点的所有值。我认为公式是:number * mult ^ cc。