带有“for循环”的3n + 1序列

时间:2017-10-04 04:51:03

标签: python python-3.x

这是我写的代码

def seq3np1(n):
    count = 0

    while(n != 1):

        if(n % 2) == 0:        # n is even
            n = n // 2
            count += 1

        else:                 # n is odd
            n = n * 3 + 1
            count += 1
    return count

def main():

    num = int(input("what number do you want to put?: "))
    start = int(input("Number for upper bound: "))
    for i in range(1, start+1):
        count = seq3np1(num)
    print("This is the starting number: ", num)
    print("Number of iterations:", count)

main()

我需要做的是:

•要求用户提供用于范围上限的值

•使用名为start的迭代变量创建for循环,该变量提供从1到(并包括)用户提供的上限的值。

•为每个start值调用seq3np1函数一次。

•编写一个print语句,打印start值和迭代次数。

但是我的函数没有为每个start值调用seq3np1函数。

我的for循环功能有问题吗?

另外,我需要创建图形数据。但是,我应该在main函数中使用setworldcoordinates函数吗?或者我是否为图形创建了另一个函数?

1 个答案:

答案 0 :(得分:1)

您只需在for循环中打印count,然后拨打count = seq3np1(i)而不是seq3np1(num)

def main():
    start = int(input("Number for upper bound: "))
    for i in range(1, start+1):
        count = seq3np1(i)
        print("Number of iterations:", count)