Cau,
chcel by som zistit vsetky prvocisla od 1000 do 2000....neviem preco,ale mam tam chybu...pomoze niekto...dik
for n in range (1000, 2000):
x= (2, 2000)
while n % x == 1:
print (n)
no jelikoz si nepouzil blok kodu pro tvuj kod, a ani neumis rict co ti presne nefunguje tak to bude odsazeni
+ samozrejme je uplne blbe ten while cyklus a jeho rozsah ... taky zbytek po deleni vypada podezrele, kdyz tam hazes cely pole
Všetky prvočísla od 1000 do 2000? hm..
# -*- coding: utf -*-
def vypis_prvocisla(minimum,maximum):
for x in range(minimum,maximum+1): # hovoril si ze chces overovat aj 2000
for h in range(2,x):
if x%h==0: break
else: yield x
# a teraz ked sa chces dostat k tym prvocislam
prvocisla=list(x for x in gen(1000,2000))
# a uz len das trebars print(prvocisla); a sledujes vysledok
Ahoj,
# -*- coding: utf-8 -*-
Toto odporúčam používat. Vdaka tomu možeš vo svojom programe používať pismenka s háčkami a čiarkami, t.j. č,dž,š,ť,á,í,é atď atď.
Po tomto kóde sa ti prvočísla nevypíšu samozrejme.
Funkcia, ktorú som napísal vyššie, je generátor, čiže jej obsah získaš až po iterovaní
Preto ak urobíš aj posledný riadok,
prvocisla=list(x for x in vypis_prvocisla(1000,2000))
a potom zavoláš tu premennu prvočísla... takto: print(prvocisla)
stane sa..
No schvalne, vyskušaj to sám, ak by ti to nefungovalo, tak vypíš aj konkrétny typ chyby (celu chybovu hlášku)
#7 prosteja
Jen malá poznámka, ten generátorový výraz je zbytečný, stačí dát ten generátor vypis_prvocisla(...) jako argument list(). Jinak je ten kód správně i pro Python < 3 a chyba bude někde u romana. Samozřejmě jsou ale na generování prvočísel sofistikovanější přístupy a hotová řešení, proto, pokud to není v rámci sebevzdělávání, je zbytečné znovu vynalézat kolo...
Tá bodkočiarka na konci tam nemá byť.
A taktiež v riadku: prvocisla=list_a NEMA byt list_a ale list, čiže:
def vypis_prvocisla(minimum,maximum):
for x in range(minimum,maximum+1):
for h in range(2,x):
if x%h==0: break
else: yield x
prvocisla=list(x for x in vypis_prvocisla(1000,2000))
print(prvocisla)
To odsadenie riadkov je dôležité.
sorry za triplepost, ale sem tam sa vludi preklep
def vypis_prvocisla(minimum,maximum):
for x in range(minimum,maximum+1):
for h in range(2,x):
if x%h==0: break
else: yield x
prvocisla=list(vypis_prvocisla(1000,2000))
print(prvocisla)
SyntaxError: inconsistent use of tabs and spaces in indentation
else: yield x
prvocisla=list(vypis_prvocisla(1000,2000))
print(prvocisla)
neviem urobil som to presne ako ty a v riadku else: yield x.....mi vyhazuje sytaxovu chybu
V pythone nesmieš v jednom kóde používať medzery aj tabulátory na odsadenie, to je príčina tvojej chyby.
Možno by si to mohol skúsiť prepísať ručne, alebo proste to skopírovať celé presne ako to je,
pretože mne ten kód funguje bez problémov.
Ako hovoril sairon, chyba je zrejme niekde na tvojej strane.
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku