Cvičení č. 3¶

Přesný čas

  • Napište program, který zadaný čas ve vteřinách vypíše v hodinách, minutách a vteřinách. Případně i ve dnech a rocích.
  • Napište program, který zadaný čas ve dnech, hodinách, minutách a vteřinách vypíše ve vteřinách.
In [6]:
#celkovyCas = int(input("zadej čas ve vteřinách:"))
celkovýČas  = 619965             
celychMinut = celkovýČas // 60   # celkový čas ve vteřinách rozdělím na celé minuty a zbylé vteřiny   
vteřin      = celkovýČas  % 60   

celychHodin = celychMinut // 60  # čas v minutách rozdělím na celé hodiny a zbylé minuty 
minut       = celychMinut %  60

celychDnu = celychHodin // 24  # čas v hodinách rozdělím na celé dny a zbylé hodiny 
hodin     = celychHodin %  24

celychLet = celychDnu // 365  # čas ve dnech rozdělím na celé roky a zbylé dny 
dnu       = celychDnu %  365

print("Zadaný čas",celkovýČas, "vteřin =", celychLet, "roků,", dnu, "dnů,",hodin ,"hodin,", minut,"minut a",vteřin,"vteřin")
print(f"Zadaný čas {celkovýČas} vteřin = {celychLet} roků, {dnu} dnů, {hodin} hodin, {minut} minut a {vteřin} vteřin." )
Zadaný čas 619965 vteřin = 0 roků, 7 dnů, 4 hodin, 12 minut a 45 vteřin
Zadaný čas 619965 vteřin = 0 roků, 7 dnů, 4 hodin, 12 minut a 45 vteřin.
In [3]:
vteřin = 45
minut = 12
hodin = 4
dnu = 7
roku = 0

# typické řešení u studentů
celkem = vteřin + 60*minut + 60*60*hodin + 60*60*24*dnu + 60*60*24*365*roku 
print("Celkem", celkem, "vteřin.")                      

# popřípadě jinak uzávorkované:
celkem = vteřin + 60 *( minut + 60 * (hodin + 24 *(dnu + 365 * roku)))
print("Celkem", celkem, "vteřin.")

# druhou variantu můžeme počítat postupně:
x = dnu    + 365 * roku # čas ve dnech 
x = hodin  + 24  * x    # čas v hodinách
x = minut  + 60  * x    # čas v minutách
x = vteřin + 60  * x    # čas ve vteřinách
print("Celkem", x, "vteřin.")
Celkem 619965 vteřin.
Celkem 619965 vteřin.
Celkem 619965 vteřin.
  1. Napište program, který se uživatele zeptá na jeho hmotnost a pomocí průměrné hustoty lidského těla ($1000~kg/m^3$) spočítá jeho objem. Jaký by měl uživatel průměr, pokud by měl tvar koule?
In [9]:
# m = ro * V  ... V = m / ro
m = float(input("Zadejte svou hmotnost v kg:"))
ro = 1000
V = m / ro
print(f"Váš objem je {V} m^3.")        
Váš objem je 0.061 m^3.
In [20]:
from math import pi 

r = (3/4 * (V/pi))**(1./3.)
d = 2 *r
print(f"Poloměr člověka-koule o objemu {V} m^3 je {100*r} cm.")   
print(f"Poloměr člověka-koule o  objemu {V} m^3 je {100*r:.2f} cm.")   
Poloměr člověka-koule o objemu 0.061 m^3 je 24.420079599615384 cm.
Poloměr člověka-koule o  objemu 0.061 m^3 je 24.42 cm.

Cvičení č. 4¶

  1. Napište program, který spočítá vzdálenost dvou komplexních čísel.
In [1]:
from math import sqrt

c1 = 3 - 4j
c2 = -1 + 1j 

vzd = abs(c1-c2)

print(f"Vzdálenost {c1} a {c2} je {vzd:.2f}.")
Vzdálenost (3-4j) a (-1+1j) je 6.40.
In [8]:
# jiné řešení:
import math
r = c1 - c2
vzd = math.sqrt(r.real**2 + r.imag**2)
vzd = (r.real**2 + r.imag**2)**0.5
print(f"Vzdálenost {c1} a {c2} je {vzd:.2f}.")

# jiné řešení:
soucin = r * r.conjugate()
vzd = math.sqrt(soucin.real)
vzd = ((soucin)**0.5).real
print(f"Vzdálenost {c1} a {c2} je {vzd:.2f}.")
Vzdálenost (3-4j) a (-1+1j) je 6.40.
Vzdálenost (3-4j) a (-1+1j) je 6.40.
  1. Použijte jazyk Python pro vyřešení kvadratické rovnice $\pi x^2 + 2x + 1 = 0$. (Řešení tohoto příkladu nemusí být univerzální program, stačí posloupnost příkazů s výpočty, které byste prováděli "na papíře".)
In [11]:
from math import pi, sqrt

a = pi
b = 2
c = 1

# nejprve spočteme diskriminant a podíváme se, zda je záporný
D = b * b - 4 * a * c
D 
Out[11]:
-8.566370614359172
In [21]:
# protože je D záporný, bude mít rovnice komplexní kořeny:

# x1,2 = (- b/2a ) +- i sqrt(-D)/2a

x1 = complex (-b/(2*a),  math.sqrt(-D)/(2*a))
x2 = complex (-b/(2*a), -math.sqrt(-D)/(2*a))
#x2 = x1.conjugate()
print(f"Kořeny jsou {x1:.2f} a {x2:.2f}")

# jiné řešení:
x1 = -b/(2*a) +  1j * (math.sqrt(-D)/(2*a))
x2 = -b/(2*a) -  1j * (math.sqrt(-D)/(2*a))

print(f"Kořeny jsou {x1:.2f} a {x2:.2f}")
Kořeny jsou -0.32+0.47j a -0.32-0.47j
Kořeny jsou -0.32+0.47j a -0.32-0.47j
In [13]:
# jiné řešení ... pokud použijeme mocninu místo odmocniny, lze to napsat rovnou:

x1 =  (-b + D**0.5 ) / (2*a)
x2 =  (-b - D**0.5 ) / (2*a)

# x2 = x1.conjugate()

print(f"Kořeny jsou {x1:.2f} a {x2:.2f}")
Kořeny jsou -0.32+0.47j a -0.32-0.47j
In [ ]: