# Je to na tema co jsme delali ve fyzice jen cast tridy a nevim jestli je to latka ale pokud ano tak tohle muze byt jako kontrola kdyz by na to byl trrrreba tesst # Tady je celej kod # Nakodoval jsem to já, není to ukradnutý # Mělo by to fungovat, 1x jsem to zkoušel počítat ručně a přes program. Řučně to trvalo tak 100x dýl a ještě to nebylo přesný. A funguje to # Asi to neni nic extre protoze nejsem 6tilety študent, ale účel to plní # Dalsi projekty kdyztak na kubasobr.blogspot.com import random import time import math import os def Zacatek(): ascii_art1 = """ .----------------. .----------------. .----------------. .----------------. | .--------------. || .--------------. || .--------------. || .--------------. | | | _______ | || | ____ | || | ____ ____ | || | ____ ____ | | | | / ___ | | || | .' `. | || ||_ \ / _|| || ||_ _| |_ _| | | | | | (__ \_| | || | / .--. \ | || | | \/ | | || | \ \ / / | | | | '.___`-. | || | | | | | | || | | |\ /| | | || | \ \ / / | | | | |`\____) | | || | \ `--' / | || | _| |_\/_| |_ | || | \ ' / | | | | |_______.' | || | `.____.' | || ||_____||_____|| || | \_/ | | | | | || | | || | | || | | | | '--------------' || '--------------' || '--------------' || '--------------' | '----------------' '----------------' '----------------' '----------------' """ print(ascii_art1) ascii_art2 = """ _ _ _ ____ _ | | __ _| | ___ _| |__ / ___| ___ | |__ _ __ _ | |/ _` | |/ / | | | '_ \ \___ \ / _ \| '_ \| '__| | |_| | (_| | <| |_| | |_) | ___) | (_) | |_) | | \___/ \__,_|_|\_\\__,_|_.__/ |____/ \___/|_.__/|_| """ print(ascii_art2) print("Vítejte u programu SOMV, který jsem vytvořil jako malý projekt do fyziky když jsem se nudil. SOMV stojí pro Směrodatná odchylka měření veličiny"+"\n"+"Program je určen jako pomůcka k měření. Program vám vypočítá SOMV a i Relativní odchylku aby jste věděli jak přesně jste měřili"+"\n"+"Program vytvoří i graf s vámi danými hodnotami"+"\n"+"Je to vše naprogramované přes python, jelikož to je jediný co umím vcelku, max základy html css a javascript."+"\n"+"\n"+"NÁVOD k použití:"+"\n"+"Program se vás bude ptát na měřené hodnoty a vy je bude zadávat ve STEJNÝCH jednotkách(v nové verzi možná vylepším)"+"\n"+"Jakmile zadáte všechny hodnoty co chcete tak program sám řekne co dál."+"\n"+"Autorem je Jakub Šobr Videnska 1.B, update ohlášeny předem na kubasobr.blogspot.cz") print("") print("START PROGRAMU") random_cislo = random.randint(0,100) start_otazka = int(input("Napište číslo "+str(random_cislo) +" pro start programu: ")) if start_otazka == random_cislo: Informace_funkce() else: print("") print("OZNÁMENÍ") print("Bud jste zadali špatné číslo a nebo nastalo v programu k chybě") print("Za pět sekund bude zapnuta začáteční funkce znovu.") print("") time.sleep(5) Zacatek() def Informace_funkce(): print("") print("PROGRAM STARTUJE") otazka_pocet_hodnot = int(input("INFORMACE 1 - Kolikrát jste provedli měření?: ")) otazka_jednotka = input("INFORMACE 2 - Zadejte jednotku v níž jste prováděli měření (cm,dm,m,litr apod): ") tts = input("INFORMACE 3 - Chcete aby program výsledek zazněl jako text to speech? ano / ne: ") def Hlavni_funkce(pocet_hodnot,jednotka): print("") aktualni_cislo = 1 hodnoty_list = [] index = 0 celkove = 0 for _ in range(pocet_hodnot): hodnota = float(input("Zadejte hodnotu č."+str(aktualni_cislo)+" : ")) celkove += hodnota hodnoty_list.insert(index, hodnota) index +=1 aktualni_cislo +=1 ar_prumer = celkove/pocet_hodnot def Casti(aritmeticky_prumer): index_cteni = 0 soucet_casti = 0 for hodnota in hodnoty_list: cast = (hodnota - aritmeticky_prumer) ** 2 soucet_casti += cast index_cteni += 1 # Odmocní celkový součet citatel = soucet_casti ** 0.5 jmenovatel = pocet_hodnot *(pocet_hodnot-1) odchylka = citatel /jmenovatel minus_interval = aritmeticky_prumer-odchylka plus_interval = aritmeticky_prumer+odchylka relativni_odchylka = odchylka/aritmeticky_prumer # Rounding round_odchylka = round(odchylka,3) round_minus_interval = round(minus_interval,3) round_plus_interval = round(plus_interval, 3) round_relativni_odchylka = round(relativni_odchylka, 3) # Uprava pro tts uprava_round_odchylka = str(round_odchylka).replace('.', ',') uprava_round_minus_interval = str(round_minus_interval).replace('.', ',') uprava_round_plus_interval = str(round_plus_interval).replace('.', ',') uprava_round_relativni_odchylka = str(round_relativni_odchylka).replace('.', ',') if odchylka > 0.5: text = ("Systém odhalil nepřesné měření! Odchylka je +- " + str(round_odchylka) + str( jednotka) + " Reálná hodnota je někde mezi " + str(round_minus_interval) + " a " + str( round_plus_interval) + ". Relativní odchylka je " + str( round_relativni_odchylka) + " Děkujeme za použití programu.") presne_hodnoty = ("Odchylka = "+str(odchylka)+"\n"+"Interval = od "+str(minus_interval)+" po "+str(plus_interval)+"\n"+"Relativní odchylka = "+str(relativni_odchylka)) print(text) presne_ot = int(input("Chcete vidět přesné hodnoty(1) nebo stačí obecnější?(2): ")) if presne_ot == 1: print(presne_hodnoty) else: text = ("Měření je v pořádku! Odchylka je +- " + str(round_odchylka) + str( jednotka) + " Reálná hodnota je někde mezi " + str(round_minus_interval) + " a " + str( round_plus_interval) + ". Relativní odchylka je " + str( round_relativni_odchylka) + " Děkujeme za použití programu.") presne_hodnoty = ("Odchylka = "+str(odchylka)+"\n"+"Interval = od "+str(minus_interval)+" po "+str(plus_interval)+"\n"+"Relativní odchylka = "+str(relativni_odchylka)) print(text) presne_ot = int(input("Chcete vidět přesné hodnoty(1) nebo stačí obecnější?(2): ")) if presne_ot == 1: print(presne_hodnoty) def Tts(): # User Inteface if odchylka > 1: text = ("Systém odhalil nepřesné měření! Odchylka je +- " + str(uprava_round_odchylka) + str( jednotka) + " Reálná hodnota je někde mezi " + str(uprava_round_minus_interval) + " a " + str( uprava_round_plus_interval) + ". Relativní odchylka je " + str( uprava_round_relativni_odchylka) + " Děkujeme za použití programu.") print(text) else: text = ("Měření je v pořádku! Odchylka je +- " + str(uprava_round_odchylka) + str( jednotka) + " Reálná hodnota je někde mezi " + str(uprava_round_minus_interval) + " a " + str( uprava_round_plus_interval) + ". Relativní odchylka je " + str( uprava_round_relativni_odchylka) + " Děkujeme za použití programu.") print(text) from gtts import gTTS import os # Text, který chcete převést na hlas if odchylka > 1: text = "Systém odhalil nepřesné měření! Odchylka je +-" + str(round_odchylka) + " " + str( jednotka) + "Reálná hodnota je někde mezi " + str(round_minus_interval) + " a " + str( round_plus_interval) + ". Relativní odchylka je " + str( round_relativni_odchylka) + "Děkujeme za použití programu." else: text = "Měření je v pořádku! Odchylka je +-" + str(round_odchylka) + " " + str( jednotka) + "Reálná hodnota je někde mezi " + str(round_minus_interval) + " a " + str( round_plus_interval) + ". Relativní odchylka je " + str( round_relativni_odchylka) + "Děkujeme za použití programu." # Vytvoření instance gTTS s textem a nastavením jazyka na češtinu tts = gTTS(text, lang='cs') # Uložení hlasového souboru na disk tts.save("nahravka.mp3") # Přehrání hlasového souboru (vyžaduje externí přehrávač) os.system("nahravka.mp3") def graf_menu(): text = """ __ __ _ _ __ __ _ / _| / _` | '__/ _` | |_ | (_| | | | (_| | _| \__, |_| \__,_|_| |___/ """ print(text) otazka = input("Chcete zobrazit hodnoty ve grafu? ano / ne: ") if otazka == "ano": graf() else: print("Děkujeme za použití programu. Program se vypne za 10 sekund") time.sleep(10) def graf(): import matplotlib.pyplot as plt import matplotlib.pyplot as plt import numpy as np #hodnoty_list = [15, 18, 12, 25, 14] jednotka = "cm" poradi = list(range(1, pocet_hodnot + 1)) # Od 1 do pocet_hodnot # Příprava dat x = poradi y = hodnoty_list # Vytvoření čárového grafu plt.plot(x, y, label='Vámi změřené hodnoty', color='b') # Přidání první horizontální čáry na hodnotu 16 s červenou barvou plt.axhline(y=minus_interval, color='r', linestyle='-.', label='Mínusový interval') # Přidání druhé horizontální čáry na hodnotu 22 s červenou barvou plt.axhline(y=plus_interval, color='r', linestyle='-.', label='Plusový interval') # Přidání tučné zelené čáry na hodnotu 20 plt.axhline(y=aritmeticky_prumer, color='g', linestyle='--', linewidth=3, label='Aritmetický průměr') # Vyplnění prostoru mezi červenými čarami plt.fill_between(x, minus_interval, plus_interval, color='yellow', alpha=0.5, label='Interval odchylky') # Nastavení popisků os plt.ylabel('Hodnoty v ' + jednotka) plt.xlabel('Pořadí') # Zobrazení legendy plt.legend() # Zobrazení grafu plt.show() if tts == "ano": Tts() graf_menu() else: graf_menu() Casti(ar_prumer) Hlavni_funkce(otazka_pocet_hodnot,otazka_jednotka) Zacatek() # made by jkob sobr 23 original
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter