IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Ako zobrať viacriadkový input

Aktivity
Avatar
ra3sk
Člen
Avatar
ra3sk:21.10.2016 20:23

Ahoj, s týmto mám už dlho problém a na internete som sa stretol s niečím čo sa volá raw_input(). Myslím ale, že v Pythone 3.X to nefunguje. Ide o to, že by som potreboval do jednej premennej načítať viacriadkový input.

 
Odpovědět
21.10.2016 20:23
Avatar
Odpovídá na ra3sk
Neaktivní uživatel:21.10.2016 21:48

Ahoj, v pythonu 3.x je místo raw_input() jen input(), jinak s těmi řádky ani nevím, jestli to jde nějak jinak, než za pomocí cyklu.

Nahoru Odpovědět
21.10.2016 21:48
Neaktivní uživatelský účet
Avatar
ra3sk
Člen
Avatar
Odpovídá na Neaktivní uživatel
ra3sk:21.10.2016 22:02

A práve to ma zaujíma. Lebo ja som mal na zadaní, že dostanem viacriadkový vstup, ten mám nejako uložiť do premennej a v tom vstupe mám vyhľadať niečo (berme, že vstup je text)

 
Nahoru Odpovědět
21.10.2016 22:02
Avatar
Odpovídá na ra3sk
Neaktivní uživatel:21.10.2016 22:11

Jsou 2 základní řešení a to buď pomocí cyklu for.

text = ""
for i in range(10):
    veta = input("Zadej větu: ")
    text += veta; #text = text + veta

V tomto případě by po tobě program chtěl 10x zadat vstup.
A nebo za pomocí cyklu while.

text = ""
while True:
    veta = input("Zadej větu: ")
    if veta == "":
        break;
    text += veta

A tady by jsi pro změnu mohl zadávat vstup jak dlouho chceš(program by skončil až by si vstup jen odentroval a nic do něj nenapsal)

Nahoru Odpovědět
21.10.2016 22:11
Neaktivní uživatelský účet
Avatar
prokop
Člen
Avatar
Odpovídá na Neaktivní uživatel
prokop:22.10.2016 8:17

Super, moc díky. Zrovna dneska v noci jsem se s tím taky potýkal, a nakonec jsem to nechal radši ráno. A vida, mám to tu jako na objednávku :-)
OT: to "by jsi" je hrozné zvěrstvo :-###

 
Nahoru Odpovědět
22.10.2016 8:17
Avatar
Odpovídá na prokop
Neaktivní uživatel:22.10.2016 9:08

Můžeš ještě zkusit volat read na sys.stdin. To ti načte vstup až do EOF (čili musíš na konci vstupu zmáčnkout Control^D). Ideální, pokud dáváš tomu programu vstup ze souboru na stdin.

Nahoru Odpovědět
22.10.2016 9:08
Neaktivní uživatelský účet
Avatar
prokop
Člen
Avatar
Odpovídá na Neaktivní uživatel
prokop:22.10.2016 9:22

Díky moc, momentálně to sice nevyužiju, ale určitě se mi to bude v budoucnu hodit

 
Nahoru Odpovědět
22.10.2016 9:22
Avatar
ra3sk
Člen
Avatar
Odpovídá na Neaktivní uživatel
ra3sk:22.10.2016 17:01

Ahoj, mohol by si postnúť časť kódu ako to použiť? Myslím, že tvoj post je najlepší z môjho pohľadu a potrieb. Díky.

 
Nahoru Odpovědět
22.10.2016 17:01
Avatar
Odpovídá na ra3sk
Neaktivní uživatel:22.10.2016 17:35
import sys

data = sys.stdin.read()
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
22.10.2016 17:35
Neaktivní uživatelský účet
Avatar
ra3sk
Člen
Avatar
Odpovídá na Neaktivní uživatel
ra3sk:22.10.2016 18:10

To je presne to čo som potreboval. A inak len taká ozázka pomimo. Dalo by sa to ukončiť aj inak ako command a d ?

 
Nahoru Odpovědět
22.10.2016 18:10
Avatar
Odpovídá na ra3sk
Neaktivní uživatel:22.10.2016 18:12

Ne, Control-D se v terminálu (většinou) překládá na EOF (End Of File, Konec Souboru). To je taky důvod, proč to umožňuje dát programu soubor jako vstup.

Nahoru Odpovědět
22.10.2016 18:12
Neaktivní uživatelský účet
Avatar
ra3sk
Člen
Avatar
Odpovídá na Neaktivní uživatel
ra3sk:22.10.2016 18:12

Tak díky moc. Som o skúsenosť bohatší.

 
Nahoru Odpovědět
22.10.2016 18:12
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 12 zpráv z 12.