Problém s mazáním položek načtených ze souboru – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Problém s mazáním položek načtených ze souboru – Python – Fórum – Programujte.comProblém s mazáním položek načtených ze souboru – Python – Fórum – Programujte.com

 

vojtano_k0
Návštěvník
6. 11. 2006   #1
-
0
-

No, není to ani problém s mazáním položek ze souboru, jakože s tím, když chci ukončit zadávání. Však vyzkoušejte zdroják. Spustím si normální program, zadám jména, čísla, vše v pohodě. Potom se mě to zeptá, zda chci vymazat nějakou položku ze seznamu. Dám ano, vložím číslo řádku, v pohodě se mi vymaže. Pokud ale chci ukončit vymazávání tím že nezadám nic, hodí mi to syntaktickou chybu (viz. zdroják). Nevíte prosím někdo jak s tím hnout? Díky předem.

Zdroják:



# -*- coding: cp1250 -*- .
import sys,time
class telseznam:
"Trida telefonnich seznamu. Implementace pomoci seznamu."

def __init__(self):
"Inicializacni metoda"

self.jmena=[]
self.cisla=[]

def pridej(self, jmeno, cislo):
"Metoda na pridavani do seznamu."

self.jmena.append(jmeno)
self.cisla.append(cislo)

def uloz(self):
delka=len(self.jmena)
seznam=file('seznam.txt', 'a')
for vec in range(delka):
seznam.write(self.jmena[vec]+" ")
seznam.write(self.cisla[vec]+"n")
seznam.close()

def nacti(self):
seznam=file("seznam.txt", "r")
i=0
print u"nVýpis seznamu: "
for radek in seznam:
cislo=radek[-10:-1]
jmeno=radek[:-11]
print i,".: ",jmeno,"-", cislo
i=i+1
seznam.close()

def vymaz(self, poradi):
seznam2=file('seznam.txt','r')
seznam1=[]
for radek in seznam2:
seznam1=seznam1+[radek]
del(seznam1[poradi])
seznam2.close()
seznam=file('seznam.txt', 'w')
for veci in range(len(seznam1)):
seznam.write(seznam1[veci])
seznam.close

pratele=telseznam()

print u"Pro ukončení přidávání nezadávejte nic.n"

jmeno=raw_input("Zadej jmeno pro pridani do seznamu: ")
if jmeno != "":
cislo=raw_input("Zadej cislo k tomuto jmenu: ")
while len(cislo) != 9:
print u"Zadané číslo nemá požadovanou délku 9 znaků."
cislo=raw_input("Zadej cislo k tomuto jmenu: ")
while jmeno != "":
pratele.pridej(jmeno, cislo)
jmeno=raw_input("nZadej jmeno pro pridani do seznamu: ")
if jmeno != "":
cislo=raw_input("Zadej cislo k tomuto jmenu: ")
while len(cislo) != 9:
print u"Zadané číslo nemá požadovanou délku 9 znaků."
cislo=raw_input("Zadej cislo k tomuto jmenu: ")

pratele.uloz()
pratele.nacti()

ano_ne=raw_input("nPrejete si vymazat nektery z kontaktu? (a/n): ")
if ano_ne=="a":
print u"nPro ukončení vymazávání kontaktů, nezadávejte nic."
poradi=input("nZadej cislo radku, ktery chcete odstranit: ")
while str(poradi) != "":
pratele.vymaz(poradi)
pratele.nacti()
poradi=input("nZadej cislo radku, ktery chcete odstranit: ")

pratele.nacti()
x=raw_input("nStisknete Enter pro ukonceni programu...")
sys.exit()

Nahlásit jako SPAM
IP: ...–
"Jen dvě věci jsou nekonečné. Vesmr a lidská hloupost. Ale tím prvním si nejsem jistý." - Einstein
geon0
Grafoman
7. 11. 2006   #2
-
0
-

Nedávej sem celý programy, jen části, demo ukázky s problémem.

Pokud nic nezadáš, zadáš Enter, tedy "n". A do inputu toto nelze. Takže doporučuji používat raw_input() a pro účely mazání převádět na číslo pomoci int().

Nahlásit jako SPAM
IP: ...–
geon. volume doprava.
vojtano_k0
Návštěvník
7. 11. 2006   #3
-
0
-

Ja pořád nevím jak to myslíš. Zkoušel jsem tam dát to raw_input a v metodě vymaz to převést na int, ale neustále mi to hází chybu SyntaxError. Nemohl bys prosím vyzkoušet ten program a říct mi, co tam dělám špatně? Už jsem opravdu v koncích :-(

Nahlásit jako SPAM
IP: ...–
"Jen dvě věci jsou nekonečné. Vesmr a lidská hloupost. Ale tím prvním si nejsem jistý." - Einstein
vojtano_k0
Návštěvník
7. 11. 2006   #4
-
0
-

AAAHAAA. Tak už vím co jsem dělal špatně. Změnil jsem sice input na raw_input v cyklu while poradi != "": ale nezměnil jsem to v té otázce před cyklem, takže když jsem to zkoušel a nezadával nic a hned enter => do cyklu to ani nevešlo. Tím pádem jsem tam měl tu samou chybu. no, nebudeme to řešit, hlavně že to funguje. Promiň za chaotické vysvětlení. Díky za radu, už vím co jsem dšlal ěpatně a poučil se z toho :-)

Nahlásit jako SPAM
IP: ...–
"Jen dvě věci jsou nekonečné. Vesmr a lidská hloupost. Ale tím prvním si nejsem jistý." - Einstein
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, 6 hostů

Podobná vlákna

Vzhled položek menu — založil oxidián

ComboBoxEx a vice položek — založil Fereii

Počet položek v GROUP BY — založil Kall_Ell

 

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