高级冰雹-嵌套循环/组合

时间:2019-02-13 12:35:21

标签: python loops nested

生成遵循以下模式的冰雹序列:

如果x是偶数-> x / 2 如果x是奇数-> [a] x + [b]

其中a和b是整数值{0,...,10},允许a和b的121种可能组合。我需要列出序列是否对所有1000个x值收敛

我正在使用python解决问题,我是使用python进行编码的初学者,但是学习能力强,需要有关如何解决的指南

`for n in range(1,1001):
for i in a:
    for j in b:
         while  j != 1 & i != 1:
             print ("a:", i, "b:", j)
             if j % 2 == 0:
                 j = j / 2
                 length = length + 1
             else:
                n = (n * j) + i     
             if n == 1:
                print (n)

'

上面的方法可以运行,但是不能满足我的要求。它只是保持循环整数1而不会越过它

2 个答案:

答案 0 :(得分:0)

我在您的代码中看到以下问题:

  • range的用法,range不接受list作为参数,当for i in a:a时,您应该使用list,重新处理所有相应地for
  • 断定的while语法:您的:中有太多while,应该是一个:(最后)
  • 可能缩进的缩进:请注意if与对应的else没有对齐,请记住,在Python语言中缩进至关重要。
  • j = j / b将产生错误-您无法将int除以list
  • 您永远不会定义n,因此n = (n * a) + 1和其他所有带有n的行都会产生错误

请记住,我的问题清单可能不完整

答案 1 :(得分:0)

'a = [0,1,2,3,4,5,6,7,8,9,10] b = [0,1,2,3,4,5,6,7,8,9,10]

对于范围(1,1001)中的n:     对于我在:         对于b中的j:              而j!= 1&i!= 1:                  打印(“ a:”,i,“ b:”,j)                  如果j%2 == 0:                      j = j / 2                      长度=长度+ 1                  其他:                     n =(n * j)+ i
                 如果n == 1:                     打印(n)'

更新...我希望仍然能够理解它何时收敛并且不会移动到下一个值