NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Michal Žůrek - misaz:24.7.2013 21:22

ahoj učím se python, jenže jsme narazil na problém. Toto je celý můj zdrojový kód:

print "Hello World"

jenže ups, je v tom chyba :D chyba je na řádku 1 :D a je to chyba SyntaxError: invalid syntyx (viz. obr)

Poraďte mi kde je chyba :D on ten řádek je na mě staršně složitý :D

 
Odpovědět
24.7.2013 21:22
Avatar
Homo
Člen
Avatar
Odpovídá na Michal Žůrek - misaz
Homo:24.7.2013 21:24
print("Hello World")
Nahoru Odpovědět
24.7.2013 21:24
1010011 1000101 1011000
Avatar
Paradise
Tvůrce
Avatar
Paradise:24.7.2013 21:25

No chyba nebude v tom řádku. Já jsem Python po 4 hodinách použitelného IDE vzdal.

 
Nahoru Odpovědět
24.7.2013 21:25
Avatar
Odpovídá na Homo
Michal Žůrek - misaz:24.7.2013 21:26

dik, zjistil jsem že on ten tutorial co jsem si našel je asi pro starší python. :D

 
Nahoru Odpovědět
24.7.2013 21:26
Avatar
Homo
Člen
Avatar
Odpovídá na Michal Žůrek - misaz
Homo:24.7.2013 21:27

:-)
od pythonu 3.0 je print delana jako funkce

Nahoru Odpovědět
24.7.2013 21:27
1010011 1000101 1011000
Avatar
Paradise
Tvůrce
Avatar
Odpovídá na Homo
Paradise:24.7.2013 21:28

Aha, no alespoň vím, že nemám špatnou paměť :D

 
Nahoru Odpovědět
24.7.2013 21:28
Avatar
David Hynek
Tvůrce
Avatar
David Hynek:24.7.2013 21:30

v čem a jak spouštíte Python??

Nahoru Odpovědět
24.7.2013 21:30
Čím víc vím, tím víc věcí nevím.
Avatar
Odpovídá na David Hynek
Neaktivní uživatel:24.7.2013 21:32

Myslíš dokončenou, nebo vyvíjenou aplikaci? Já vyvíjenou v IDLE, dokončenou převádím na exe.

Nahoru Odpovědět
24.7.2013 21:32
Neaktivní uživatelský účet
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hynek
Kit:24.7.2013 21:45

Většinou z příkazového řádku

python skript.py

z editoru Vim při testování

<F9>

nebo prostým kliknutím na skript v GUI.

Kompilaci dělám tak, že z Pythonu napíšu

import skript
Editováno 24.7.2013 21:48
Nahoru Odpovědět
24.7.2013 21:45
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Drakeman
Tvůrce
Avatar
Odpovídá na Michal Žůrek - misaz
Drakeman:24.7.2013 21:47

musíš to uložit s příponou .py
EDIT: sorry až ted sem si vlastně všimnul, žes to uložil jako novy2.py, zmátnul mě nahoře to python.exe :-D

Editováno 24.7.2013 21:50
Nahoru Odpovědět
24.7.2013 21:47
Když se chce, tak jde všechno,
Avatar
David Hynek
Tvůrce
Avatar
David Hynek:24.7.2013 22:10

škoda že tu není chat...

Python mě celkem zaujal už dávno a tak se budu trochu ptát. Na Google mě prosím neposílejte :)

program se mi funguje, ale jen to problikne. Mám Python3.3 a spouštím to s koncovkou .py

jak spouštíte externí knihovnu?
from tkinter import *

Editováno 24.7.2013 22:11
Nahoru Odpovědět
24.7.2013 22:10
Čím víc vím, tím víc věcí nevím.
Avatar
Drakeman
Tvůrce
Avatar
Odpovídá na David Hynek
Drakeman:24.7.2013 22:15

Já na linuxu spouštím přes příkazový řádek.
python2.7 příkazem: python test.py
a python3.3 příkazem python3 test.py

Editováno 24.7.2013 22:17
Nahoru Odpovědět
24.7.2013 22:15
Když se chce, tak jde všechno,
Avatar
David Hynek
Tvůrce
Avatar
Odpovídá na Drakeman
David Hynek:24.7.2013 22:23

joo už mi to běží i s tou grafickou knihovnou... :)

Nahoru Odpovědět
24.7.2013 22:23
Čím víc vím, tím víc věcí nevím.
Avatar
Drakeman
Tvůrce
Avatar
Odpovídá na David Hynek
Drakeman:24.7.2013 22:31

kdyby jsi chtěl ještě s něčím poradit, tak mi klidně můžeš napsat PM

Nahoru Odpovědět
24.7.2013 22:31
Když se chce, tak jde všechno,
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hynek
Kit:25.7.2013 0:00

