Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 而无限?_Loops_For Loop_While Loop - Fatal编程技术网

Loops 而无限?

Loops 而无限?,loops,for-loop,while-loop,Loops,For Loop,While Loop,我试图写一个程序,你可以输入一个数字,然后你想让它乘以多少次。在此之后,您可以选择所需的步骤以及该步骤的编号: 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)

我试图写一个程序,你可以输入一个数字,然后你想让它乘以多少次。在此之后,您可以选择所需的步骤以及该步骤的编号:

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]
numbr=int(原始输入(“选择一个数字”))
mult=int(原始输入(“继续乘以:”)
listy=[]
ff=1
当x<999999999999999999999时:
numbr*=mult
listy.append(x)
ff+=1
cc=int(原始输入(“您想要什么号码:”)
打印列表[cc-2]

目前它只上升到那个大数字。我如何让它输出用户想要的任何步骤?如果我在x>1的时候这样做,那么它只是加载,甚至不允许用户输入他们想要的内容。我能做什么?

每次将一个数字相乘时,都会将其添加到列表中。您的列表将跟踪所有999999999999999999999999条目。随着条目变得越来越大,每个条目都会占用更多的内存空间。常规整数将从8位开始


您应该让程序采取用户想要的任何步骤,并使用公式计算,而不是生成到该点的所有值。我认为公式应该是:number*mult^cc。

首先,计算机内存是有限的,通常应该避免使用超出绝对需要的内存。特别是有问题的时候,你根本不需要中间值——如果你只需要一个数字,为什么还要列一个清单呢

另外,一些关于风格的随机评论:尽量使变量不言自明,并避免在必要时跳过字母或缩短内容。无论如何,这是一个如何实现的示例:

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)
此外,如果您观察自己在做什么样的数学运算,就有可能进一步降低代码的复杂性,因为您实际上是将一个数字乘以另一个数字的幂,例如原始代码中的
numbr*mult^cc
。由于power运算符在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)

我发布的代码与您的代码有一点不同,因为它不将原始数字作为我们序列的一部分,但好吧,我将把它作为练习留给您,因为这不是一个很难的;)

你的代码完全被破坏了,但不管怎样,你能澄清你到底想要什么吗?你想用
numbr
乘以
mult
cc
的次数,还是……?你说的破碎是什么意思?我想让'numbr'乘以'mult',然后当他们选择他们的'cc'时,它会转到该步骤上的内容。。。例如:numbr=2,mult=2,cc=4等于16。因为2,4,8,16,32,64,第四个(cc)是16。在现实编程中,您将面临数字限制。使用天文数字大的整数值通常需要使用一些特殊的大整数库。另外,计算机没有无限的内存,所以不能在数组中存储无限量的计算。。。
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)