我想循环遍历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))
答案 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) 打印(最大(计数))