Konzultace kodu, while – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Konzultace kodu, while – Python – Fórum – Programujte.comKonzultace kodu, while – Python – Fórum – Programujte.com

 

shockwave0
Newbie
24. 3. 2020   #1
-
0
-

Ahoj, za prve, funguje vam prosim tento kod, me to vypisuje pouze "Odd numbers"  nic vic

a za druhe v ucebici popisuji,ze pokud je uzito int (5/2) tak se napr. cislo 2,5 zaokrouhli na 2 apod. Takze pokud vygenerujeme nahodne cislo napr. 5, tak by podle ucebnice melo byt int(5/2) == 5/2 ->  2 == 2,5, jenze me to v shellu vypisuje 2 == 2 , navic v shellu mi i 5/2 - prava strana rovnosti  vzdy vyhodi cele cislo 2 ne 2.5. 

viz kniha: if int(number / 2) == number / 2:
. . . checks to see if the number is even. Remember, the int() function returns
only the whole portion of a number. So let’s say the random number that gets
generated is 5. Dividing this number by 2 gets you 2.5. Then int(number) is 2
because the int() of a number drops everything after the decimal point. 2 does
not equal 2.5, so the code skips over the continue , prints that odd number, incre-
ments the counter, and keeps going.

import random

print("Odd numbers")
counter= 0
while counter < 10:
    number = random.randint(1,999)
    if int(number/2) == number/2:
      continue
    print(number)
    counter += 1
print("Loop is done")
Nahlásit jako SPAM
IP: 212.4.155.–
KIIV
~ Moderátor
+43
God of flame
24. 3. 2020   #2
-
0
-

Mozna je kniha pro jinou verzi pythonu a mezi 2.x a 3.x to totalne prekopali. Nicmene verzi nezminujes, takze tezko posoudit.

Jinak nikdo nikdy nepouziva porovnavani desetinnych cisel s int, protoze jejich reprezentace neni uplne presna. Neda se tedy spolehnout na to, ze float(2) se bude rovnat int(2). Vzdy se musi pocitat s nejakym epsilon - maximalni odchylkou, kterou uz povazujes za jine cislo.

Za to se zasadne pouziva bud bitova operace - vymaskujes jen nejmene platny bit a ten je zaroven ekvivalentem  1=liche cislo, 0 sude.

Nebo se pouziva zbytek po celociselnem deleni % (ten se pouziva i pro jine zaklady nez mocniny dvojky - chces vedet, jestli je cislo delitelne 13?  cislo % 13 == 0)

EDIT:

No natipoval sem to spravne:

$ python
Python 2.7.16 (default, Apr  6 2019, 01:42:57)
>>> 5/2
2
>>> float(5)/2
2.5
>>> 5/2.0
2.5

$ python3
Python 3.7.3 (default, Apr  3 2019, 05:39:12)
>>> 5/2
2.5
Nahlásit jako SPAM
IP: 37.48.51.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 6 hostů

Podobná vlákna

Konzultace kodu z učebnice — založil shockwave

Konzultace v C# — založil Ramisha

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý