def fact(n):
if n==1 and n==2:
s=1
else:
for i in range(2,n):
if n%i==0:
s=0
break
else:
s=1
if s==1:
return n
k=int(input())
for i in range(1,k+1):
if fact(i)!=None:
print(fact(i))
if n==1 and n==2:
and是逻辑与, n不可能等于1又等于2,要改成 or
否则n为1时。s没有赋值。if s==1:读取s时就出错
你题目的解答代码如下:(如有帮助,望采纳!谢谢! 点击我这个回答右上方的【采纳】按钮)
def fact(n):
if n==1 or n==2:
s=1
else:
for i in range(2,n):
if n%i==0:
s=0
break
else:
s=1
if s==1:
return n
k=int(input())
for i in range(1,k+1):
if fact(i)!=None:
print(fact(i))
你这个缩进乱啊,s=0,s=1,return n都得再往里一层啊。还是你贴错了啊