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()
这是我现在的代码,我必须这样做
- seq3np1函数跟踪并返回计数
- 询问用户范围值的上限
使用范围(包含)
有一个绘图函数,它将迭代次数作为参数
- 根据seq3np1
返回的最大值绘制结果并更新世界坐标- 在图表上打印到目前为止的最大值
但如果我尝试在main函数上打印'count',则表示count未定义。我应该怎么做才能打印主函数?
答案 0 :(得分:0)
函数中定义的变量属于该函数namespace
;它们不能在函数的scope
之外访问。 (命名空间和范围是你应该在python文档中查找和学习的词)
在main
中,您必须将seq3np1
返回的结果分配给count
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)
答案 1 :(得分:0)
count在seqnp1函数中定义,当该函数退出时,count变量不再可用。
因此,您可以将seqnp1函数的返回值存储到变量中,然后使用它。
修改主功能中的行:
这
seq3np1(num)
到
count = seq3np1(num)
它将按预期工作。
答案 2 :(得分:0)
在main中定义变量count
,然后是
将返回值从seq3np1()
存储到该变量。
您目前唯一的count
变量位于seq3np1
,其拥有自己的范围。
那个功能&#34;返回&#34; count
为主,但您不会将其存储在main中的任何位置,因此您已丢失该返回值。
在main中你应该替换函数调用
seq3np1(num)
与行
count = seq3np1(num)
请注意,count
中的这个新变体main()
与count
函数中定义的seq3np1()
不同。
您甚至可以更改主体中的count
变量名称
因此,您可以通过在count
中使用以下内容而不是上述修复来查看它与seq3np1()
中main()
变量的不同之处:
numIterations = seq3np1(num)
然后
print("Number of iterations:", numIterations)
。