Riešenie úloh 8. cvičenia¶
Riešenie:
def ntica_cisel(retazec): vysl = [] for i in retazec.split(): vysl.append(int(i)) return vysl
alebo:
def ntica_cisel(retazec): return [int(i) for i in retazec.split()]
Riešenie:
def retazec(ntica): zoz = [] for i in ntica: zoz.append(str(i)) return ' '.join(zoz)
alebo:
def retazec(ntica): return ' '.join(str(i) for i in ntica)
Riešenie:
def zadaj(pocet): while True: zoz = input(f'zadaj {pocet} čísla: ').split() if len(zoz) == pocet: for i in range(pocet): zoz[i] = int(zoz[i]) return tuple(zoz)
Riešenie:
def vsetky_rozne(zoznam): zoz = sorted(zoznam) for i in range(len(zoz) - 1): if zoz[i] == zoz[i + 1]: return False return True
Riešenie:
import random def nahodne(n): return [random.randrange(2 * n) for i in range(n)]
Riešenie:
import tkinter import random def nahodne_body(pocet): return [(random.randrange(380), random.randrange(260)) for i in range(pocet)] canvas = tkinter.Canvas() canvas.pack() canvas.create_line(sorted(nahodne_body(100))) tkinter.mainloop()
Riešenie:
... def sort_y(zoznam): for i, (x, y) in enumerate(zoznam): zoznam[i] = (y, x) zoznam.sort() for i, (y, x) in enumerate(zoznam): zoznam[i] = (x, y) zoz = nahodne_body(100) sort_y(zoz) canvas.create_line(zoz)
Riešenie:
import tkinter def sipka(xy1, xy2): canvas.create_line(xy1, xy2, arrow='last', width=3) canvas = tkinter.Canvas() canvas.pack() canvas.create_rectangle(150, 50, 250, 150, fill='gold') sipka((150, 50), (250, 50)) sipka((250, 50), (250, 150)) sipka((250, 150), (150, 150)) sipka((150, 150), (150, 50)) tkinter.mainloop()
druhá časť úlohy:
import tkinter from math import sin, cos, radians def sipka(xy1, xy2): canvas.create_line(xy1, xy2, arrow='last', width=3) def vektor(xy, dlzka, uhol): x, y = xy xy1 = x + dlzka * cos(radians(uhol)), y + dlzka * sin(radians(uhol)) sipka(xy, xy1) return xy1 canvas = tkinter.Canvas() canvas.pack() poz = (200, 120) for uhol in range(0, 720, 144): poz = vektor(poz, 100, uhol) tkinter.mainloop()
Riešenie:
def enum(postupnost): vysl = () for i in range(len(postupnost)): vysl += ((i, postupnost[i]),) return vysl
alebo:
def enum(postupnost): return tuple((i, postupnost[i]) for i in range(len(postupnost)))
Riešenie:
def moj_zip(post1, post2): vysl = [] for i in range(min(len(post1), len(post2))): vysl.append((post1[i], post2[i])) return vysl
alebo:
def moj_zip(post1, post2): n = min(len(post1), len(post2)) return [(post1[i], post2[i]) for i in range(n)]
potom
enum
:def enum(postupnost): return tuple(moj_zip(range(len(postupnost)), postupnost))
Riešenie:
def od_zip(zoznam): z1, z2 = [], [] for p1, p2 in zoznam: z1.append(p1) z2.append(p2) return z1, z2
Riešenie:
def do_dvojic(zoznam): vysl = [] for i in range(0, len(zoznam), 2): vysl.append(tuple(zoznam[i:i + 2])) return vysl
alebo pomocou
moj_zip
z úlohy (10)def do_dvojic(zoznam): return moj_zip(zoznam[::2], zoznam[1::2])
Riešenie:
import random def pomiesaj(zoznam): n = len(zoznam) for i in reversed(range(1, n)): x = random.randint(0, i) zoznam[x], zoznam[i] = zoznam[i], zoznam[x]