• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Python, dziwne zachowanie programu

VPS Starter Arubacloud
+1 głos
209 wizyt
pytanie zadane 23 grudnia 2019 w Python przez martin1724 Użytkownik (690 p.)
import math
def czyPierwsza(x):
    for i in range(2,int(math.sqrt(x))+1):
        print(x%i)
        if x % i == 0:
            return False
        return True

def genPierwszych(n):
    for i in range(2,n+1):
        if czyPierwsza(i):
            yield i
        else:
            pass
print(list(genPierwszych(22)))

# rozwiązanie alterntatywne za pomoca iteratora
class itPierwszych:
    def __init__(self,n):
        self.i = 1
        self.n = n
    def __next__(self):
        while 1:
            self.i += 1
            if self.i > self.n:
                raise StopIteration
            if czyPierwsza(self.i):
                return self.i
        
    def __iter__(self):
        return self

print(list(itPierwszych(22)))

Cześć! Mógłby mnie ktoś naprowadzić dlaczego program, wypisuje niektóre liczby które nie należa do pierwszych np.: 9 i 21?

1 odpowiedź

+1 głos
odpowiedź 23 grudnia 2019 przez Michałełe Nałogowiec (25,600 p.)
wybrane 27 grudnia 2019 przez martin1724
 
Najlepsza

Witam

Załóżmy ,że funkcja czy pierwsza otrzymuje jako argument x liczbę 9

def czyPierwsza(x):
    for i in range(2,int(math.sqrt(x))+1): # Pętla wykona się 2 razy
        print(x%i)
        if x % i == 0: # Po raz pierwszy ten if się nie spełni, czyli z automatu  zwracamy True
            return False
        return True

Rozwiązaniem będzie danie return True za pętle sprawdzającą

def czyPierwsza(x):
    for i in range(2,int(math.sqrt(x))+1):
        print(x%i)
        if x % i == 0:
            return False
    return True

 

Podobne pytania

+1 głos
1 odpowiedź 1,590 wizyt
+1 głos
2 odpowiedzi 1,333 wizyt

93,028 zapytań

141,991 odpowiedzi

321,294 komentarzy

62,375 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...