我有一个while循环,它在每次迭代时调用函数mainrt()。
if __name__ == "__main__":
inp = sys.stdin.read()
inpList = inp.split('\n')
inpList.pop()
for n in inpList:
i = 0
p = 0
n = int (n)
while True:
i += 1
p = n*i
if n == 0:
print "INSOMNIA"
break
else:
res = True
res = mainrt(p)
if res == False:
print p
break
和mainrt()
def mainrt(n):
#print n
while True:
rem = n % 10
if rem in diMon:
pass
else:
diMon.insert(rem,rem)
if len(diMon) == 10:
return False
break
n = n/10
if n == 0:
return True
break
else:
continue
问题是当我从stdin.read()获取输入时,函数正确处理输入的第一行,但输入的第二行按原样打印。它没有被该功能处理 示例
INPUT
3
5
OUTPUT SHOLD BE
30
90
But instead I get
30
5
为什么函数第二次没有处理输入? 到目前为止没有运行时错误。
答案 0 :(得分:1)
在你的mainrt
函数中,我没有看到你声明diMon
列表,所以看起来它是一个全局变量,你不清理那个列表。这意味着,mainrt
在第一次检查False
时返回if len(diMon) == 10:
作为第二个输入。您应该在开头的od diMon
函数中声明mainrt
,或者在while循环体的末尾清除它。
修改强>
现在我再次检查你的代码,我建议你在for
循环的开头声明diMon
for n in inpList:
diMon = []
i = 0
p = 0
n = int (n)