Python 3n+;1个带'的序列函数;计数';

Python 3n+;1个带'的序列函数;计数';,python,python-3.x,Python,Python 3.x,这是我现在必须要做的代码 seq3np1函数跟踪并返回计数 要求用户提供范围值的上限 使用范围(包括) 具有将迭代次数作为参数的绘图功能 根据seq3np1返回的最大值绘制结果图并更新世界坐标 在图表上显示目前为止的最大值 但如果我试图在主函数上打印“count”,它会说count是未定义的。在主函数上打印count应该怎么做?函数中定义的变量属于该函数名称空间;在功能的范围之外无法访问它们。(名称空间和范围是您应该在python文档中查找和了解的词) 在main中,必须将seq

这是我现在必须要做的代码

  • seq3np1函数跟踪并返回计数

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

  • 使用范围(包括)

  • 具有将迭代次数作为参数的绘图功能

  • 根据seq3np1返回的最大值绘制结果图并更新世界坐标

  • 在图表上显示目前为止的最大值


但如果我试图在主函数上打印“count”,它会说count是未定义的。在主函数上打印count应该怎么做?

函数中定义的变量属于该函数
名称空间
;在功能的
范围之外无法访问它们。(名称空间和范围是您应该在python文档中查找和了解的词)

main
中,必须将
seq3np1
返回的结果分配给
count

def seq3np1(n):

    count = 0
    
    """ Print the 3n+1 sequence from n, terminating when it reaches 1."""

    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?: "))
    seq3np1(num)
    print("This is the starting number: ", num)
    print("Number of iterations:", count)
    
main()
num=int(输入(“您想输入什么数字?”:”)

count=seq3np1(num)#count在seqnp1函数中定义,当该函数退出时,count变量不再可用

因此,您可以将seqnp1函数的返回值存储到一个变量中,然后使用它

修改主功能中的行:


它将按预期工作。

在main中定义一个变量
count
,然后
seq3np1()
中的返回值存储到该变量

当前唯一的
count
变量位于
seq3np1
中,它有自己的作用域。
该函数“返回”
count
到main,但您没有将其存储在main中的任何位置,因此您丢失了该返回值

在main中,您应该替换函数调用
seq3np1(num)

使用该行
count=seq3np1(num)

请注意,
main()
中的新变量
count
,与
seq3np1()
函数中定义的
count
不同

您甚至可以更改main中的
count
变量名
因此,您可以通过在
main()
中使用以下内容而不是上述修复,来了解它与
seq3np1()
中的
count
变量的不同之处:

numIterations=seq3np1(num)

然后

print(“迭代次数:”,numIterations)

在main中定义变量
count
。当前唯一的
count
变量位于
seq3np1
中,它有自己的作用域。该函数“返回”计数,但不存储在任何位置。在main中,您应该将函数调用替换为行
count=seq3np1(num)
。请注意,此计数与函数中定义的计数不同。为了清晰起见,您甚至可以更改名称:
numIterations=seq3np1(num)
print(“迭代次数:”,numIterations)
num=int(input("what number do you want to put?: "))
count = seq3np1(num)     # <--- Here
print("This is the starting number: ", num)
print("Number of iterations:", count)
seq3np1(num)
count = seq3np1(num)