map(int,raw_input()。split())获得无限输入

时间:2016-06-19 05:11:42

标签: python loops

以下是代码:

a = input()
b = map(int, raw_input().split())

maxcnt=1

for k in range(0,a):
    cnt=1
    j=k+1
    while b[k]%b[j] == 0 or b[j]%b[k] == 0 :
        cnt += 1

    if maxcnt < cnt:
        maxcnt = cnt

print maxcnt

在给出列表值时,在给出用空格分隔的值之后,按Enter键,它仍然保持输入。问题是什么?

2 个答案:

答案 0 :(得分:0)

声明b = map(int, raw_input().split())完全没问题。问题是您在代码的后期while部分遇到无限循环。逻辑上应该存在一些问题。

那么,您在modulo列表中选择b个连续数字?所以,像这样的输入: b = [1,2,3,4] 会导致无限循环,因为1%2 == 0 or 2%1 ==0 =&gt;的即可。这显然是一个依赖于输入的场景。

答案 1 :(得分:0)

您的代码显示while语句,在循环时不会改变它的条件:

while (b[s] % b[j]) == 0 or
      (b[j] % b[s]) == 0:
    cnt += 1

正如您在此处所看到的,cnt不在条件(b[s] % b[j]) == 0 or (b[j] % b[s]) == 0中,因此,它将继续递增cnt并且不会停止。

你看到的是一个空的控制台(你认为这意味着它要求更多输入),这实际上就是连续运行的while循环。