Potřeboval bych poradit,jak se dají smazat všechny položky v seznamu.Bluejacker mi poradil ,že to jde udělat jednoduše příkazem
seznam=[]
, ale mě to nejde .Nemáte někdo ještě jednu variantu?Potřeboval bych poradit,jak se dají smazat všechny položky v seznamu.Bluejacker mi poradil ,že to jde udělat jednoduše příkazem
seznam=[]
, ale mě to nejde .Nemáte někdo ještě jednu variantu?To geon:No pokusím se to vysvětlit.Já jsem potřeboval vytvořit seznam zodpovězených otázek k mé hře.A po stisknutí tlačítka F2 v hlavním okně jsem chtěl aby se spustila nova hra.nadefinoval jsem funkci nova_hra a potřebuji ještě vymazat ten seznam zodpovězených otázek a vlastně skoro všechny seznamy,aby to šlo odznova.Jenomže když zmáčknu F2 ,tak se ten seznam nevymaže.Mám sem dát skript?
asi jo... protože s tvýho popisu mi to moc jasný není...
To Blujacker:Já nikdy neuměl moc vysvětlovat,hned ho sem kopnu
To Blujacker:
from Tkinter import *
import fileinput
import random
def nova_hra(stisk):
vstup.delete(0,END)
Dalsi()
hlavni=Tk()
hlavni.bind('<F2>',nova_hra)
pouzite=[]
so=[]
otazky=['1 + 5 = ?','Kolik nohou ma srnka?','Kolik nohou ma pavouk?','Kolik nohou ma brouk?']
odpovedi=['6','4','8','6']
global x
x=random.randint(0,len(otazky)-1)
def konec():
t2=Label(hlavni,text='spravnych odpovedi : ' + str(len(so)))
t2.pack(fill=BOTH)
vstup.insert(0,',stisknutim tlacitka "F2" zacnete novou hru.')
def uloz_skore():
jmeno=vstup2.get()
soubor=open('C:/Documents and Settings/uzivatel/Plocha/parba/vysledky.txt','a+')
soubor.write(jmeno + ' : ' + str(len(so))+"""
""")
vstup2.delete(0,END)
vstup.insert(0,'Hotovo!')
vstup.delete(0,END)
def Dalsi():
global
x=random.randint(0,len(otazky)-1)
if len(pouzite)==len(otazky):
t3=Label(hlavni,text='''Vyborne,odpovedel/a jste na vsechny otazky''')
t3.pack(fill=BOTH)
konec()
if x in pouzite:
Dalsi()
else:
pouzite.append(x)
print pouzite
vstup.delete(0,END)
vstup.insert(0,otazky[x])
def OK():
global x
odpoved=vstup2.get()
vstup2.delete(0,END)
if odpoved == odpovedi[x]:
vstup.delete(0,40)
vstup.insert(0,'Spravne!')
so.append("spravna odpoved")
if odpoved != odpovedi[x]:
vstup.delete(0,END)
vstup.insert(0,'spatne,zpravna odpoved je : '+ str(odpovedi[x]))
konec()
t=Label(hlavni,text=""" FEJST HRA by Tom9k
Pokyny:
Vymazte otazku, zadejte spravnou odpoved a dejte OK.
Pro dalsi otazku kliknete na tlacitko "Dalsi".Pokud si chcete ulozit vase skore,
zadejte sve jmeno do vstupni radky a dejte "ulozit".""")
t.pack(fill=BOTH)
vstup=Entry(hlavni)
vstup.pack(fill=BOTH)
vstup.insert(0,otazky[x])
pouzite.append(x)
ram=Frame(hlavni)
ram.pack(fill=BOTH)
vstup2=Entry(ram)
vstup2.pack(side=LEFT)
tl2=Button(ram,text=' OK ',command=OK)
tl2.pack(side=LEFT)
tl1=Button(ram,text=' Dalsi >>',command=Dalsi)
tl1.pack(side=LEFT)
tl3=Button(ram,text='Ulozit skore',command=uloz_skore)
tl3.pack(side=RIGHT)
t4=Label(hlavni)
t4.pack()
ram.focus_set()
hlavni.mainloop()
To Blujacker:Já tu hru snad nikdy nedodělam :ms_0140: Jo to mazani je blbě a to sem si myslel,že sem na to kápnul konečně
To Blujacker:Teď sem si všimnul,že jsem tam nechal execfile ,tak si budeš muset místo toho dat dva seznamy (otazky a odpovedi),sorry.Ono je to vlastně celý nějaký divný ,to uvidíš,když to spustíš
Nemůžeš si to opravit tak, aby nám to fungovalo ihned, abychom nemuseli nejdřív 15 minut tvůj script upravovat, aby nám to vůbec fungovalo, abychom pak zjistitli, kde že je vlastně ta chyba? Proč tam jsou prázdné řádky mezi řádky? Nemůžeš používat relativní cesty? - protože ne každý uživatel se jmenuje "uzivatel" ....
To Blujacker: doufám, že mu vše neopravíš a nepřineseš na stříbrném podnose ;-)
To geon:Já se omlouvám ,uvědomil jsem si to až po té,co jsem do poslal.Bohužel nevím jak se dělají relativní cesty :ms_0188:
To geon: Neboj, nechám ho s tím potrápit jako ty mě dřív :-)
To tom9k: Nelíbí se mi tam ta vnořená funkce mazani. pak pojmenování funkcí. musím se vždy podívat jakou má to tlačítko funkci místo aby mi to bylo jasný. Místo fce1 třeba FunkceDalsi nebo tak něco. Dále bych asi ty soubory ukládal do pracovního adresáře. Ten zjistíš pomocí modulu os:
>>> import os
>>> os.getcwd()
'C:\\Python24'
tady je malá ukázka jak by to mohlo vypadat. Musel by sis k tomu udělat to načítání otázek, funkci novy_hry, ukládání a tak...Snad si s tím poradíš
# -*- coding: cp1250 -*-
from Tkinter import*
import random
otazky=["kolik je 5*5?","kolik je 2*2?"]
odpovedi=["25","4"]
def Ok():
if vstup.get() == odpovedi[x]:
print "dobre"
else:
print "spatne"
UdelejOtazku()
def UdelejOtazku():
global x
vstup.delete(0,END)
x=random.randint(0,len(otazky)-1)
stitek["text"] = otazky[x]
okno=Tk()
okno.title(u'Ukázka')
stitek=Label()
stitek.pack()
vstup=Entry()
vstup.pack()
Button(text="Ok",command=Ok).pack()
UdelejOtazku()
mainloop()
To tom9k: dobrý, není probém to opravit, máš tam tlačítko Editovat
To Blujacker: Nesouhlas. Pro začátečníky je nejlepší mít pracovní složku ve složce, kde mají script ;-) Ostatně ani já nemám pracovní složku, tam kde uvádíš, ale ve svým domovský složce mám složku "Python", tedy "C:\Documents and Settings\geon\Dokumenty\Python"
To tom9k: relativní cesta je když .... vyhgodíš to c:\doc.............. a necháš tam jen "vysledky.txt", apod. Tyto soubory pak budou vždy na stejném místě, jako tvůj script, a to bude platit pro každého, komu svůj script pošleš ...
To geon: Já to tam taky nemám. Ale sem mu ukazoval jak se zjistí aktuální pracovní adresář a ukazoval sem to v shellu. Já většinou mám rpo každý větší program vlastní adresář, takže třeba: C:\Documents and Settings\Blu\Plocha\Moje tvorba\MaRo
co vy všichni máte s tou plochou? :-) plocha je nejmíň vhodné a bezpečné místo, alespon u mne, špatně přstupné z různých managerů, lehce přístupné pro vaše lamovské spoluvlastníky počíatče, pokud jedete na stejný učet, a tudfíž lehce zranitelné, když se třeba pohádáte se sestrou ;-)
já všechno zálohuju jak na ftp, usb a na jiný místa na počítači. už sem si na to nák zvykl že to tam mám. Se sestrou se hádám pořád, to jo, ale ona má sbýho uživatele a na můj s nedostane. Ona ani neumí pusit hru, natož cracknout moje heslo ;)
Tak sem to opravil,u té funkce nova_hra potřebuju vymazat seznamy jako pouzite a so(spravne odpovedi).Ale nechápu proč,když odpovím na všechny otázky a dám Další,tak se mi python zasekne a musím ho vypnout.To se mi ještě nestalo.Jestli sem to upravil tak,že vám to nepůjde tak se zastřelim.Mimochodem my mame z bratrem jenom jeden profil,ja to dělam tak,že si dam třeba zástupce hry do složky na plochu,tu složku skryju ,změnim ikonu a dam jí na místo ,aby skoro nebyla vidět a můj bratr se k mejm hrám nedostane a neumí si to najít jednóduše v D:/Hry/... :ms_0017: Sice bych si moh v nastavení složky dát ,aby se nezobrazovaly skryté ikony,ale pak bych to musel poslepu hledat.A s mojí pamětí...
u té funkce nova_hra potřebuju vymazat seznamy jako pouzite a so(spravne odpovedi).
tak je vymaž ;-) nejdřív musíš pythonu říct, že proměnné so a pouzite jsou stejné, jako ty mimo funkci (protože ve funkci fungují lokální proměnné, to si někde nastuduj, to je *hodně* důležité). No a pak je smaž, asi takhle:
def nova_hra(stisk):
global so, pouzite
so=[]
pouzite=[]
# ...další tvoje věci
if x in pouzite:
Dalsi()
To geon:hmm,moc dekuju,jeste se na to mrknu;-)
To geon:No ,to už jsem opravil,ale pořád nevim co tam mam dát místo toho příkazu "Dalsi()" .Vyzkoušel jsem snad všechno a nevím ,čím to nahradit,aby to běhalo dobře
tak nedávej ty otázky do seznamu pouzite. at se muzou ty otázky opakovat pořád a je to...
To Blujacker:no jo,jenomze kdyz ti to bude davat stejny otazky ,tak to bude pekne blby.Nevis,jak udelat casovej limit na odpoved?Asi pres modul time,ale nevim jak
okno.after(cas,akce)
a cas je v milisekundach...
To Blujacker:hmm,dík
To Blujacker: Promin ,že tě ještě otravuju,ale nevíš ,jak se dá v pythonu ukončit spuštěný proces?A taky jak se dá přerušit to odpočítávání při tom časovém limitu? :ms_0017:
myslíš jako celý program? tak to by mohlo být myslím toto:
import sys
sys.exit([1])
To Blujacker:No ja myslel jakykoliv program ve woknech
to rušení odpočítávání je lehký:
okno.after_cancel(id)
podle pořadí:
del seznam[2]
To Blujacker:A nepamatujes si ,jak byl konkretne ten prikaz tasklist a taskkill?
To Blujacker:Tak jsem to zkoušel,ale nejde mi to,nemohl bys mi dat jednoduchý příklad?
Uložím si do souboru
import subprocess
proces=subprocess.Popen("ipconfig", stdout=subprocess.PIPE)
print proces.stdout.read()
raw_input()
To Blujacker:No to jsem právě zkoušel a nefachá mi to.hodí to chyby:
IDLE internal error in runcode()
Traceback (most recent call last):
File "C:\Documents and Settings\uzivatel\Plocha\nic.py", line 3, in <module>
proces=subprocess.Popen("ipconfig", stdout=subprocess.PIPE)
File "C:\Program Files\Python25\lib\subprocess.py", line 581, in __init__
errread, errwrite) = self._get_handles(stdin, stdout, stderr)
File "C:\Program Files\Python25\lib\subprocess.py", line 676, in _get_handles
p2cread = self._make_inheritable(p2cread)
File "C:\Program Files\Python25\lib\subprocess.py", line 717, in _make_inheritable
DUPLICATE_SAME_ACCESS)
TypeError: an integer is required
Nevim,jestli to je tim,že mam 2.5takovou chybu mi to hází když to pouštím přes IDLE.
To Blujacker:Tak ono mi to nejde jenom přes IDLE,když to spustim normalne,tak to jde.Ale stejně to vypíše IP a ne spuštěné procesy
tak místo "ipconfig" musíš dát "tasklist" a vypíše to ty procesy...
To Blujacker:No jo,ja sem *****.A jak ukoncim ten proces?Normalne zase misto toho tasklist napíšu taskkill a vedle toho zadam název procesu?
jj, dyžtak dej v příkazvoý řádce taskkill /? zo to zobrazí možnosti jak ten prcoes vypnout
To Blujacker:Super,funguje to,diky moc
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku