Body zdarma Java týden
Využij podzimních slev a získej od nás až 40 % bodů zdarma! Více zde
Pouze tento týden sleva až 80 % na Java e-learning!

Diskuze: Python zadání různého počtu čísel

Aktivity (2)
Avatar
Aleš Fiala
Člen
Avatar
Aleš Fiala:16. června 14:38

Ahoj, nevíte jestli se dá v Pythonu udělat program tak, aby mohl uživatel zadat libovolný počet čísel a stisknutím nuly dal jejich sečtení nebo tam musí pokaždé být určitý počet čísel na sečtení? Díky.

Zkusil jsem: Zkoušel jsem parsování, forcyklus a nic dalšího už nevím.

Chci docílit: Snažím se dosáhnout vzdělanosti na střední škole, ale zatím mi to moc nejde. Asi jsem přeskočil důležitý začátek.

 
Odpovědět 16. června 14:38
Avatar
heavyblack1
Člen
Avatar
Odpovídá na Aleš Fiala
heavyblack1:16. června 15:13

neskoušel jsem to ale mělo byto fungovat

Napadá mně akorat Regular expression
umí pracovat s textem input vraci string
by měl zajistit že když zadaš
1151+14551+14515
tak mužeš to rozdělit na časti a sečíst

https://www.w3schools.com/…on_regex.asp
https://docs.python.org/…rary/re.html

a co se tyče zachytavaní 0
když udělaš TUI pomoci curses tak mužeš zachtavat stisky kláves
https://docs.python.org/…/curses.html
https://www.youtube.com/watch?…
https://www.youtube.com/watch?…

jinak v curses user input uděláš takto
https://docs.python.org/…/curses.html#…

 
Nahoru Odpovědět  -1 16. června 15:13
Avatar
Aleš Fiala
Člen
Avatar
Aleš Fiala:16. června 15:49

A anglicky taky moc neumím a ve škole mě nechtějí naučit ani jedno ani druhý když si na to doma nenajdu čas.

 
Nahoru Odpovědět  -1 16. června 15:49
Avatar
Aleš Fiala
Člen
Avatar
Odpovídá na heavyblack1
Aleš Fiala:16. června 17:19

Tam už vůbec nevím o co jde, teprve jsem skončil 3. lekci prvního oddílu.

 
Nahoru Odpovědět  -1 16. června 17:19
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:17. června 8:25

To zadani vypada jako typicky skolni priklad, kalkulacka v pythonu. Ocekaval bych, ze mas nejaky kod. A ze jsi zkousel googlovat nejake reseni, ze mas nejake tipy, co by mohlo fungovat, jen nevis proc nefunguje. Ve tvem zadani bohuzel nic z toho neni. Zadny kod, zadne treba top 3 moznosti, ktere by to meli delat, ale z nejakeho duvodu nefunguji (aspon treba copy-paste nejake vygooglovane).
Pusobi tak jakoby arogantne. Tady mate zadani. Ja nic delat nebudu. Vyreste to za mne. A zakaznik mi da 30.000 za to :) Tak takhle vy to nefungovalo.

No, zpet k tve otazce. Odpovim presne tak, jak byla polozena.
"jestli se dá v Pythonu udělat program ..."
Ano, da.

 
Nahoru Odpovědět  +2 17. června 8:25
Avatar
Martin Petrovaj
Překladatel
Avatar
Martin Petrovaj:17. června 11:26

Tak aby ITnetwork zase nevyzeral ako elearningová sieť, kde nikto nie je ochotný začiatočníkovi s niečím pomôcť…

Začiatočníkom síce zo zásady nedávame hotové riešenie, ani postup krok za krokom ako niečo spraviť, ale pokúsim sa pomôcť aj tak.

  1. Brali ste v škole okrem cyklu for aj cyklus while? Rozdiel medzi nimi je v tom, že kým for pracuje s konkrétnym počtom opakovaní (napr. 3, 10, 99999, len("ahoj"), x, …), while cyklus beží dovtedy, kým je splnená nejaká podmienka (napr. kým je číslo v premennej väčšie ako 0, kým sa premenná nerovná určitej hodnote, kým používateľ nezadá nejaký konkrétny vstup…). Vehemetne sa ti to snažím naznačiť, takže asi už tušíš, že práve while budeš pri tejto úlohe potrebovať :-)
  2. Vrátim sa ešte k tvojmu kódu zo screenshotu, pretože tam je niekoľko vecí nesprávne. Skúsim ti ten program preložiť "do ľudštiny" (s pár pomocnými poznámkami), možno skôr nájdeš tie chyby a napadne ti aj spôsob, ako ich opraviť (ak nie, tak zase píš).

