我正在试着写一个程序,你可以输入一个数字,然后你想要它乘以多少,还有多少次。在此之后,您可以选择您想要的#步骤以及该步骤的编号:
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]目前它只上升到这么大的数字。我怎样才能让它输出用户想要的任何# step?如果我这样做,而x> 1,那么它只是加载,甚至不允许用户输入他们想要的内容。我能做什么?
发布于 2015-08-13 22:16:33
首先,计算机内存是有限的,你通常应该避免使用超过你绝对需要的内存。特别是在这个问题上,你根本不需要中间值-如果你只需要一个数字,为什么要列出一个列表呢?
另外,一些关于风格的随机评论:试着让变量变得不言自明,必要时避免跳过字母或缩写。无论如何,我们来看一个如何做到这一点的例子:
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)同样可以完成这项工作,而且更具可读性。这里的_是一个变量名,通常用于我们不需要的值,例如"discard“变量,因此代码变成:
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语言中,power运算符是**,因此最终代码为:
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)我发布的代码与您的略有不同,因为它没有将原始数字作为我们序列的一部分,但是,我将把它留给您作为练习,因为它不是很难;)
发布于 2015-08-13 22:06:19
每次将一个数字相乘时,都是将其追加到列表中。您的列表正在跟踪所有9999999999999999999999999999999条目。随着条目变得越来越大,每个条目都会占用更多的内存空间。一个常规的int将从8位开始。
你应该让程序采取用户想要的任何步骤,并使用公式来计算它,而不是生成到那时为止的所有值。我想公式应该是: number * mult^cc。
https://stackoverflow.com/questions/31990097
复制相似问题