abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
eParkomat, startup z ČR, postoupil mezi finalisty evropského akcelerátoru ChallengeUp!
Robot na pivo mu otevřel dveře k opravdovému byznysu
Internet věcí: Propojený svět? Už se to blíží...
dnes 16:24 | Nová verze

Byla vydána Mageia 5.1. Jedná se o první opravné vydání verze 5, jež vyšla v červnu loňského roku (zprávička). Uživatelům verze 5 nepřináší opravné vydání nic nového, samozřejmě pokud pravidelně aktualizují. Vydání obsahuje všechny aktualizace za posledního téměř půldruhého roku. Mageia 5.1 obsahuje LibreOffice 4.4.7, Linux 4.4.32, KDE4 4.14.5 nebo GNOME 3.14.3.

Ladislav Hagara | Komentářů: 0
dnes 13:42 | Pozvánky

V Praze probíhá konference Internet a Technologie 16.2, volné pokračování jarní konference sdružení CZ.NIC. Konferenci lze sledovat online na YouTube. K dispozici je také archiv předchozích konferencí.

Ladislav Hagara | Komentářů: 0
včera 22:44 | Komunita

Joinup informuje, že Mnichov používá open source groupware Kolab. V srpnu byl dokončen dvouletý přechod na toto řešení. V provozu je asi 60 000 poštovních schránek. Nejenom Kolabu se věnoval Georg Greve ve své přednášce Open Source: the future for the European institutions (SlideShare) na konferenci DIGITEC 2016, jež proběhla v úterý 29. listopadu v Bruselu. Videozáznam přednášek z hlavního sálu je ke zhlédnutí na Livestreamu.

Ladislav Hagara | Komentářů: 14
včera 15:30 | Zajímavý projekt

Společnost Jolla oznámila v příspěvku Case study: Sailfish Watch na svém blogu, že naportovala Sailfish OS na chytré hodinky. Využila a inspirovala se otevřeným operačním systémem pro chytré hodinky AsteroidOS. Použita je knihovna libhybris. Ukázka ovládání hodinek na YouTube.

Ladislav Hagara | Komentářů: 8
včera 14:15 | Nová verze

Byla vydána verze 7.1.0 skriptovacího jazyka PHP používaného zejména k vývoji dynamických webových stránek. Jedná se o první stabilní verzi nejnovější větvě 7.1. Přehled novinek v dokumentaci. Podrobnosti v ChangeLogu. K dispozici je také příručka pro přechod z PHP 7.0.x na PHP 7.1.x.

Ladislav Hagara | Komentářů: 2
včera 12:55 | Nová verze

Google Chrome 55 byl prohlášen za stabilní. Nejnovější stabilní verze 55.0.2883.75 tohoto webového prohlížeče přináší řadu oprav a vylepšení (YouTube). Opraveno bylo také 36 bezpečnostních chyb. Mariusz Mlynski si například vydělal 22 500 dolarů za 3 nahlášené chyby (Universal XSS in Blink).

Ladislav Hagara | Komentářů: 4
včera 11:55 | Pozvánky

Máte rádi svobodný software a hardware nebo se o nich chcete něco dozvědět? Přijďte na 135. sraz spolku OpenAlt, který se bude konat ve čtvrtek 8. prosince od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Sraz bude tentokrát tématický. Bude retro! K vidění budou přístroje jako Psion 5mx nebo Palm Z22. Ze svobodného hardwaru pak Openmoko nebo čtečka WikiReader. Přijďte se i vy pochlubit svými legendami, nebo alespoň na pivo. Moderní hardware má vstup samozřejmě také povolen.

xkucf03 | Komentářů: 0
včera 00:10 | Nová verze

Byla vydána verze 3.2 svobodného systému pro detekci a prevenci průniků a monitorování bezpečnosti počítačových sítí Suricata. Z novinek lze zmínit například podporu protokolů DNP3 a CIP/ENIP, vylepšenou podporu TLS a samozřejmě také aktualizovanou dokumentaci.

Ladislav Hagara | Komentářů: 0
1.12. 21:00 | Nová verze

Byla vydána beta verze Linux Mintu 18.1 s kódovým jménem Serena. Na blogu Linux Mintu jsou hned dvě oznámení. První o vydání Linux Mintu s prostředím MATE a druhé o vydání Linux Mintu s prostředím Cinnamon. Stejným způsobem jsou rozděleny také poznámky k vydání (MATE, Cinnamon) a přehled novinek s náhledy (MATE, Cinnamon). Linux Mint 18.1 bude podporován až do roku 2021.

Ladislav Hagara | Komentářů: 0
1.12. 16:42 | Nová verze

Byl vydán Devuan Jessie 1.0 Beta 2. Jedná se o druhou beta verzi forku Debianu bez systemd představeného v listopadu 2014 (zprávička). První beta verze byla vydána v dubnu letošního roku (zprávička). Jedna z posledních přednášek věnovaných Devuanu proběhla v listopadu na konferenci FSCONS 2016 (YouTube, pdf).

Ladislav Hagara | Komentářů: 0
Kolik máte dat ve svém domovském adresáři na svém primárním osobním počítači?
 (32%)
 (24%)
 (29%)
 (7%)
 (5%)
 (3%)
Celkem 767 hlasů
 Komentářů: 50, poslední 29.11. 15:50
Rozcestník
Reklama

Dotaz: Ošetření vstupu

24.9.2015 11:25 Jack Hokus | skóre: 31 | blog: LostHeaven
Ošetření vstupu
Přečteno: 392×
učím se python a zápasím s ošetřením uživatelského vstupu. Našel jsem si tenhle příklad

Chci si ten příklad upravit tak, aby mi fungoval v klasickém dotazu na věk. Tedy, program se uživatele zeptá, kolik je mu let, pokud odpoví číslem, tak vytiskne věk a končí. Pokud ne, tak by měl vydat uživateli příkaz, aby hodnotu zadal jako čísla.

Zatím se mi to nepodařilo, asi je to tím, že jsem příklad dobře nepochopil. Pokusím se ho projít řádek po řádku a vysvětlit jej. Pokud někde udělám chybu, prosím, opravte mne.

Tento řádek vytiskne příklad se kterým se bude pracovat
print("1/x=y")
Tady začíná ten testovací blok
try:
Zde se definuje proměnná x
x = int(input("Zadajte x: "))
Na tomhle řádku je int což znamená celá čísla. Pak následuje input pro vstup a taky výzva pro uživatele, aby zadal vstup
 y = 1/x
Tady se praví, do proměnné
y
přiřaď výsledek z 1/x

Tomuhle řádku moc nerozumím, jde o formátování výstupu?
 print("y=1/{}={}".format(x, y))
except ValueError: Tady je definována chyba, v tomto případě asi chyba hodnoty.
http://www.jackhokus.cz/

Řešení dotazu:


Odpovědi

mika-talvinen avatar 24.9.2015 11:44 mika-talvinen | skóre: 23 | Plzeň
Rozbalit Rozbalit vše Re: Ošetření vstupu
Na tomhle řádku je int což znamená celá čísla. Pak následuje input pro vstup a taky výzva pro uživatele, aby zadal vstup
Jen aby nedošlo k omylu, nejdříve je input, teprve po jeho provedení následuje int.
print("y=1/{}={}".format(x, y))
je popsáno tady. Lze to zapsat i takto:
print("y=1/%d=%d" % (x, y))
Obojí funguje trochu jako printf v C. V Pythonu tohle formátování umí spoustu užitečných věcí, tak doporučuju dokumentaci pročíst :) V tomhle příkladu se x dosadí namísto prvních {} a y namísto druhých závorek.

No a výjimka ValueError se vyhazuje právě v případech, kdy něco nejde převést na něco jiného. Tedy když uživatel zadá "aerjdnv" namísto čísla.

To znovu-zeptání se na věk by se pak udělalo v ošetření té výjimky:
try:
    x = int(input("Zadajte x: "))
except ValueError:
    try:
        x = int(input("Zadajte x (musí být číslo): "))
    except ValueError:
        exit(1)
což nevypadá moc hezky, ale zeptalo by se to znovu. Program tohoto stylu se tu řešil nedávno, tak se když tak mrkněte, v diskuzi v poradně jsou řešení.
5.10.2015 09:51 Jack Hokus | skóre: 31 | blog: LostHeaven
Rozbalit Rozbalit vše Re: Ošetření vstupu
Zdravím,

tak po dlouhém hledání jsem našel a otestoval funkční řešení:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

while True:
    try:
        print ("Zadej celé číslo")
        vstup = input (" ")
        vstup = int(vstup)
        print ("Zadal jsi", vstup)
        break
    except ValueError:
        print("Nezadal jsi celé číslo, zkus to znovu")

Nicméně si nejsem jistý, jestli jsem ten příklad pochopil celý, tak se ho zase pokusím projít řádek po řádku a říct co který řádek dělá. Pokud se někde dopustím chyby, tak mne prosím, upozorněte.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
První řádek pravý, že bude použit python 3 a text bude v UTF-8 kódování
while True:
Prováděj to co je uvnitř dokud není není pravda, že (dokud není splněna podmínka)
try:
Tady začíná testování
print ("Zadej celé číslo")
Výzva k zadání celého čísla
vstup = input (" ")
vstup = int(vstup)
Tyhle dva řádky definují proměnnou vstup. První praví, že do této proměnné je vložen uživatelský vstup, druhý, že to má být celé číslo.

Vím, že se to dá zapsat i do jednoho řádku, jako je to v tomto příkladu, ale tento postup se mi zatím zdá čitelnější.

Tento řádek vypisuje vstup
print ("Zadal jsi", vstup)
Na internetu je často k vidění i tento zápis
print ("Zadal jsi"), vstup
Ale ten v Pythonu3 nefunguje, respektive, končí chybou.
break
Tento příkaz přeruší cyklus
 except ValueError:
        print("Nezadal jsi celé číslo, zkus to znovu")
Tady je ošetření chyby

http://www.jackhokus.cz/

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.