# coding=utf-8 import server mod = server.problems.load_language('python', 'sl') name = 'Topologija' slug = 'Topologija' description = '''\
Napiši program za izračun dolžine strela s topom (ki brez trenja izstreljuje točkaste krogle v brezzračnem prostoru, a pustimo trivio). Program od uporabnika ali uporabnice zahteva, da vnese kot, pod katerim je izstreljen, in hitrost izstrelka. Program naj izračuna in izpiše, kako daleč bo letela krogla.
Pomoč za fizično nebogljene: s=v2sin(2f)/g , kjer je s razdalja, v hitrost izstrelka, f je kot, g pa gravitacijska konstanta (9,8).
Preveri tole: krogla leti najdalj, če jo izstrelimo pod kotom 45 stopinj. Poskusi, kako daleč gre pod kotom 45 in kako daleč pod 46 stopinj -- po 45 mora leteti dlje. Preveri tudi kot 50 stopinj: če pod tem kotom leti nazaj (razdalja je negativna), si ga gotovo nekje polomil.
Opomba: za pravilno delovanje moraš v programu najprej prebrati kot in potem hitrost.
''' eval_expression = ['''\Dolžino strela dobiš po formuli: s=v2sin(2f)/g.
''', '''\Funkcijo sin
dobiš v modulu math
, kot smo tam
dobili funkcijo sqrt
. Na začetku napiši:
from math import *''', '''\
Če sin
vrača čudne vrednosti, si
poglej dokumentacijo.
Še posebno pozorno preberi razlago v oklepajih.
Do dokumentacije lahko dostopaš tudi z ukazom help
:
help(sin)''' ] printing = ['''\
V Pythonu izpisujemo s funkcijo print
.
Plan sledi že znani strategiji: preberi vrednosti – izračunaj – izpiši.
''', eval_expression, printing ] hint = { 'eval_expression': eval_expression, 'printing': printing, 'radians': ['''\Poskusi sin(30)
. Zakaj je rezultat negativen?
Vse triginometrične funkcije sprejemajo kot v radianih in ne v stopinjah.
''', '''V stopinjah ima cel krog 360°, v radianih pa 2*pi.
''', '''Formula za pretvorbo med stopinjami in radiani je:
kot_rad = kot * 2 * pi / 360'''], 'betterg': '''Konstanta g naj ima vrednost 9.8''', 'name_error' : [mod.general_msg['error_head'], mod.general_msg['general_exception'], mod.general_msg['name_error'], '''
Verjetno uporabljaš spremenljivko, ki nima vrednosti. Morda v računu ali pri izpisu?
'''], 'sin_error' : [mod.general_msg['error_head'], mod.general_msg['general_exception'], mod.general_msg['name_error'], '''Za uporabo funkcije sin
je potrebno prej uvoziti modul math
:
from math import *
ali import math
. '''],
'unsupported_operand' : [mod.general_msg['error_head'], mod.general_msg['general_exception'],
mod.general_msg['type_error'], '''
Verjetni razlog: funkcija input
vrača vrednost tipa niz,
ki jo moramo najprej pretvoriti v tip float
:
v = float(input(" ...'''], 'type_error' : [mod.general_msg['error_head'], mod.general_msg['general_exception'], mod.general_msg['type_error'], '''
Verjetni razlog: funkcija input
vrača vrednost tipa niz,
ki jo moramo najprej pretvoriti v tip float
:
v = float(input(" ...'''], 'final_hint' : [ '''\
Odlično, program deluje pravilno!
Če želiš izvedeti še kaj več o topologiji ...