Riešenie úloh 13. cvičenia¶
Riešenie:
def vypis(tab, sirka=4): for riadok in tab: for prvok in riadok: print(f'{repr(prvok):>{sirka}}', end=' ') print()
Riešenie:
def max2(tab): vysl = max(tab[0]) for riadok in tab[1:]: vysl = max(vysl, max(riadok)) return vysl def min2(tab): vysl = min(tab[0]) for riadok in tab[1:]: vysl = min(vysl, min(riadok)) return vysl def sum2(tab): vysl = 0 for riadok in tab: vysl += sum(riadok) return vysl
Riešenie:
def zoznam_suctov(tab): vysl = [] for riadok in tab: vysl.append(sum(riadok)) return vysl
Riešenie:
def zoznam_suctov(tab): vysl = [] for riadok in tab: if riadok == []: vysl.append(None) else: suc = riadok[0] for prvok in riadok[1:]: suc += prvok vysl.append(suc) return vysl
Riešenie:
def pridaj_sucty(tab): for riadok in tab: if riadok == []: riadok.append(None) else: suc = riadok[0] for prvok in riadok[1:]: suc += prvok riadok.append(suc)
Riešenie:
def preklop(tab): pr, ps = len(tab), len(tab[0]) novy = [] for i in range(ps): novy.append([0]*pr) for r in range(pr): for s in range(ps): novy[s][r] = tab[r][s] return novy
alebo
def preklop(tab): novy = [] for s in range(len(tab[0])): novy.append([]) for r in range(len(tab)): novy[-1].append(tab[r][s]) return novy
Riešenie:
def ocisluj2(tab): poc = maxs = 0 for riadok in tab: maxs = max(maxs, len(riadok)) for s in range(maxs): for r in range(len(tab)): if s < len(tab[r]): tab[r][s] = poc poc += 1
Riešenie:
def pascalov_trojuholnik(n): vysl = [] for i in range(1, n+1): riadok = [1] for j in range(1, i): riadok.append(riadok[-1] * (i-j) // j) vysl.append(riadok) return vysl
Riešenie:
def citaj(meno_suboru): with open(meno_suboru, encoding='utf-8') as subor: vysl = [] for riadok in subor: vysl.append(riadok.split()) return vysl
Riešenie:
def zapis(tab, meno_suboru): with open(meno_suboru, 'w', encoding='utf-8') as subor: for riadok in tab: for prvok in riadok: print(prvok, end=' ', file=subor) print(file=subor)
Riešenie:
def citaj_cisla(meno_suboru): with open(meno_suboru, encoding='utf-8') as subor: vysl = [] for riadok in subor: vysl.append([]) for prvok in riadok.split(): vysl[-1].append(int(prvok)) return vysl
Riešenie:
import tkinter def kresli(tab, d=20, farby=('black', 'yellow', 'orange', 'blue', 'red', 'white')): canvas.delete('all') for r, riadok in enumerate(tab): for s, prvok in enumerate(riadok): if prvok != None: x, y = s*d + 5, r*d + 5 farba = farby[prvok] canvas.create_rectangle(x, y, x+d, y+d, fill=farba, outline='light gray') canvas.update() canvas = tkinter.Canvas() canvas.pack() p = [[0,0,0,None,None], [1,1,None,None,None], [1,1,1,None,2], [3,None,None,None,2], [3,3,2,2,None], [3,3,None,None,None], [4,4,None,None,None], [4,4,4,None,None], [4,None,4,4,None], [2,None,None,2,None], [2,2,None,2,2] ] kresli(p)
Riešenie:
def zrkadlo(obr): novy = [] for r in range(len(obr)): novy.append(obr[r] + [None] + obr[r][::-1]) return novy
Riešenie:
def zvacsi(obr): novy = [] for riadok in obr: novy.append([]) for prvok in riadok: novy[-1].extend((prvok, prvok)) novy.append(novy[-1]) return novy
Riešenie:
def nahrad(obr, post): novy = [] for riadok in obr: riadok = list(riadok) for i, prvok in enumerate(riadok): for x, y in post: if prvok == x: riadok[i] = y break novy.append(riadok) return novy
Riešenie:
import tkinter def kresli(tab, d=20, farby=('black', 'yellow', 'orange', 'blue', 'red', 'white')): ... def kruh(tab, r, r1, s1, hodnota): n = len(tab) for i in range(n): for j in range(n): vzd = ((i-r1)**2 + (j-s1)**2) ** 0.5 if vzd <= r: tab[i][j] = hodnota t = [] for i in range(50): t.append([5]*50) kruh(t, 17, 20, 30, 4) kruh(t, 13, 40, 25, 3) kruh(t, 10, 15, 15, 0) kruh(t, 8, 15, 15, 5) kresli(t, 5)
Riešenie:
def do_radu(tab): vysl = [] for riadok in tab: vysl.extend(riadok) return vysl
Riešenie:
def do_dvojrozmernej(postupnost, sirka): vysl = [] zoz = list(postupnost) while zoz: vysl.append(zoz[:sirka]) zoz = zoz[sirka:] return vysl