我试图在列表中插入值,这是while循环的一部分,而不是插入最后一个值替换之前的值,所以列表将始终只有一个值!,我试图添加值不替换它们,这是我的代码:
while X != 1:
resultList = [];
#extList = []
count += 1
if X % 2:
X = 3 * X + 1
elif not X % 2:
X = X // 2 #important to use double slash to have a integer division
print(X)
resultList.insert(count-1, X)
#print("the resultList is " + str(resultList))
#extList.extend(resultList)
print("The inputValue "+str(originalValue)+" took "+str(count)+" calculations to reach 1")
print (resultList)
感谢任何帮助
答案 0 :(得分:3)
在while
循环的每次迭代中,您创建resultList
列表的新实例。
while X != 1:
resultList = [];
...
应替换为
resultList = [];
while X != 1:
...
要在list
的末尾添加新元素,您可以使用append
方法。像
resultList = [];
while X != 1:
if X % 2:
X = 3 * X + 1
else:
X = X // 2 #important to use double slash to have a integer division
print(X)
resultList.append(X)
答案 1 :(得分:2)
问题在于:
while X != 1:
resultList = [];
#etc
您将在循环的每次迭代中重新创建列表。因此,它最后只有一个值,即最后一次迭代中唯一插入的值。
将分配从循环中取出:
resultList = [];
while X != 1:
#etc
..解决了这个问题。
另外请注意,您在此处所做的事情是不必要的:
elif not X % 2:
X = X // 2
您无需重复并颠倒原始状态。您只需将其设为else
。
if X % 2:
X = 3 * X + 1
else:
X = X // 2