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()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.
Aihe on jo aika vanha, joten et voi enää vastata siihen.