程序总显示错误
第一个程序总显示int不可以被调用,把sum_primes()里的参数去掉就能正常跑了,这是为什么呢??import math as mdef is_primes(number):
if number >1:
if number ==2:
return True
if number % 2 ==0:
return False
for current in range(3, int(m.sqrt(number)+1), 2):
if number % current == 0:
return False
return True
return False
def get_primes(num):
while True:
if is_primes(num):
yield num
num += 1
def sum_primes(lim):
total = 0
for i in get_primes(2):
if i < lim:
total += i
else:
print(total)
return
if __name__ == '__main__':
range = int(input())
sum_primes(range)
import math as m
def is_primes(number):
if number >1:
if number ==2:
return True
if number % 2 ==0:
return False
for current in range(3, int(m.sqrt(number)+1), 2):
if number % current == 0:
return False
return True
return False
def get_primes(num):
while True:
if is_primes(num):
yield num
num += 1
def sum_primes():
total = 0
for i in get_primes(2):
if i < 2000000:
total += i
else:
print(total)
return
if __name__ == '__main__':
sum_primes() 想把sum_primes()的范围改成可变的应该怎么改呢??这是第49课的最后一题 超级大的甲鱼 发表于 2020-7-20 18:46
想把sum_primes()的范围改成可变的应该怎么改呢??这是第49课的最后一题
你用 range = int(input()) ,会导致 range 函数被你这边赋值给覆盖,失去原有的 range 函数的功能
所以 Python 变量命名时候注意别把 关键字、内置函数登 Python 内置的一系列东西,拿去当作变量名
改下变量名即可了吧:
import math as m
def is_primes(number):
if number >1:
if number ==2:
return True
if number % 2 ==0:
return False
for current in range(3, int(m.sqrt(number)+1), 2):
if number % current == 0:
return False
return True
return False
def get_primes(num):
while True:
if is_primes(num):
yield num
num += 1
def sum_primes(lim):
total = 0
for i in get_primes(2):
if i < lim:
total += i
else:
print(total)
return
if __name__ == '__main__':
temp = int(input())
sum_primes(temp)
定义变量不建议用内置函数名做变量名,这样新变量会覆盖内置函数导致 Bug,把变量 range 改个名就行了:
import math as m
def is_primes(number):
if number >1:
if number ==2:
return True
if number % 2 ==0:
return False
for current in range(3, int(m.sqrt(number)+1), 2):
if number % current == 0:
return False
return True
return False
def get_primes(num):
while True:
if is_primes(num):
yield num
num += 1
def sum_primes(lim):
total = 0
for i in get_primes(2):
if i < lim:
total += i
else:
print(total)
return
if __name__ == '__main__':
range1 = int(input())
sum_primes(range1)
页:
[1]