为什么我的程序在第二个for循环中不起作用?

时间:2019-08-20 10:12:59

标签: python

我想循环遍历20个输入并计算它们的除数,然后显示最多的除数。在第二个for循环中,我遇到了一个错误 表示:e未定义。有人可以解释这个问题吗?

另一个问题: 如何显示除数最多的输入?

for i in range (20) :
    x=int(input())
    list1=[]
    list2=[]
    count=0
    for e in range ( e,x+1):
        if x%e==0 :
        count=count+1  
list1.append(count)
list2.append(x)
print(max(count))        

4 个答案:

答案 0 :(得分:1)

获取最大除数

list1=[]
list2=[]

for i in range (20) :
    x=int(input())
    count=0
    for e in range ( 1,x+1):
        if x%e==0 :
            count=count+1  
    list1.append(count)
    list2.append(x)
print(max(list1)) 

答案 1 :(得分:1)

在代码中,您引用了第二个范围函数中的变量e

for e in range ( e,x+1):

在代码的这一点上,将不定义e。在您的实例中,您需要将其设置为1。根据需要,从1-> x + 1。

for e in range (1,x+1):

要获取最常见的事件,可以使用标准库集合模块。

import collections

类似的东西:

import collections
list1=[]
list2=[]
for i in range (20) :
    x=int(input())
    count=0
    for e in range (1,x+1):
        if x%e==0 :
            count=count+1  
    list1.append(count)
    list2.append(x)
    # print(max(count))

c = collections.Counter(list)
k, v = c.most_common(1)[0] # need to get 0 index as its a list
print(k, v) # prints the key and the number of occurances.

答案 2 :(得分:1)

在开始for循环之前,用一个int值初始化e

e = 1   # for example
for e in range ( e,x+1):

关于获得最大除数和具有最大除数的数字,您可以将其打印出来。您需要正确设置代码格式和缩进格式。当前,您的list.append代码仅运行一次。不是每个循环。

我已经重新编写了您的代码以按预期工作。

它将同时打印除数最大的数字和除数的数字。

maxDivisorNumber = None
maxDivisorCount = 0
for i in range (20) :
    x=int(input())
    count=0
    e = 1
    for e in range ( e,x+1):
        if x%e==0:
            count+=1  
    if count>maxDivisorCount:
        maxDivisorCount, maxDivisorNumber = count, x

print(maxDivisorCount, maxDivisorNumber)   

答案 3 :(得分:0)

for i in range (20) :
x=int(input())
list1=[]
list2=[]
count=0
j = 1 # Setting a new var. Because your provided 'e' is not assigned anywhere
for e in range ( j,x+1):
    if x%e==0 :
    count=count+1  

list1.append(计数) list2.append(x) 打印(最大(计数))