String formatting problem. – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

String formatting problem. – Python – Fórum – Programujte.comString formatting problem. – Python – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené — příspěvek s řešením.
Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Kéfas0
Návštěvník
14. 2. 2012   #1
-
0
-

Tentokrát by som potreboval pomôcť s "reťazcovým formátovaním".(String formatting)

Zdroják: 

mena  = []
cisla = []

def VytvorTelZoznam(Iter=None):
    print("Zadajte meno %d. klienta: ", % Iter+1, end='')     #Tu je chyba
    otazka_0 = input()
    print("Zadajte tel. číslo %d. klienta: ",% Iter+1, end='')
    otazka_1 = input()
    print("\n")
    mena.append(otazka_0)
    cisla.append(otazka_1)

T_or_F = True
while T_or_F:
    otazka_0 = int(input("Koľko krát chcete pridať nového klienta?\n>>> "))
    for i in range(otazka_0):
        VytvorTelZoznam(i)   
    print("-" * 50)
    print("Čo teraz chcete?")
    otazka_1 = input("Ukončiť: 0, Vypísať zoznam: 1")
    if otazka_1 == "0":
        T_or_F = False
        break
    elif otazka_1 == "1":
        print("-" * 75)
        for Iter in range(len(mena)):
            print(mena[Iter]," : ",cisla[Iter])

Za percentuálnym symbolom dôjde k chybe.

Zobrazí sa mi okno s nápisom "Invalid syntax "

.No a v zdrojáku sa mi chyba zvýrazní červenou farbou toto:

print("Zadajte meno %d. klienta: ",% ( Iter+1), end='')

Prečo mi to vyhodí syntaxovú chybu???

Nahlásit jako SPAM
IP: 87.239.56.–
Reklama
Reklama
Řešení
sputnikone+1
Věrný člen
14. 2. 2012   #2
-
0
-
Vyřešeno Nejlepší odpověď

#1 Kéfas
Protože bys měl použít Python 3

mena = []
cisla = []


def VytvorTelZoznam(Iter=None):
    print("Zadajte meno {}. klienta: ".format(Iter + 1), end='')     #Tu je chyba
    otazka_0 = input()
    print("Zadajte tel. číslo {}. klienta: ".format(Iter + 1), end='')
    otazka_1 = input()
    print("\n")
    mena.append(otazka_0)
    cisla.append(otazka_1)

T_or_F = True
while T_or_F:
    otazka_0 = int(input("Koľko krát chcete pridať nového klienta?\n>>> "))
    for i in range(otazka_0):
        VytvorTelZoznam(i)
    print("-" * 50)
    print("Čo teraz chcete?")
    otazka_1 = input("Ukončiť: 0, Vypísať zoznam: 1\n")
    if otazka_1 == "0":
        T_or_F = False
        break
    elif otazka_1 == "1":
        print("-" * 75)
        for Iter in range(len(mena)):
            print(" : ".join((mena[Iter], cisla[Iter])))
Nahlásit jako SPAM
IP: 89.102.4.–
Kéfas0
Návštěvník
15. 2. 2012   #3
-
+1
-
Zajímavé

#2 sputnikone
Vo funkcii som urobil tú chybe, že v printe za textom "Zadajte meno %d. klienta: ", nemá byť čiarka pred %!

print("Zadajte meno %d. klienta: ", % Iter+1, end='')
                             # ČIARKA tam nemá byť.

print("Zadajte meno %d. klienta: " % Iter+1, end='')

                         #Toto je už správne.

Ale dik, že si to napísal vo verzii 3.x

Nahlásit jako SPAM
IP: 87.197.52.–
Kéfas0
Návštěvník
16. 2. 2012   #4
-
0
-

Teraz mám nový problém.

Zoznamy : mena a cisla, zmením na jeden zoznam, do ktorého budem takto zapisovať:

>>> zoznam.extend([[otazka_0,otazka_1]])
[[Meno_0,Cislo_0], [Meno_1,Cislo_1], [Meno_2,Cislo_2]]

Potom by som to chcel vypísať pomocou cyklu for.

Výpis by mal takto vyzerať:

Meno_0 : Cislo_0   
Meno_1 : Cislo_1    # Premenné
Meno_2 : Cislo_2
# atď.

Dám vám zdroják, že kde som to zle naprogramoval.

zoznam = []
   ......Funkcia.......
   .......................
   .......................
   zoznam.extend([[otazka_0,otazka_1]])
