diff --git a/python/taitotalo/.gitattributes b/python/taitotalo/.gitattributes index e186ecf..699852e 100644 --- a/python/taitotalo/.gitattributes +++ b/python/taitotalo/.gitattributes @@ -1,4 +1,8 @@ +# This is for doctoc should I decide to use it in the future +*.md text eol=lf +# These files have been mostly modified from Windows in this directory and +# OneDrive kept them as crlf *.py text eol=crlf .editorconfig text eol=crlf .gitattributes text eol=crlf -*.md text eol=lf +requirements.txt text eol=crlf diff --git a/python/taitotalo/main6.py b/python/taitotalo/main6.py new file mode 100644 index 0000000..fdf179b --- /dev/null +++ b/python/taitotalo/main6.py @@ -0,0 +1,40 @@ +""" +Kysytään käyttäjältä kaksi lukua ja lasketaan summa, erotus ja tulo. +Tarkistetaan myös, ettei toinen luku ole nolla ja suoritetaan jakolasku. +""" + +# Tuodaan sys-kirjasto, jotta voidaan poistua myöhemmin virhetilanteessa. +import sys + + +# Määritetään pääfunktio, jotta voidaan importata tämä kirjasto muualta. +def main(): + """ + Pääfunktio. + """ + + # Pyydetään käyttäjältä kaksi lukua varautuen siihen, ettei käyttäjä syötä lukuja oikeassa muodossa. + try: + luku1 = float(input("Anna ensimmäinen luku: ")) + luku2 = float(input("Anna toinen luku: ")) + # Mikäli käyttäjä syöttää jotakin, mitä emme voi muuttaa float:iksi tai int:iksi, annetaan virheilmoitus ja poistutaan virhekoodiin. + except ValueError: + print("Syötä luku!") + sys.exit(1) + + # Tulostetaan laskutoimitukset. Käytetään int siisteyden vuoksi, vaikka uhrataan tuki desimaalien laskemiselle. + print(int(luku1), "+", int(luku2), "=", int(luku1 + luku2)) + print(int(luku1), "-", int(luku2), "=", int(luku1 - luku2)) + print(int(luku1), "*", int(luku2), "=", int(luku1 * luku2)) + + # Varaudutaan siihen, että käyttäjä syöttää luvuksi nollan ja siinä tapauksessa kieltäydytään suorittamasta tehtävää. + if luku1 == 0 or luku2 == 0: + print("Nollalla ei voi jakaa.") + else: + # print(luku1, "/", luku2, "=", (luku1 / luku2)) + print(int(luku1), "/", int(luku2), "=", (luku1 / luku2)) + + +# Jos suoritamme koodia suoraan skriptistä importtauksen sijaan, suoritetaan pääfunktio. +if __name__ == "__main__": + main() diff --git a/python/taitotalo/main7.py b/python/taitotalo/main7.py new file mode 100644 index 0000000..0c35510 --- /dev/null +++ b/python/taitotalo/main7.py @@ -0,0 +1,66 @@ +""" +Sovellus arpoo luvun ja pyytää käyttäjää arvaamaan sen. +""" + +# Tuodaan kirjastot random numeron myöhemmin arpomista varten. +import random + + +# Määritetään pääfunktio +def main(): + """ + Pääfunktio. + """ + # Kutsutaan funktiota + arvaa_numero() + + +# Määritetään tehtävänannossa vaadittu funktio. +def arvaa_numero(): + """ + Sovellus oikeasti toteutetaan täällä. + """ + + # Luodaan sattumanvaraisesti oikea vastaus tallentaen se kokonaisluvuksi. + oikeavastaus = int(random.randrange(0, 10)) + # Luodaan muuttuja laskemaan yrityäsiä + laskuri = 0 + + # Debuggausta varten tulostetaan oikea vastaus + # print(oikeavastaus) + + while True: + + laskuri += 1 + + # Pyydetään käyttäjältä luku varautuen virheelliseen syötteeseen. Se on tärkeää muuttaa int:iksi tai muuten se on string! + try: + arvaus = int(input("Arvaa numero? ")) + # Virhesyötteen tapahtuessa + except ValueError: + print("Et antanut numeroa.") + return + + # Jos käyttäjä arvaa oikein, poistutaan loopista + if arvaus == oikeavastaus: + # Poistetaan taas välilyönti + print( + "Onnittelut! :)\nArvasit oikein ", + laskuri, + ". yritykselläsi. Luku oli siis ", + oikeavastaus, + ".", + sep="", + ) + break + + # Muuten avustetaan käyttäjää antamalla vihje. Printistä myös poistetaan erottavat välilyönnit, jotka tehdään itse, jotta arvauksen ja pisteen väliin ei tule välilyöntejä + elif arvaus < oikeavastaus: + print("Oikea luku on suurempi kuin ", arvaus, ".", sep="") + else: + print("Oikea luku on pienempi kuin ", arvaus, ".", sep="") + + +# Jos suoritamme koodia suoraan skriptistä importtauksen sijaan, suoritetaan pääfunktio. +if __name__ == "__main__": + main() diff --git a/python/taitotalo/main8.py b/python/taitotalo/main8.py new file mode 100644 index 0000000..1447796 --- /dev/null +++ b/python/taitotalo/main8.py @@ -0,0 +1,43 @@ +""" +Sovellus tekee listasta pareja +""" + +# Tuodaan paketti tabulate. +import tabulate + +# Tarvitaan parien muodostamiseen +import random + + +# Määritetään pääfunktio +def main(): + """ + Pääfunktio. + """ + + # Määritetään nimet{,2} lista + nimet = ["Antti", "Pekka", "Esa"] + nimet2 = ["Emmi", "Maini", "Reetta"] + + # Arvotaan nimilistoista kahdet parit. + random_names1 = random.sample(nimet, 3) + random_names2 = random.sample(nimet2, 3) + + # Luo tuplen, jossa zip yhdistää random_names{1,2} vastaavan kohdan kanssa, jotka sitten laitetaan listaan. + name_pairs = list(zip(random_names1, random_names2)) + + print(name_pairs) + + # Tehdään taulukko nimistä, otsikkoina "Etunimi" + table = tabulate.tabulate( + name_pairs, + headers=["Etunimi", "Etunimi"], + tablefmt="github", + ) + # Tulostetaan taulukko + print(table) + + +# Jos suoritamme koodia suoraan skriptistä importtauksen sijaan, suoritetaan pääfunktio. +if __name__ == "__main__": + main() diff --git a/python/taitotalo/requirements.txt b/python/taitotalo/requirements.txt new file mode 100644 index 0000000..a898f12 --- /dev/null +++ b/python/taitotalo/requirements.txt @@ -0,0 +1,2 @@ +# main8.py requires this +tabulate