Notes and Talks/UJEP/PRG1/02/řešení

Možná řešení

Úloha 2

Napište program, který vypíše jednoduchou účtenku …

python# headers
h1 = 'Položka'
w1 = len(h1)

h2 = 'počet'
w2 = len(h2)

h3 = 'cena'

print(f'{h1:{w1}} | {h2:{w2}} | {h3}')

# values
v1 = 'sešit'
v2 = 2
v3 = 35

print(f'{v1:{w1}} | {v2:{w2}} | {v3} Kč')

Úloha 4

Napište program, který se uživatele zeptá …

pythonjméno = input('Jak se jmenujete? ')    # type: str
bydliště = input('Kde bydlíte? ')      # str
věk = int(input('Kolik je Vám let? ')) # int

print(f'Dobrý den, pane/paní {jméno},')
print(f'bydlíte v městě {bydliště}')
print(f'a za rok Vám bude {věk + 1} let.')

Úloha 6

Přepona pravoúhlého trojúhelníku:

pythona = float(input('Zadejte délku první odvèsny: ')) # float
b = float(input('Zadejte délku druhé odvèsny: ')) # float

import math
c = math.sqrt(a*a + b*b) # float

print(f'Délka přepony je {c:.2f}.')

Je trojúhelník pravoúhlý?

pythonx = float(input('Zadejte délku první strany: ')) # float
y = float(input('Zadejte délku druhé strany: ')) # float
z = float(input('Zadejte délku třetí strany: ')) # float

# tři možné přepony: x nebo y nebo z (hypotenuse)
from math import isclose

hypX = isclose(x**2, y**2 + z**2) # bool
hypY = isclose(y**2, z**2 + x**2) # bool
hypZ = isclose(z**2, x**2 + y**2) # bool

# Je nebo není pravúhlý?
isOrNot = 'je' if (hypX or hypY or hypZ) else 'není' # str

print(f'Zadaný trojúhelník {isOrNot} pravoúhlý.')

Jméno a věk trojice:

pythonFr = 'Frodo'
FrAge = 50

Gd = 'Gandalf'
GdAge = 2000

Ar = 'Aragorn'
ArAge = 87

Řešení s podmíněnými výrazy: tři ternární operace, tři porovnání:

pythonoldest = (Gd if ArAge < GdAge else Ar) if FrAge < GdAge else (Ar if FrAge < ArAge else Fr)

Nebo dvě ternární operace, tři porovnání a jedna logická operace:

pythonoldest = Gd if (FrAge < GdAge and ArAge < GdAge) else (Ar if FrAge < ArAge else Fr)

Automat na přání:

pythonjméno = input('Jak se jmenujete? ')
print(f'Dobrý den, pane/paní {jméno},')

věk = int(input('Kolik je Vám let? ')) # int

AGE = 18              # hranice dospělosti
mladistvý = věk < AGE # bool

print(f'Gratuluji k {"Vašemu mládí" if mladistvý else "Vaší moudrosti"}!')

volba = input('Přejete si vodu nebo vodku? ')
chciVodu = 'vodu' == volba # True: vodu, False: vodku

# texty
dámVodu    = 'Zde je voda.'
dámVodku   = 'Zde je vodka.'
nedámVodku = 'Zde je voda místo vodky.'

# hotovo, rozhodnuto
výdej = dámVodu if chciVodu else (nedámVodku if mladistvý else dámVodku)
print('Děkuji za důvěru.', výdej)