Portál AbcLinuxu, 2. prosince 2025 10:50
#!/usr/bin/python
def read():
str = raw_input('Napis neco: ')
return str
def write(msg):
print msg
def cmd_shutdown():
raise SystemExit
def pokusna():
print "POkus"
cmd_shutdown()
COMMANDS = {}
COMMANDS['SHUTDOWN'] = cmd_shutdown
COMMANDS['POKUS'] = pokusna
if __name__ == "__main__":
while True:
try:
msg = read()
if msg in COMMANDS:
COMMANDS[msg]
write(msg)
except (KeyboardInterrupt, EOFError):
break
Pokud uzivatel zada na vstupu klicove slovo, tak se provede prislusna fce. V propade slova POKUS vse funguje a fce pokusna() se provede, ale pokud zadam SHUTDOWN, tak se to jen prepise na obrazovku a fce cmd_shutdown() se vubec neprovede.
Jsem v Pythonu novy a spoustu veci nevim, takze je mozne, ze se jedna o prkotinu, kazdopadne budu rad za jakykoliv hint.
Řešení dotazu:
'retezec', coz by melo stacit ke srovnani pomoci "in" a naslednemu pouziti prikazu COMMANDS['retezec']...
PV248, že? ;] Pan Sivak to ma rovnou ve slajdech. http://msivak.fedorapeople.org/python/01.html#(17)
řádky:
get a first word (cmd) from msg and test if it is a valid command (if cmd in COMMANDS:)
if yes: execute the corresponding function (ret = COMMANDS[cmd](rest_of_the_input)) and process the result ret (if is_done(ret):, if is_next(ret):)
Nesmis zapomenout tu hodnotu ze slovniku zavolat jako funkci (tj. dat za ni () ), jinak ti to jenom vrati objekt <function fce at 0xXXXXXXXXXXXXX> (XXX hex adresa)
Tohle jsem prehlid, ty zavorky. Jasne vono je to logicky :D Diky moc.Nesmis zapomenout tu hodnotu ze slovniku zavolat jako funkci (tj. dat za ni () )
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.