cislo = int(input("Zadejte číslo:"))

Vypíš na obrazovku text "Zadejte číslo", zisti, čo zadá používateľ, tento jeho vstup preveď na celé číslo a ulož ho do premennej cislo. (S týmto riadkom súhlasím, ten je ešte v pohode. Ďalej to už bude horšie)

for cislo in range(999999999­999999):

Do premennej cislo postupne ukladaj hodnoty 0 až 99999999998 (pri 1. prechode cyklom bude v premennej cislo 0, pri 2. prechode cislo == 1, pri 3. cislo == 2 atď) a zakaždým vykonaj to, čo nasleduje ďalej v tele cyklu.

if cislo>0: int(input("Zadejte číslo"))

Ak je číslo v premennej cislo väčšie ako 0, tak vypíš na obrazovku text "Zadejte číslo", zisti, čo zadá používateľ a tento jeho vstup preveď na celé číslo. (Pozn.: nenapísal si ale, čo sa má s týmto medzivýsledkom stať. Takto sa len vyhodnotní a program ho hneď "zahodí")

elif cislo is 0: vysledek = cislo + 1

Ak predchádzajúca podmienka neplatí a zároveň je obsah premennej cislo 0, tak do premennej vysledek ulož hodnotu cislo + 1. (Pozn.: skús si nájsť v mojej odpovedi trochu vyššie, čo je vlastne v premennej cislo).

print(vysledek)

Vypíš obsah premennej vysledek. Aj keď je to zdanlivo jednoduchá operácia, daj si pozor na to, že ak by sa pri prvom prechode cyklom nevytvorila premenná vysledek, tak by ti program spadol s chybou (pretože taká premenná by ešte neexistovala). To by sa v tvojom konkrétnom programe mohlo stať v hypotetickom prípade, keď by sa pri prvom prechode cyklom vykonala prvá vetva if, nie elif. (Ak si to chceš vyskúšať, zmeň riadok "for cislo in range(9999)" na "for cislo in range(1, 9999)" a uvidíš, že takto ti ten program spadne)

Skús si to celé poriadne prečítať a porozmýšľaj, či ten program robí to, čo od neho očakávaš a chceš ;-)

Nahoru Odpovědět 17. června 11:26
if (this.motto == "") { throw new NotImplementedException(); }
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
heavyblack1
Člen
Avatar
Odpovídá na Aleš Fiala
heavyblack1:17. června 18:03

To je normalní dokonči zaklady pythonu a pak se mužeš vrhnout do pokročilích věcí a ostatních knihoven.

 
Nahoru Odpovědět 17. června 18:03
Avatar
Pluhtík
Člen
Avatar
Pluhtík:17. června 21:12

Ahoj, co tohle řešení?

def main():
    result = 0
    number = int(input("Zadejte cislo: "))
    while number != 0:
        result += number
        number = int(input("Zadejte cislo: "))
    print(result)

main()

Dal jsem ti to do funkce a rovnou ji volám, takže by ti to mělo jít normálně. Pokud z nějakého důvodu funkci nechceš, tak hlavičku (řádek s def ...) odstraň, ale potom zároveň musíš také odstranit řádek s main()!!!
Tvé řešení bylo špatné, protože jsi nemohl načíst libovolný počet čísel, ale pouze 9999... atd. (nevím kolik těch devítek jsi tam zadal).

edit. pokud se rozhodneš tu funkci odstranit (viz výše), tak musíš posunout zarovnání ostatních řádků vždy o jeden tabulátor doleva (zpět).

Editováno 17. června 21:14
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět  +1 17. června 21:12
Avatar
Aleš Fiala
Člen
Avatar
Odpovídá na Pluhtík
Aleš Fiala:18. června 17:11

Ta zkusím result. To ještě neznám. :) Ve které lekci Pythonu to je?

 
Nahoru Odpovědět 18. června 17:11
Avatar
Aleš Fiala
Člen
Avatar
 
Nahoru Odpovědět 18. června 17:13
Avatar
Aleš Fiala
Člen
Avatar
Odpovídá na Pluhtík
Aleš Fiala:18. června 17:17

Dík funguje to a teď se půjdu doučit zbylé lekce :)

 
Nahoru Odpovědět 18. června 17:17
Avatar
Pluhtík
Člen
Avatar
Odpovídá na Aleš Fiala
Pluhtík:18. června 17:27

result je název proměnné (v angličtině to znamená výsledek (je dobrým zvykem pojmenovávat funkce a proměnné v angličtině)). Klidně můžeš všechny result v programu změnit na jakékoliv jiné slovo/písmeno, které není zakázané.

 
Nahoru Odpovědět 18. června 17:27
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.