2024-06-28 10:48:10 发布
网友
代码如下:
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键,它仍然继续获取输入。有什么问题吗?在
语句b = map(int, raw_input().split())完全可以。问题是您在后面的while部分遇到了一个无限循环。逻辑上应该有点问题。在
b = map(int, raw_input().split())
while
那么,你是在取列表modulo中的连续数b?所以,输入如下: b = [1,2,3,4] 将导致无限循环,因为1%2 == 0 or 2%1 ==0=>;True。这显然是一个依赖输入的场景。在
modulo
b
b = [1,2,3,4]
1%2 == 0 or 2%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,并且不会停止。在
cnt
(b[s] % b[j]) == 0 or (b[j] % b[s]) == 0
您看到的是一个空控制台(您当时认为这意味着它在请求更多的输入),实际上它只是while循环在持续运行。在
语句
b = map(int, raw_input().split())
完全可以。问题是您在后面的while
部分遇到了一个无限循环。逻辑上应该有点问题。在那么,你是在取列表
modulo
中的连续数b
?所以,输入如下:b = [1,2,3,4]
将导致无限循环,因为1%2 == 0 or 2%1 ==0
=>;True。这显然是一个依赖输入的场景。在您的代码显示一个
while
语句,该语句在循环时不会更改其条件:如您所见,
cnt
不在(b[s] % b[j]) == 0 or (b[j] % b[s]) == 0
的条件下,因此,它将继续递增cnt
,并且不会停止。在您看到的是一个空控制台(您当时认为这意味着它在请求更多的输入),实际上它只是while循环在持续运行。在
相关问题 更多 >
编程相关推荐