# Uloženie do zoznamu
.........................
.........................
.........................
.........................
for Iter in range(len(zoznam)):
            print(zoznam[Iter][Iter], " : ", zoznam[Iter][Iter+1])
#Výpis

Konkrétne po výpise "nultého indexu", nastane runtime error.

Toto mi vyhodí:

Heinrich Zeitung : 9780 456 123 # Toto je len príklad

Traceback (most recent call last):
  File "D:/Users/Peter/Desktop/Zoznam01.py", line 25, in <module>
    print(zoznam[Iter][Iter], " : ", zoznam[Iter][Iter+1])
IndexError: list index out of range

Ako to mám opraviť? 





   

Nahlásit jako SPAM
IP: 87.239.56.–
m->29+6
Super člen
16. 2. 2012   #5
-
+2
-
Zajímavé

Neviem čo presne chceš dosiahnuť, ale ak máš zoznam 

zoznam = [(Meno_0,Cislo_0), (Meno_1,Cislo_1), (Meno_2,Cislo_2)]

a chceš vypísať meno a číslo vedľa seba, tak takto: 

for dvojica in zoznam:
  print "%s : %d" % dvojica

Nahlásit jako SPAM
IP: 83.240.51.–
Kéfas0
Návštěvník
17. 2. 2012   #6
-
0
-

#5 m->29
Ty to vložíš ako tuple do zoznamu.

Ale ja  vložím zoznam do zoznamu a potom mám problém to odťiaľ vytlačiť,

 bez toho, aby som tam mal hranaté zátvorky. 

A chcel by som vidieť riešenie, ako mám zoznam v zozname vypísať pomocou cyklu for.

Tvoje riešenie je zaujímavé a páči sa mi to, ale asi si nepochopil čo som žiadal.

Pokús sa tieto zoznamy v zozname vypísať.

s = [['Marek Kaloš','789 456 123'],['Ondrej Studený','789 456 123'],['Alfonz Fofrík','456 789 123']]

V každom prípade si zvolil chytrejší spôsob. 

Nahlásit jako SPAM
IP: 87.239.56.–
sputnikone+1
Věrný člen
17. 2. 2012   #7
-
+1
-
Zajímavé

#6 Kéfas
 

for name, number in zoznam:
    print("{} : {}".format(name, number))
Nahlásit jako SPAM
IP: 89.102.4.–
Kéfas0
Návštěvník
17. 2. 2012   #8
-
0
-

#7 sputnikone
Výborne!

Už som to niekde videl, ale toto by ma asi nenapadlo.

I think you must be clever! 

Nahlásit jako SPAM
IP: 87.239.56.–
Kéfas0
Návštěvník
17. 2. 2012   #9
-
0
-

#7 sputnikone
Myslím si, že keby si s ľudmi viac komunikoval, tak by to bolo omnoho ľahšie.

Nahlásit jako SPAM
IP: 87.239.56.–
m->29+6
Super člen
17. 2. 2012   #10
-
+1
-
Zajímavé

#6 Kéfas
A čo ťa núti tam dávať zoznam? Zoznam je zložitejšia štruktúra ako n-tica a pritom jej schopnosti vôbec nevyužiješ. Každopádne, riešenie je jednoduché: 

for dvojica in zoznam:
  print "%s : %d" % tuple(dvojica)
Nahlásit jako SPAM
IP: 83.240.51.–
Kéfas0
Návštěvník
17. 2. 2012   #11
-
0
-

#10 m->29
Úkol. 

Python lekcie od Pavla Kosinu.

Ozaj? Prečo už nepíše nové lekcie??

Nahlásit jako SPAM
IP: 87.239.56.–
black evil+1
Newbie
17. 2. 2012   #12
-
0
-

Neviem, jeho posedna navšteva tu je asi par rokov.

PS. Prečo sa zrušily ulohy?

Mohlo by sa to zase zaviesť, no treba niekoho kto to bude opravovať.

Nahlásit jako SPAM
IP: 87.244.224.–
Učim sa v pythone. Je to môj prvý programovací jazyk:)) A je skvelý:D
sputnikone+1
Věrný člen
18. 2. 2012   #13
-
0
-

#9 Kéfas
Komunikuji s lidmi, kterých si vážím. Nebo s těmi, co mi zaplatí...

Nahlásit jako SPAM
IP: 78.45.232.–
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, 23 hostů

Podobná vlákna

String to hex ebo Byte()"string" — založil Roman Uherek

String — založil Karel P.

 

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