-
[Python] Problem
Hej, uczę się Pythona od podstaw i mam mały problem. Napisałem coś na kształt sprawdzania czy podana liczba jest liczbą pierwszą i coś mi nie działa. Może ktoś sprawdzić co jest nie tak?
Kod:
def get_number():
return input('Enter number: ')
def is_prime():
x = get_number()
lst = []
div = range(1, x)
if x == 0:
return 'Error!'
elif x == 1:
return 'Not prime.'
elif x == 2:
return 'Prime.'
else:
for i in div:
if x % i == 0:
lst.append(i)
return lst
if len(lst) > 2:
return 'Not prime.'
else:
return 'Prime'
print is_prime()
-
trochę zagmatwany kod, będę miał chwile to popatrzę, masz tu moje rozwiązanie:
Kod:
def is_prime(n):
if(n<2):
return False
for i in range(2,int((n/2))+1):
if n%i == 0:
return False
return True
Twoj poprawiony kod
Kod:
def get_number():
return int(input('Enter number: '))
def is_prime():
x = get_number()
lst = []
div = range(2, x)
if x <2:
return 'Not prime.'
else:
for i in div:
if x % i == 0:
lst.append(i)
return lst
if len(lst) > 2:
return 'Not prime.'
else:
return 'Prime'
print(is_prime())
-
nie znam składni pythona w ogóle ale w innych jezykach return zwraca wartosc i wychodzi z funkcji, w pythonie jest inaczej? Więc jak sie nie myle to else zawsze zwróci tablice lst a nie żaden wynik? Jak rozumiem w pythonie to wciecia decyduja gdzie sie konczy scope funkcji a u ciebie return jest wcięty tak że nigdy for nie obróci dwa razy
Kod:
def get_number():
return input('Enter number: ')
def is_prime():
x = get_number()
lst = []
div = range(1, x)
if x == 0:
return 'Error!'
elif x == 1:
return 'Not prime.'
elif x == 2:
return 'Prime.'
else:
for i in div:
if x % i == 0:
lst.append(i)
return lst
if len(lst) > 2:
return 'Not prime.'
else:
return 'Prime'
print is_prime()
-
Pomogły mi wskazówki i program działa, chociaż i tak zrobiłem to trochę naokoło. No ale dopiero się uczę ;d Dzięki! do zamknięcia
-
troche naokolo to malo powiedziane xD
Dla kazdej duzej parzystej liczby bedziesz zapelnial tablice wszystkimi jej dzielnikami i sprawdzal czy jest wieksza od 2? Przeciez wystarczy juz jakikolwiek dzielnik znaleziony po drodze i dla kazdej liczby parzystej bedzie to 2.
Jak to jakies zadanie do szkoly to sito euklidesa zrob przynajmniej dla tych wlasciwosci podzielnosci liczb znanych z podstawowki (suma cyfr podzielna przez 3 itp)