Riešenie úloh 8. cvičenia¶
Riešenie:
den = ['pondelok', 'utorok', 'streda', 'štvrtok', 'piatok', 'sobota', 'nedeľa'] day = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
for d in den: print(d, end=' ') print() for d in day: print(d, end=' ') print()
for i in range(7): print(den[i], day[i])
Riešenie:
domy = [4, 2, 0, 5, 0, 1, 5, 4] # vypis print('počet obyvateľov je', sum(domy)) print('neobývaných domov je', domy.count(0)) print('maximálny počet obyvateľov v dome je', max(domy)) print('počet maximálnych domov je', domy.count(max(domy)))
Riešenie:
def vypis_recept(zoznam): for i in range(0, len(zoznam), 3): print(zoznam[i], zoznam[i + 1], zoznam[i + 2])
Riešenie:
def vypis(zoznam, pocet): for i, prvok in enumerate(zoznam): if (i+1) % pocet == 0 or i == len(zoznam)-1: print(prvok, end='\n') else: print(prvok, end=' ')
alebo
def vypis(zoznam, pocet): p = 1 for prvok in zoznam: if p == pocet: print(prvok, end='\n') p = 1 else: print(prvok, end=' ') p += 1 if p != 1: print()
alebo
def vypis(zoznam, pocet): p = 0 for prvok in zoznam: print(prvok, end=' ') p = (p+1) % pocet if p == 0: print() if p: print()
Riešenie:
def najdlhsie(zoznam): naj = zoznam[0] for prvok in zoznam: if len(prvok) > len(naj): naj = prvok return naj
Riešenie:
def start(zoznam, n): vysl = [] for prvok in zoznam: vysl.append(prvok[:n]) return vysl
Riešenie:
def cele(zoznam): vysl = [] for prvok in zoznam: vysl.append(int(prvok)) return vysl
Riešenie:
def vzostupne(zoznam): for i in range(len(zoznam) - 1): if zoznam[i] > zoznam[i + 1]: return False return True
Riešenie:
def rozdel(retazec): vysl, prvok = [], '' for znak in retazec+' ': if znak == ' ' or znak == '\n': # alebo if znak in ' \n': if prvok: # alebo if prvok != '': vysl.append(prvok) prvok = '' else: prvok += znak return vysl
Riešenie:
def kresli_text(zoznam): if len(zoznam) == 3: x, y, text = zoznam font = 'arial 20' else: x, y, text, font = zoznam canvas.create_text(x, y, text=text, font=font)
Riešenie:
def kresli(r, zoznam): x, y = 10+r, 100 for farba in zoznam: canvas.create_oval(x-r, y-r, x+r, y+r, fill=farba) x += 2*r
Riešenie:
import random def nahodne_farby(n): vysl = [] for i in range(n): vysl.append(f'#{random.randrange(256**3):06x}') return vysl kresli(9, nahodne_farby(20))
Riešenie:
def histogram(zoznam): x, y = 10, 250 sirka = 360 // len(zoznam) for hodnota in zoznam: farba = f'#{random.randrange(256**3):06x}' canvas.create_rectangle(x, y, x+sirka, y-hodnota, fill=farba) x += sirka
Riešenie:
def zluc(zoz1, zoz2): n = min(len(zoz1), len(zoz2)) vysl = [] for i in range(n): vysl += [zoz1[i], zoz2[i]] # alebo vysl.extend([zoz1[i], zoz2[i]) return vysl + zoz1[n:] + zoz2[n:]
Riešenie:
def spoj(zoznam): vysl = '' for prvok in zoznam: if vysl: vysl += ' ' vysl += str(prvok) return vysl
Riešenie:
def replace(zoznam, co, zaco): for i, prvok in enumerate(zoznam): if prvok == co: zoznam[i] = zaco
Riešenie:
def dvojice(zoznam): i = 0 while i < len(zoznam)-1: zoznam[i:i+2] = [zoznam[i] + zoznam[i+1]] i += 1
Riešenie:
def fibonacci(n): vysl = [] f1, f2 = 0, 1 for i in range(n): vysl.append(f1) f1, f2 = f2, f1+f2 return vysl
Riešenie:
def rozklad(x): vysl = [] i = 2 while x > 1: if x % i == 0: vysl.append(i) x //= i else: i += 1 return vysl
Riešenie:
def postupnost(x): vysl = [] while x != 1: vysl.append(x) if x % 2: x = 3*x + 1 else: x //= 2 vysl.append(x) return vysl
Riešenie:
def vyhod_neparne(zoznam): i = 0 while i < len(zoznam): if zoznam[i] % 2: zoznam.pop(i) # alebo del zoznam[i] else: i += 1
Riešenie:
def vloz_za_kazde(zoznam, hodnota): for i in range(len(zoznam), 0, -1): zoznam.insert(i, hodnota)
alebo
def vloz_za_kazde(zoznam, hodnota): for i in range(1, 2*len(zoznam), 2): zoznam.insert(i, hodnota)
Riešenie:
import random def nahodne_body(n): vysl = [] for i in range(n): vysl += [random.randint(10, 370), random.randint(10, 250)] return vysl
Riešenie:
from math import sin, cos, radians def stvorec(x, y, r, uhol): vysl = [] for u in range(uhol, 360+uhol, 90): vysl.append(x + r*cos(radians(u))) vysl.append(y + r*sin(radians(u))) return vysl