Итак, у меня есть этот код, и он должен распечатать кортеж со всеми простыми числами в нем. Но вместо этого он просто печатает пустые кортежи ...allPrimes распечатка пустого кортежа Python
Может ли кто-нибудь сказать мне, почему? Я также ДОЛЖЕН ИСПОЛЬЗОВАТЬ АНГЛИЙСКИЙ.
def isPrime(number):
for i in range(2,int(number**(0.5))+1):
if number % i == 0:
return False
else:
return True
def allPrimes(number):
tup=()
for i in range(1,number):
if isPrime(i) == True:
tup += (i,)
print(tup)
allPrimes(26)
Вот правильный код
def isPrime(number):
if number < 2:
return False
for i in range(2, int(number ** (0.5)) + 1):
if number % i == 0:
return False
return True
def allPrimes(number):
tup=()
for i in range(1,number):
if isPrime(i) == True:
tup += (i,)
print(tup)
allPrimes(26)
out[1]: (2, 3, 5, 7, 11, 13, 17, 19, 23)
Я только что внесла некоторые изменения в свой код, и он по-прежнему не работает. – drewteriyaki
Я должен использовать кортеж, это для кампании – drewteriyaki
Обычно лучше использовать 'list' для ее создания. Даже если он должен быть «кортежем» в конце, гораздо быстрее построить «list», а затем конвертировать в «tuple» один раз в конце, чем постоянно создавать новый 'tuple' один элемент дольше. Просто инициализируйте 'ret = []', измените 'tup + = (i,)' на 'ret.append (i)', и когда вы 'return' /' print', выполните 'print (tuple (ret)), 'или' return tuple (ret) 'для преобразования. – ShadowRanger