Nemusíš to psát jen do PM, můžeš i sem.

V Pythonu 2 funguje jen

from Tkinter import *

V Pythonu 3 zase jen

from tkinter import *
Nahoru Odpovědět
25.7.2013 0:00
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Jančík
Vlastník
Avatar
Odpovídá na Homo
David Jančík:25.7.2013 1:13

Ty už si začal studovat Python? Nebo si jen googlil? Protože jestlis začal dělat v Pythonu, tak mě fakt provokuješ :D
Ináč zjistil sem že můžeš dělat True + True / True - False == 2 Jako nevim no, asi je to v pořádku na PHPčkářský 0 == "foo" to je ještě dobrý. Šílenost všechno :D

Nahoru Odpovědět
25.7.2013 1:13
Zapomeň, že je to nemožné a udělej to ;)
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Jančík
Kit:25.7.2013 1:32

No co? False == 0, True == 1. Pořád lepší, než si plést číslo se stringem jako v PHP.

Nahoru Odpovědět
25.7.2013 1:32
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Jančík
Vlastník
Avatar
Odpovídá na Kit
David Jančík:25.7.2013 2:19

Šak řikám, že to je lepší jak PHP. Ale víš jak matematické operace s logickými hodnotami to je takový nezvyk. Já bych čekal, že to bude fungovat jako logické operace. Ikdyž jako ono je to docela logické, že si to převede na číslo a pracuje to tak s ním, i tak je to ale nezvyk. Taky to, že když dělím dvě čísla třebas integery výsledek bude desetinný. Což ovšem může zabránit častým chybám. Že na dělení jak funguje jinde se používají dvě lomítka. Ovšem například -11 // 2 nevrátí -5 ale -6. Takový lehký nezvyk. Jako je to zajímavý jazyk. Ale je to strašnej nezvyk.

Nahoru Odpovědět
25.7.2013 2:19
Zapomeň, že je to nemožné a udělej to ;)
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Jančík
Kit:25.7.2013 2:37

Je to zřejmě kvůli tomu, aby nula nebyla "tlustá". Také jsem zkusil

>>> print(-8.1//3.1)
-3.0

Skutečně zvláštní.

Ten jazyk byl stvořen spíš pro inženýry, aby si mohli spočítat cokoliv je napadne bez nějakého velkého přemýšlení. Včetně komplexních čísel, matic apod. Proto je ten jazyk takový volnější. To samozřejmě omezuje velikost programů, které se v tom dají vytvořit a udržovat.

Například pokud v objektu potřebuji další atribut, tak ho do toho objektu prostě přidám a nekoukám na to, že ve třídě není definován. Na gettery a settery se v Pythonu také nehraje. Funkce je objekt stejně jako třída či proměnná. Výjimky se občas používají k flow-control, protože jinak to nejde, ...

Nahoru Odpovědět
25.7.2013 2:37
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Jančík
Kit:25.7.2013 2:50

Některé vlastnosti vypadají docela úžasně. Zkus si třeba

a="Slunce je %10.6g km %s a má %d planet" % (150123450, "daleko", 8)
print(a)

Na co bych hledal nějaký printf, sprintf apod, když se to dá udělat elegantně přímo?

Nahoru Odpovědět
25.7.2013 2:50
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Neaktivní uživatel:25.7.2013 7:07

Já začal s Pythonem celkem nedávno. Nejdřív mě vystrašilo, jak je jeho syntaxe odlišná od ostatních jazyků, ale nakonec mi to přijde i lepší. Celý jazyk mi přijde bližší než ostatní. Sice není takový rozdíl mezi:

def echo(text):
    print(text)

a

function echo(String text)
{
    Console.WriteLine(text);
    // nebo
    System.out.println(text);
}

ale i tak mi to přijde mnohem kratší a bližší. :)

Nahoru Odpovědět
25.7.2013 7:07
Neaktivní uživatelský účet
Avatar
Benjibs
Člen
Avatar
Odpovídá na Kit
Benjibs:25.7.2013 7:29
from tkinter import *

Túto formu používa len málokto. Mna za to zvykli kamenovat, vraj 'konflikt názvov'.
Lepšie je si importovat len potrebné mená:

from tkinter import (Tk, Label, Button, Frame)

A formátovacie retazce už idú urobit aj takto:

a = "Slnko váži {0}kg a slon váži {hmotnost:.2f} kilogramov.".format(10, hmotnost = 45.7878787)
Editováno 25.7.2013 7:30
Nahoru Odpovědět
25.7.2013 7:29
1 + 1 = 2
Avatar
Benjibs
Člen
Avatar
Odpovídá na Kit
Benjibs:25.7.2013 7:38

Prečo nepoužívat gettery a settery? :O

