以下是代码:
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键,它仍然保持输入。问题是什么?
答案 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循环。