Diskuze: Kód for v Pythoně v jedné větě

Člen

Zobrazeno 13 zpráv z 13.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
2. Vytvoří se seznam řetězců, který je rozdelen podle čárek. To vše
pomocí split().
3. Každý prvek seznamu se převede na číslo. Výsledkem je seznam
čísel.
4. Vypíše se na obrazovku seznam čísel pomocí print().
Mohu Ti požádat napsat ten kód
vstupniPole = [int(n) for n in cisla.split(",")]
obvyklým způsobem, tj.
for n in cisla:
atd.
Zkoušl jsem to několikrát, ale neúspěšně.
cisla = input("Zadej čísla pro seřazení (oddělená čárkou): ")
cisla = "-2, 15 , 0,5,8,-3, 22"
vstupniPole = [int(n) for n in cisla.split(",")]
cisla.split(",") = ["-2"," 15 "," 0","5","8","-3"," 22"] # ted si nejsem uplne jisty, zda tam ponecha pred nebo za mezery, PY se chova dost jinak nez bezny prog. jazyk, ktery tam ty mezery necha
for item in array # nebo jeste se pouziva: "for value in array", "for item in list", "for row in list"
array = ["-2"," 15 "," 0","5","8","-3"," 22"]
array = [item,item,item,...] # cili, cyklus do item prirazuje postupne kazdy string z pole
int(item)
# prevadi string na cislo - viz treba " 15 " na +15
# vysledkem [int(n) for n in cisla.split(",")]
# bude tedy pole cisel [-2,15,0, 5,8,-3,22]
Je doporucene davat promennym alespon 3 pismenka pro nazev (ale za urcitych
okolnosti to ani sam nedodrzuji).
Se doporucuje pro cykly pouziva i,j,k.
for item in array
- pro tento druh cyklu bych doporucoval pouzivat
item `nebo `value
, slovo, ktere asi nejlepe odpovida hodnote,
kterou ocekavas ve vysledku
[-2,15,0, 5,8,-3,22] --- for value in array
["-2", "15", "0", "5", "8", "-3", "22"] --- for item in list
[["-2", "15"], ["0", "5"], ["8", "-3"], "22"] --- for item in list
kdyz se jedna o koordinaty [x,y] nebo gps severni sirka, zapadni delka, tak treba --- for coords in list
table = [
["-2", "15", "0", "5", "8", "-3", "22"],
["-2", "15", "0", "5", "8", "-3", "22"],
["-2", "15", "0", "5", "8", "-3", "22"],
]
"for row in table"
list = [
["Tomas"],
[" Pepik"],
["Honza"],
]
"for item in list"
item jako polozka v seznamu list
Proste, nazev, ktery nejlepe vystihuje situaci, jak s tim pracujes.
Pokud to tak v prikladech neni a vetsinou v PY prikladech to nikdo nedodrzuji,
osobne to povazuji za vazny prohresek proti dobrym mravum pri programovani
Děkuji!
Všechno to je důležité, chápu to a snažím se toho držet. Pro mě je
problém v něčem jiném.
1. myslil jsem, že ten kód
vstupniPole = [int(n) for n in cisla.split(",")]
je možné popsat jinak:
for n in cisla:
cisla = str()
cisla = cisla.split(",")
if cisla.isdigit():
vstupniPole += int(n) # nebo: vstupniPole.append(int(n))
print(vstupniPole)
else:
print("Chybné zadání!")
2. druhou otázkou je to - jak, v jaké fázi jsou nadbytečné mezery nastavené uživatelem odstraněny?
Ohledně
`cisla.split(",") = ["-2"," 15 "," 0","5","8","-3"," 22"]
# ted si nejsem uplne jisty, zda tam ponecha pred nebo za mezery,
PY se chova dost jinak nez bezny prog. jazyk, ktery tam ty mezery necha`
ANO, po split()
jsou tam mezery, a proto i nevím v jaké fázi se
odstraňuje.
Vřele doporučuji naučit se psát vlastní funkce a knihovny. Vše budeš mít tak jak potřebuješ a ještě se naučíš programátorské myslet. Řešit problémy pak pro tebe bude hračka.
Samozřejmě že tam split() mezery ponechá, prvky jsou stále řetězce. Až při pretypovaní na int dojde k odstranění mezer.
Je to tak. Děkuji!
Mezery odstranuje funkce int, ktera prevadi string na cislo.
Cislo je zapisovane jako 8, 16, 32... bytu, podle procesoru. 2,147,483,647 jako
cislo je 32 bity = 4 byty
String je retezec znaku po 8 bitech, "2,147,483,647" = 14 bytu
A je dobre si precist, co presne int dela, v dokumnetaci. Opet se to castecne
lisi pro ruzne jazyky. Obvykle se snazi najit v retezci prvni integer cislo,
ostatni smaze. kdyz das int("2,147,483,647"), tak by to teoreticky mohlo dat
jen cislo=2 V nekterych jazycich je treba number() nebo float(), ktere by z toho
mohli dostat vsechna cisla. Je lepsi si to vzdy overit, najit v dokumentaci,
pokud s tim bezne nepracujes.
Mno, ten kod mas blbe, asi.
vstupniPole = [int(n) for n in cisla.split(",")]
je možné popsat jinak:
cisla = cisla.split(",")
for n in cisla:
#cisla = str() # ???
#cisla = cisla.split(",")
if cisla.isdigit(): # tohle je asi nesmysl, digit zjistuje, zda jsou v cisle cifry,
# jenze to plati i pro specialni znaky, jako umocnovani na druhou, treti - numbers in base 10
# a Kharosthi numbers
# https://www.tutorialspoint.com/python/string_isdigit.htm
vstupniPole += int(n) # nebo: vstupniPole.append(int(n))
print(vstupniPole)
else:
print("Chybné zadání!")
---
import re
def has_numbers(inputString):
return bool(re.search(r'\d', inputString))
# https://stackoverflow.com/questions/19859282/check-if-a-string-contains-a-number
str.isalpha()
a jina reseni na tom forku
# Vstupní řetězec obsahující čísla oddělená čárkami
cisla = "1,2,3,4,5"
# Rozdělení vstupního řetězce na části podle čárek
cisla = cisla.split(",")
# Vytvoření prázdného seznamu pro uložení celých čísel
vstupniPole = []
# Pro každou část v cisla
for n in cisla:
# Převod části na celé číslo a přidání do seznamu vstupniPole
vstupniPole.append(int(n))
# Výsledek je seznam celých čísel v proměnné vstupniPole, který vypíšeme
print(vstupniPole)
V Pythonu je int(n) funkce, která konvertuje hodnotu n na celé číslo (integer), pokud je to možné. Pokud je n řetězec obsahující číselnou hodnotu, bude převeden na odpovídající celé číslo. Pokud je n desetinné číslo, funkce int() odstraní desetinnou část a ponechá pouze celou část. Pokud by byl řetězec n ve formátu, který nelze převést na celé číslo, funkce int() může vyvolat chybu, například ValueError.
Zobrazeno 13 zpráv z 13.