@property
def radius(self)
    return self.__radius

@radius.setter
def radius(self, value)
    if radius >= 0
        raise chybnyPolomerException('Polomer musí byt >= 0')
    self.__radius = value

@radius.deleter
def radius(self)
    raise AttributeError('Vlastnosť polomer nemožno odstrániť.')

Zas mi to zničilo zarovnanie :(

Editováno 25.7.2013 7:39
Nahoru Odpovědět
25.7.2013 7:38
1 + 1 = 2
Avatar
Benjibs
Člen
Avatar
Odpovídá na Benjibs
Benjibs:25.7.2013 7:46

Zabudol som : za defmi, na vine je Java ]:>

Editováno 25.7.2013 7:46
Nahoru Odpovědět
25.7.2013 7:46
1 + 1 = 2
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Benjibs
Kit:25.7.2013 10:51

Napsal jsem Na gettery a settery se v Pythonu také nehraje. Samozřejmě že jdou udělat, ale na rozdíl od Javy a C# se dělávají jen tam, kde to má skutečně smysl.

Nahoru Odpovědět
25.7.2013 10:51
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Benjibs
Kit:25.7.2013 13:32

Záleží na okolnostech. Mně se víc líbí

a = "Slnko váži %d kg a slon váži %.2f kilogramov." % (10, 45.7878787)

Hodně záleží na tom, na co jsi zvyklý. Zřejmě na C# a proto je ti tvůj zápis bližší. Zatím jsem ještě nevypátral, jak si metoda format() poradí s tuples. Zápis s % to zvládá.

Nahoru Odpovědět
25.7.2013 13:32
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Benjibs
Člen
Avatar
Odpovídá na Kit
Benjibs:25.7.2013 13:49

V C# som v živote nerobil, a ani sa mi do toho nechce, lebo by to znamenalo inštaláciu Windowsu (už asi 5x, nie ďakujem, na Linuxe som vyrástol).

Metóda format si za to poradí so slovníkmi(či s tuplami, to neviem, ale mala by):

slovnik = dict(jano = 5, mikulas = 7)
a = 'Jano váži {0[jano]} kilo a mikuláš {0[mikulas]} kilo.'.format(slovnik)
Editováno 25.7.2013 13:51
Nahoru Odpovědět
25.7.2013 13:49
1 + 1 = 2
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Benjibs
Kit:25.7.2013 14:09

Už jsem to našel. Další syntaktický cukříček:

tuple = (5, 7)
a = 'Jano váži {0} kilo a mikuláš {1} kilo.'.format(*tuple)

i když spíš by se to využilo jinak:

tuples=(("Jano", 5), ("Mikuláš", 7), ("Ivana", 4))
for row in tuples:
    print("{0} váži {1} kilo".format(*row))
Nahoru Odpovědět
25.7.2013 14:09
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Benjibs
Kit:25.7.2013 14:13

Kvůli Devbooku jsem si na Ubuntu nainstaloval Mono, používám kompilátor gmcs, který ovládám přes make.

Nahoru Odpovědět
25.7.2013 14:13
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Benjibs
Člen
Avatar
Benjibs:25.7.2013 14:13

