Randrange v ife – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Randrange v ife – Python – Fórum – Programujte.comRandrange v ife – Python – Fórum – Programujte.com

 

gusto
~ Anonymní uživatel
7 příspěvků
3. 2. 2020   #1
-
0
-

Zacal som sa trocha ucit python podla http://python.input.sk/ a nerozumiem celkom tomuto kodu, alebo sa domnievam, ze to funguje takto

btw priklad je v tejto casti http://python.input.sk/04.html#logicke-operacie

import tkinter
from random import randint, randrange

canvas = tkinter.Canvas(bg='white', width=300, height=300)
canvas.pack()

for i in range(10):
    x = randint(1, 300)
    y = randint(1, 300)
    a = randint(5, 50)

    if randrange(2):               # t.j. randrange(2) != 0
        canvas.create_oval(x-a, y-a, x+a, y+a)
    else:
        canvas.create_rectangle(x-a, y-a, x+a, y+a)

if moze nadobudat hodnoty 0 a 1. Ak modul randrange vybere hodnotu 0, tak je podmienka false a nakresli sa stvorec. Pri dalsom cykle nadobudne napr. hodnotu 1, vtedy je podmienka true a nakresli sa kruh. Ak si myslim spravne, tak je to OK.

Dalsi kod, ktoremu tiez celko nerozumiem je tento http://python.input.sk/04.html#delitele-cisel

cislo = int(input('Zadaj číslo: '))
pocet = 0
print('delitele:', end=' ')
for delitel in range(1, cislo+1):
    if cislo % delitel == 0:        # mohli by sme zapísať aj  if not cislo % delitel:
        pocet += 1
        print(delitel, end=' ')
print()
print('počet deliteľov:', pocet)

1. Program caka na vstup, cize zadame nejake cislo napr 9

2. do premennej pocet ulozime hodnotu 0 (cize ju vynulujeme)

3. na riadku 3 vytlacime slovo delitele (to by malo byt vsetko, ale nie je to tak)

4. program pokracuje cyklom kde bude nas rozsah 1 az 10

5. if podmienke rozumiem. vezme cislo (9) a zacne ho delit cislom (1). Modulo je nula, cize do premennej pocet pripocita cislo 1 a premenna pocet nadobudne hodnotu (1).

6. V riadku 7 je print, cize by sa malo vytlacit cislo 1 (dalsie printy v riadku 8 a 9 uz nie su v tele cyklu, cize sa vykonaju az na konci).

7. pokracuje sa dalej v cykle, takze sa vezme cislo (2) a kedze 9/2 uz ma po deleni zvysok, tak prikazy v podmienke if sa uz nevykonaju a pokracuje sa cislom (3). A kedze 9/3 nema po deleni zvysok, tak premenna pocet sa zase navysi o (1) a uz ma hodnotu 2. atd ....

Ako je mozne teda, ze ten print  v riadku 3 vypise vsetky delitele (cize 1 2 3 ) a ten print co je v if(e) nevypisuje nic.

Nahlásit jako SPAM
IP: 178.40.7.–
MilanL+1
Grafoman
3. 2. 2020   #2
-
0
-

#1 gusto
každý print vytiskne jen to co má v závorce, tzn ty čísla se vypisují až v tom cyklu na základě té podmínky, to že se vypisují vedle sebe a ne pod sebou způsobuje ten druhý argument u printu end=' '

Nahlásit jako SPAM
IP: 91.139.9.–
gusto
~ Anonymní uživatel
7 příspěvků
3. 2. 2020   #3
-
0
-

#2 MilanL
Uz tomu rozumiem, ale ja som si myslel uplne inak. Nevedel som preco tie vysledky s premenny delitel posiela do printu (v riadku 3). On ich tam neposiela, ale kedze je tam end=' ', tak vozik neprejde na dalsi riadok, ale pokracuje sa v tom istom riadku. Ak by napr. end=' ' nebol v printe v riadku 7 tak kazdy vysledok  hodi do noveho riadku 

A ten prvy priklad s randrange je OK ? Teda ci som to dobre pochopil

vdaka za vysvetlanie

PS este ma zauma tato cast kde sa vysvetluje kedy su vyrazy true a kedy false

>>> 1 + 2 and 3 + 4       # keďže 1+2 nie je False, výsledkom je 3+4
7
>>> 'ahoj' or 'Python'    # keďže 'ahoj' nie je False, výsledkom je 'ahoj'
'ahoj'
>>> '' or 'Python'        # keďže '' je False, výsledkom je 'Python'
'Python'
>>> 3 < 4 and 'kuk'       # keďže 3<4 nie je False, výsledkom je 'kuk'
'kuk'
>>> False or True         # keďže False je False, výsledkom je True
True
>>> 'False' or 'True'     # keďže 'False' nie je False, výsledkom je 'False'
'False'

Tejto tabulke rozumiem, je napisana zrozumitelne, ale je niekto kto si to vie zapamatat ??

Nahlásit jako SPAM
IP: 178.40.7.–
KIIV
~ Moderátor
+43
God of flame
3. 2. 2020   #4
-
0
-

#3 gusto
Co se tyce logickych operatoru, tak je to vse snadno odvoditelne podle jejich pravdivostnich tabulek. Plus tady je pak jeste k tomu "zkracene" vyhodnocovani (tj. pokud je uz jasny vysledek, tak se zbytek nevyhodnocuje/nevykonava).

Ve zkratce:

AND - kdykoliv je kterykoliv ze vstupu logicka nula, vystupem je taktez logicka nula.

OR - kdykoliv je kterykoliv ze vstupu logicka 1, vystupem je logicka 1

V pythonu se do toho zacnou cpat jeste vyrazy a kdy jsou chapany jako pravdive nebo nepravdive. Napriklad prazdny retezec se bere jako nepravda, 0 se bere jako nepravda a tak dale.

Nahlásit jako SPAM
IP: 37.48.58.–
Program vždy dělá to co naprogramujete, ne to co chcete...
gusto
~ Anonymní uživatel
7 příspěvků
3. 2. 2020   #5
-
0
-

jj viem ako funguje and, or aj not ale ked si zobereme len riadok

>>> 1 + 2 and 3 + 4       # keďže 1+2 nie je False, výsledkom je 3+4

V tomto pripade moze byt pred and hocico rozne od nuly a vysledok bude to co je za and, ale ked je pred and nejaky vyraz ktorym vysledok je nula tak ten je aj vysledkom. Pre mna to vobec nema ziadnu logiku.


V boolovej algebre (pokial sa nemylim) je to tak, ze ked v podnienke je napr.

>>> 1 + 2 = 3 and 3 + 4 = 7

tak podmienka je splnena a vykonaju sa dalsie prikazy v tele podmienky. Ale ked napr.

>>> 1 + 2 = 3 and 3 + 4 = 8

tak sa prikazy v podmienke nevykonaju a pokracuje sa dalej

Nahlásit jako SPAM
IP: 84.245.121.–
gna
~ Anonymní uživatel
1891 příspěvků
4. 2. 2020   #6
-
0
-

Logika je tam úplně stejná:

X     Y     AND             X     Y     AND
False False False   <-X->   ''    ''    ''   (False)
False True  False   <-X->   ''    'aa'  ''   (False)
True  False False   <-Y->   'aa'  ''    ''   (False)
True  True  True    <-Y->   'aa'  'bb'  'bb' (True)

X     Y     OR              X     Y     OR
False False False   <-Y->   ''    ''    ''   (False)
False True  True    <-Y->   ''    'aa'  'aa' (True)
True  False True    <-X->   'aa'  ''    'aa' (True)
True  True  True    <-X->   'aa'  'bb'  'aa' (True)

Operandy se vyhodnocují jako booly, operátor funguje boolovsky, akorát výsledek není bool, ale původní hodnota operandu.

Když to použiješ v podmínce, tak se výsledek zase vyhodnotí jako bool a pořád to funguje podle očekávání.

A umožňuje to věci jako tohle:

from = message.sender or defaults.sender
Nahlásit jako SPAM
IP: 213.211.51.–
KIIV
~ Moderátor
+43
God of flame
4. 2. 2020   #7
-
0
-

#5 gusto
V boolovej algebre (pokial sa nemylim) je to tak, ze ked v podnienke je napr.
>>> 1 + 2 = 3 and 3 + 4 = 7

tak podmienka je splnena a vykonaju sa dalsie prikazy v tele podmienky. Ale ked napr.

>>> 1 + 2 = 3 and 3 + 4 = 8

tak sa prikazy v podmienke nevykonaju a pokracuje sa dalej

Proto jsou v kazdem jazyce dve sady operatoru. Jedna varianta je "logicka", tj. operandy vyhodnoti jako celek jestli jsou pravda ci nepravda - to jsou ty co tu mas zminene. Zacne tim v levo a pokud uz je jasny vysledek, tak se toho druheho uz ani nedotkne.

Druha varianta je takzvane  "bitwise", tj. po jednotlivych bitech: https://wiki.python.org/moin/BitwiseOperators

Coz znamena:

3 & 8  =  0b0011 & 0b1000 = 0

3 & 7  =  0b0011 & 0b0111 =  0b0011

3 & 6  =  0b0011 & 0b0110 =  0b0010

Nahlásit jako SPAM
IP: 37.48.58.–
Program vždy dělá to co naprogramujete, ne to co chcete...
gusto
~ Anonymní uživatel
7 příspěvků
4. 2. 2020   #8
-
0
-

Mozno je to hamba, ale nie az tak celkom tomu rozumiem, skusim si to mozno viac krat precitat a pohladat nejake priklady, kde to mozno lepsie pochopim

Nahlásit jako SPAM
IP: 178.40.7.–
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, 1 host

 

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