Portál AbcLinuxu, 6. května 2025 20:19
#!/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): breakPokud 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.