map(int,raw_input().split())得到无限的inpu

2024-06-28 10:48:10 发布

您现在位置:Python中文网/ 问答频道 /正文

代码如下:

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键,它仍然继续获取输入。有什么问题吗?在


Tags: or代码inmapforinputrawif
2条回答

语句b = map(int, raw_input().split())完全可以。问题是您在后面的while部分遇到了一个无限循环。逻辑上应该有点问题。在

那么,你是在取列表modulo中的连续数b?所以,输入如下: b = [1,2,3,4] 将导致无限循环,因为1%2 == 0 or 2%1 ==0=>;True。这显然是一个依赖输入的场景。在

您的代码显示一个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循环在持续运行。在

相关问题 更多 >