Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不知道为什么我的python输出是循环的_Python_Loops - Fatal编程技术网

不知道为什么我的python输出是循环的

不知道为什么我的python输出是循环的,python,loops,Python,Loops,我写了一些代码来读取文件中的数字。将其附加到变量,然后递增该数字,以便下次运行时,文件中的数字将为数字+1。它看起来像是在工作,只是似乎增加了两倍。。例如,下面是我的代码: 11 def mcIPNumber(): 12 with open('mcIPlatest.txt', 'r+') as file: 13 NameNumber= file.read().replace('\n','') 14 NameN

我写了一些代码来读取文件中的数字。将其附加到变量,然后递增该数字,以便下次运行时,文件中的数字将为数字+1。它看起来像是在工作,只是似乎增加了两倍。。例如,下面是我的代码:

 11 def mcIPNumber():
 12         with open('mcIPlatest.txt', 'r+') as file:
 13                 NameNumber= file.read().replace('\n','')
 14                 NameNumber=int(NameNumber)
 15                 NewNumber= NameNumber+1
 16                 print "newnumber = %s" % NewNumber
 17                 file.seek(0)
 18                 file.write(str(NewNumber))
 19                 file.truncate()
 20         return NameNumber
 21
 22 def makeNameMCTag():
 23         NameNumber = mcIPNumber()
 24         NameTag = "varName" + str(NameNumber)
 25         print "Name Tag: %s" % NameTag
 26         mcGroup = "varTagmc"
 27         #IPNumber = 1
 28         mcIP = "172.16.0.%s" % NameNumber
 29         print ( "Multicast Tag: %s, %s" % (mcGroup,mcIP))
 30
 31 
 32 mcIPNumber()
 33 makeNameMCTag()
但这是我的输出。。请注意,“NewNumber”会打印两次。。出于某种原因”

因此,它正确地使我的varName2和IP 172.16.0.2(将我在文件中的初始编号增加了1),但这意味着我第二次运行它..我得到:

newnumber = 4
newnumber = 5
Name Tag: varName
Multicast Tag: varTagmc, 172.16.0.4
我的预期结果是:

newnumber = 3
Name Tag: varName3
Multicast Tag: varTagmc, 172.16.0.3
知道为什么会循环吗

谢谢

(顺便说一句,如果你好奇的话,我正在尝试编写一些代码,最终将为我的TerraForm实验室编写tf文件)

,因为:

 def makeNameMCTag():
     NameNumber = mcIPNumber()
您正在从makeNameMCTag内部调用mcIPNumber,因此不必在第32行中调用该方法

或者

def make_name_mc_tag(name_number):
    NameTag = "varName" + str(name_number)
    print "Name Tag: %s" % NameTag
    ...

make_name_mc_tag(mcIPNumber())
此处您将所需数据作为参数传递。

因此:

 def makeNameMCTag():
     NameNumber = mcIPNumber()
您正在从makeNameMCTag内部调用mcIPNumber,因此不必在第32行中调用该方法

或者

def make_name_mc_tag(name_number):
    NameTag = "varName" + str(name_number)
    print "Name Tag: %s" % NameTag
    ...

make_name_mc_tag(mcIPNumber())

这里您正在将所需数据作为参数传递。

您没有注意到在代码中调用了
mcIPNumber()
两次吗?您没有注意到调用了
mcIPNumber())
在代码中出现两次?看起来就是这样..但是它们被卡住了,如果我注释掉23,那么我会得到一个错误:NameError:全局名称'NameNumber'没有定义
code
但是如果我注释掉32,那么该函数的其余部分将不会运行我的建议是删除32是的,如果我删除32,那么该函数的其余部分将不会运行。。如果我能以某种方式将NameNumber传递到makeNameTag()中,而不是NameNumber=mcIPNumber(),这将是可行的函数。然后我就不必调用它了。我不知道该怎么做如果你删除了23我说的是32我是个白痴。谢谢,就是这样。我实际上是通过声明一个变量为全局变量然后删除了23行来实现的。但我不确定这是否是一个好的做法。看起来就是这样。但是如果我评论的话,它们被卡住了out 23然后我得到一个错误:NameError:全局名称'NameNumber'没有定义
code
,但是如果我像32一样注释掉,那么该函数的其余部分将不会运行我的建议是删除32是的,如果我像32一样删除,那么函数的其余部分将不会运行..如果不是NameNumber=mcIPNumber()…如果我能以某种方式将NameNumber传递到makeNameTag()中函数。然后我就不必调用它了。我不知道该怎么做。如果你删除了23行,那会是真的。我说的是32。我是个白痴。谢谢。就是这样。我实际上是通过将一个变量声明为全局变量,然后一起删除23行来实现的。但我不确定这是否是一个好的做法。