Hmm.. to druhé sa mi zdá zvláštne. * nerozbaľuje prvky rekurzívne, alebo?
EDIT: nič, nevišmol som si cyklus :`

Editováno 25.7.2013 14:15
Nahoru Odpovědět
25.7.2013 14:13
1 + 1 = 2
Avatar
Benjibs
Člen
Avatar
Benjibs:25.7.2013 15:03

Možno je to trochu od veci, ale je to jedno z mála vlákien o Pythone :P
Celkom ma prekvapilo, že v novej verzii Pythonu (3.4) budú implementované enumy.. A čo som pozeral na už hotovú knižnicu, tak to vyzerá super. Hlavne to, že sa s tým bude dať narábať ako so slovníkom (menu jedna radosť).

http://docs.python.org/…ry/enum.html#…

Nahoru Odpovědět
25.7.2013 15:03
1 + 1 = 2
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Benjibs
Kit:25.7.2013 15:08

Nevím, jestli menu je to správné použití, protože menu je z principu seznam, který s enumem ani slovníkem nemá nic společného. Enum je jen množina stavů.

Editováno 25.7.2013 15:10
Nahoru Odpovědět
25.7.2013 15:08
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Mischief Managed:25.7.2013 15:09

Nechtěl by tu někdo začít psát tutoriály na Python?

 
Nahoru Odpovědět
25.7.2013 15:09
Avatar
Benjibs
Člen
Avatar
Odpovídá na Kit
Benjibs:25.7.2013 15:13

Dajme tomu, že robím konzolovú aplikáciu. A uživateľ zadá nejaké slovo (resp. voľbu v menu). Ako by si to chcel robiť? Cez if, elif, else? Slovník je lepší:

slovnik = dict(a = pridat, b = zmazat, c = vyprintuj, d = zoznam, e = pozdrav)
slovnik[input()]()

Edit: Hodnoty slovníka sú funkcie

Editováno 25.7.2013 15:14
Nahoru Odpovědět
25.7.2013 15:13
1 + 1 = 2
Avatar
Kit
Tvůrce
Avatar
Nahoru Odpovědět
25.7.2013 15:16
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Benjibs
Člen
Avatar
Odpovídá na Mischief Managed
Benjibs:25.7.2013 15:17

Na py.cz nájdeš dosť vela tutoriálov v češtine, a celkom slušnú komunitu.

Nahoru Odpovědět
25.7.2013 15:17
1 + 1 = 2
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Benjibs
Kit:25.7.2013 15:21

Aha, ty jsi myslel takové menu. Může tam být trochu problém, pokud to chceš uspořádat jinak než podle abecedy. Slovník vlastně ani nemusí být uspořádaný.

Nahoru Odpovědět
25.7.2013 15:21
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Benjibs
Člen
Avatar
Odpovídá na Kit
Benjibs:25.7.2013 15:27

Pardon, asi nechápem.. Načo tam bude usporiadanie?

Nahoru Odpovědět
25.7.2013 15:27
1 + 1 = 2
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Benjibs
Kit:25.7.2013 15:29

Když chceš vypsat menu na obrazovku, asi budeš chtít mít položky v nějakém definovaném pořadí. Na zpracování vstupu od uživatele už pořadí samozřejmě nepotřebuješ.

Nahoru Odpovědět
25.7.2013 15:29
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Benjibs
Kit:25.7.2013 15:31

Zaregistroval jsem se do fóra na py.cz. Uvidím, jak to tam chodí a zda ta konference vůbec žije.

Nahoru Odpovědět
25.7.2013 15:31
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Benjibs
Člen
Avatar
Odpovídá na Kit
Benjibs:25.7.2013 15:35

K menu: Na to som chcel radšej použit predom pripravený string. Predsa budem vediet, ako to menu má vyzerat, ked začne písat :P

Py.cz : Ono je to riešené tak, že sa prihlásiš do ich konferencie. Keď pošleš mail, alebo pošle niekto iný, dôjde to všetkým do schránok. Trocha ma naštvalo, ked som 3 mesiace nebol na jednom maili, a mal som tam 104 správ.

Nahoru Odpovědět
25.7.2013 15:35
1 + 1 = 2
Avatar
Nahoru Odpovědět
25.7.2013 15:45
Neaktivní uživatelský účet
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Benjibs
Kit:25.7.2013 15:47

To máš ještě dobré. Ve své schránce mám asi 9200 nepřečtených vláken z různých diskuzí. Velmi dobře se v tom však hledá.

Menu dělám nejraději pohromadě jako seznam objektů, takže pak už žádný slovník nepotřebuji.

Nahoru Odpovědět
25.7.2013 15:47
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Benjibs
Člen
Avatar
Odpovídá na Neaktivní uživatel
Benjibs:25.7.2013 15:48

Nikto na ňom nie je :(

Nahoru Odpovědět
25.7.2013 15:48
1 + 1 = 2
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:25.7.2013 15:49

Jenže chat neplní účel, který většinou potřebujeme. Býval jsem tam připojen 24 hodin denně. Informační hodnota nulová.

Nahoru Odpovědět
25.7.2013 15:49
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Benjibs
Člen
Avatar
Odpovídá na Kit
Benjibs:25.7.2013 15:53

tak na takú voľnejšiu debatu.. :P

Nahoru Odpovědět
25.7.2013 15:53
1 + 1 = 2
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Benjibs
Kit:25.7.2013 15:59

Někteří si to pletli s poradnou, jiní se tam učili psát, někteří i číst.

Nahoru Odpovědět
25.7.2013 15:59
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Benjibs
Kit:25.7.2013 16:07

Ještě k tomu py.cz: Vyhovují mi konference, kde je kolem 100 zpráv denně. Tam to aspoň žije, je z čeho vybírat. Když máš dobrého e-mailového klienta, tak je to fajn.

Nahoru Odpovědět
25.7.2013 16:07
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Benjibs
Člen
Avatar
Odpovídá na Kit
Benjibs:25.7.2013 16:10

Takú nájdeš asi len na python.org :P

Nahoru Odpovědět
25.7.2013 16:10
1 + 1 = 2
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Benjibs
Kit:25.7.2013 16:15

Tam to také zeje prázdnotou. Devbook je živější.

Nahoru Odpovědět
25.7.2013 16:15
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 50 zpráv z 53.