Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: Python: tkinter: todennäköisyyslaskuri

koodaaja [31.07.2021 17:39:20]

#

Tämä ohjelma laskee kolme eri todennäköisyyttä: todennäköisyyden että molemmat ovat onnistuvat, todenäköisyyden että ainakin yksi onnistuu ja todennäköisyyden että vain yksi onnistuu. Tulokset näytetään liukusäätimissä ja sen lisäksi piirakkakaaviona (jos käyttäjä sallii). Ohjelmassa käytetään tkinter ja matplotlib-kirjastoja.

ja-tapahtuman todennäköisyys lasketaan kertomalla molemmat todennäköisyydet. tai-tapahtuman todennäköisyys lasketaan laskemalla todennäköisyyden yhteen ja vähentämällä siitä ja-tapahtuma. toisessa tai-tapahtumassa vähennetään vielä toinen ja-tapahtuma. Todennäköisyydet ilmoitetaan 0-1 välillä.

from tkinter import *
import tkinter as tk
import matplotlib.pyplot as plt
import numpy as np

#Tässä ohjelmassa lasketaan todennäköisyydet, laitetaan tulokset liukusäätimiin ja mahdollisesti piirretään piirakkakaavio

root = Tk()

def Laske(tn,tn2):
 #Lasketaan kolme todennäköisyyttä
 ja = tn*tn2
 tai = tn+tn2-ja
 tai2 = tai-ja
 return ja,tai,tai2

def Piirra(ja,tai,tai2):
 #Piirretään piirakkakaavio
 fig, ax = plt.subplots()
 koko = 0.3
 cmap = plt.get_cmap("tab20c")
 arvot = np.array([[ja,0.0],[tai,tai2]])

 ulkoVarit = cmap(np.arange(3)*4)
 sisaVarit = cmap([1,2,3])

 ax.pie(arvot.sum(axis=1),radius=1,colors=ulkoVarit,wedgeprops=dict(width=koko,edgecolor='w'))
 ax.pie(arvot.flatten(),radius=1-koko,colors=sisaVarit,wedgeprops=dict(width=koko,edgecolor='w'))

 plt.show()

def Tulos():
 #Lasketaan tulokset erillisessä funktiossa.
 #Lasketaan kolme todennäköisyyttä.
 #1) Todennäköisyys, että molemmat tapahtuu
 #2) Todennäköisyys, että vähintään toinen tapahtuu
 #3) Todennäköisyys, että vain toinen tapahtuu
 tn = float(e1.get())
 tn2 = float(e2.get())
 ja,tai,tai2 = Laske(tn,tn2)
 #Näytetään tulokset liukusäätimissä.
 tulosJa.set(ja*100)
 tulosTai.set(tai*100)
 tulosTai2.set(tai2*100)
 if (Valinta.get() == 1):
  Piirra(ja,tai,tai2)

frame = Frame(root)
frame.pack()
#Ensimmäiseen kehykseen laitetaan tulossäätimet

tulosJa = DoubleVar()
scale = Scale(frame,from_=0, to=100,state=DISABLED, variable=tulosJa)
scale.pack()

tulosTai = DoubleVar()
scale2 = Scale(frame,from_=0, to=100,state=DISABLED,variable=tulosTai)
scale2.pack()

tulosTai2 = DoubleVar() #Ehdoton tai
scale3 = Scale(frame,from_=0, to=100,state=DISABLED,variable=tulosTai2)
scale3.pack()

frame2 = Frame(root)
frame2.pack()
#Toiseen kehykseen laitetaan loput kontrollit.
e1 = Entry(frame2,bd=5)
e1.pack()
e2 = Entry(frame2,bd=5)
e2.pack()

Valinta = IntVar()
c1 = Checkbutton(frame2,text="Kaavio",variable=Valinta,onvalue=1,offvalue=0)
c1.pack()
btn = Button(frame2,text="Tulos",command=Tulos)
btn.pack()

root.mainloop()

jlaire [31.07.2021 21:48:41]

#

numpy on aika iso kirjasto ottaa käyttöön noin pienen asian takia.

Mikä on pisin ohjelma, jonka olet kirjoittanut?

Rehellisesti sanottuna tästä ohjelmasta ei varmaan ole kenellekään paljoa hyötyä, ja uutta rakentavaa palautetta on vaikea antaa näin lyhyestä jutusta.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta