python/taitotalo: import day three

This commit is contained in:
Aminda Suomalainen 2024-05-16 21:21:10 +03:00
parent 23d0a7241f
commit 63de2e0f6f
Signed by: Mikaela
SSH Key Fingerprint: SHA256:CXLULpqNBdUKB6E6fLA1b/4SzG0HvKD19PbIePU175Q
12 changed files with 322 additions and 5 deletions

View File

@ -5,10 +5,11 @@ root = true
indent_style = space indent_style = space
indent_size = 4 indent_size = 4
max_line_length = 79 max_line_length = 79
end_of_line = crlf
[*.md]
end_of_line = lf
[*.py] [*.py]
profile = black profile = black
max_line_length = 79
#end_of_line = crlf
[*.md]
end_of_line = lf

4
python/taitotalo/.gitignore vendored Normal file
View File

@ -0,0 +1,4 @@
uusi.txt
# This is intentionally in tree at least until the script becomes better. If
# it does...
kanta.tsv

View File

@ -0,0 +1,2 @@
Username Password
admin adminpw
1 Username Password
2 admin adminpw

View File

@ -0,0 +1,56 @@
"""
Kirjoita ohjelma joka
Tulostaa Tervetuloa
Seuraavaksi # olen nimi olen ikä
Seuraavaksi ohjelmaan pitää syöttää nimi ja ikä
Tulostus syötetty nimi ja ikä
Kolmas tulostus
ikä tarkistus
"""
# Vaaditaan virhe-poistumiseen
import sys
def main():
"""
Pääfunktio.
"""
print("Tervetuloa")
nimeni = "Python3-koodinpätkä."
ikani = int(0)
print("Olen", ikani, "-vuotias", nimeni)
nimi = input("Mikä sinun nimesi on?: ")
# Odotetaan käyttäjän mahdollisesti pyrkivän syöttämään muutakin kuin numeroita ja varaudutaan asiaan
try:
# Tallennetaan kokonaislukuna käyttäjältä pyydetty ikä
ika = int(input("Entä kuinka vanha olet? "))
# Annetaan käyttäjäystävällinen virheilmoitus ja poistutaan virhekoodilla, jos käyttäjä ei syöttänyt numeroita
except ValueError:
print("Syötä ikäsi numeroina!")
sys.exit(1)
# Tulostetaan käyttäjän tiedot
# print("Olet", nimi, "ja olen", ika, "-vuotias")
print("Olet", ika, "-vuotias", nimi)
# Aloitetaan kokeilemalla onko käyttäjä alle 18.
if ika < 18:
print("Olet alaikäinen")
# Jos käyttäjä ei ollut alaikäinen, varmistetaan onko hän 18 ja onko hän alle 65.
elif (ika >= 18) and (ika < 65):
print("Olet täysi-ikäinen")
# Mikäli ikä on 65 tai yli, käyttäjä on seniori.
elif ika >= 65:
print("Olet seniori")
# Muussa tapauksessa tulostetaan virheilmoitus.
else:
print("Jokin meni pieleen. Yritä uudelleen.")
# Jos suoritamme koodia suoraan skriptistä importtauksen sijaan, suoritetaan pääfunktio.
if __name__ == "__main__":
main()

View File

@ -0,0 +1,34 @@
"""
Tulostaa numerot 0-9
"""
# Vaaditaan virhe-poistumiseen
# import sys
def main():
"""
Pääfunktio.
"""
# Alustetaan kierros ennen silmukkaa ja kerrotaan moneen halutaan
kierros = 0
# Kohteeseen täytyy lisätä 1 tai viimeinen haluttu numero ei toistu.
kohde = 9 + 1
# Silmukoidaan kun kierros on alle kohteen
while kierros < kohde:
print("Kierros", kierros)
# Nostetaan kierrosta, jottei silmukoida ikuisesti kierrosta 1
kierros += 1
# Lopuksi pysähdytään
if kierros > kohde:
break
print()
# Jos suoritamme koodia suoraan skriptistä importtauksen sijaan, suoritetaan pääfunktio.
if __name__ == "__main__":
main()

View File

@ -0,0 +1,44 @@
"""
Plussataan lukuja, kunnes käyttäjä sanoo -1
"""
# Vaaditaan virhe-poistumiseen
# import sys
def main():
"""
Pääfunktio.
"""
# Tähän plussataan luvut
laskuri = int(0)
# Ikuisuuslooppi
while True:
# Varaudutaan virheellisiin syötteisiin
try:
# Pyydetään käyttäjän syötettä
# syote = int(input("Anna luku. -1 lopettaa. "))
syote = int(input("Anna luku. 0 lopettaa. "))
# Poistutaan kun -1 syötetään
# if syote == -1:
if syote == 0:
print("Ohjelma päättyi. Antamiesi lukujen summa oli", laskuri)
# print("Ohjelma päättyi.")
break
# Lisätään syöte laskuriin
laskuri += syote
print("Antamiesi lukujen summa on", laskuri)
# Jos lukua ei syötetty.
except ValueError:
print("Syötä luku!")
# Jos suoritamme koodia suoraan skriptistä importtauksen sijaan, suoritetaan pääfunktio.
if __name__ == "__main__":
main()

View File

@ -0,0 +1,23 @@
"""
Lisää tekstiä tiedostoon
"""
def main():
"""
Pääfunktio.
"""
# Kysytään mitä käyttäjä haluaa kirjoittaa
syote = input("Mitä haluaisit kirjoittaa tiedostoon? ") + "\r\n"
# Avataan uusi.txt kirjoitustilassa. HUOM! Ylikirjoittaa edellisen
# sisällön, käytä "a" lisätäksesi! Pylint valittaa jollei määritetä
# merkistöä.
with open("uusi.txt", "a", encoding="utf-8", newline="\r\n") as f:
f.write(syote)
# Jos suoritamme koodia suoraan skriptistä importtauksen sijaan, suoritetaan
# pääfunktio.
if __name__ == "__main__":
main()

View File

@ -0,0 +1,87 @@
"""
1. Tallenna uusi salasana
2. Hae tallennettu salasana
3. Poista tallennettu salasana
4. Lopeta
Valitse toiminto (1/2/3/4):
"""
# import sqlite3
# import secrets
# Tuodaan csv kirjasto nimellä tsv, koska oikeasti käsittelen tsv tiedostoja
import csv as tsv
def main():
"""
Pääfunktio.
"""
print("TODO! TÄSSÄ PITÄISI OLLA TUNNISTAUTUMINEN ENSIN!")
print("Tervetuloa \n")
# Pysytään käynnissä:
while True:
# Toimintovalikko
print(
"Tallenna uusi salasana, valitse 1. Hae tallennettu salasana",
"valitsemalla 2. Poista tallennettu salasana valitsemalla 3.",
"Lopeta valitsemalla 4.",
)
# Vaihtoehdot
try:
valinta = int(input("Valinta? "))
match valinta:
case 1:
tallennasalasana()
case 2:
haesalasana()
case 3:
poistasalasana()
case 4:
print("Ohjelma päättyy.")
break
case _:
print("\nVirheellinen valinta.\n")
except ValueError:
print("Tämä valikko hyväksyy vain lukuja.")
def tallennasalasana():
"""
Salasanan tallennus.
"""
print("Tervetuloa salasanan tallennukseen.")
# with open("kanta.tsv", "w", newline="\n") as kanta:
# writer = csv.writer(f)
# writer.writerows(someiterable)
print("..vaikka tätä ei vielä olekaan olemassa.")
def haesalasana():
"""
Salasanan haku.
"""
# Avataan tiedosto kanta.tsv lukitilassa nimellä kanta.
with open("kanta.tsv", newline="\n", encoding="utf-8") as kanta:
# Yksinkertaistetaan kannan luku muuttujaksi.
lukija = tsv.reader(kanta, delimiter="\t", quoting=tsv.QUOTE_NONE)
# Kehitysvaiheessa vain luetaan koko kanta.
for rivi in lukija:
print(rivi)
def poistasalasana():
"""
Salasanan poisto.
"""
print("Salasanan poistoa ei ole vielä implementoitu.")
# Jos suoritamme koodia suoraan skriptistä importtauksen sijaan, suoritetaan
# pääfunktio.
if __name__ == "__main__":
main()

View File

@ -1,8 +1,8 @@
# Tuodaan turtle -kirjasto # Tuodaan turtle -kirjasto
import random
import turtle import turtle
# Satunnaislukuja # Satunnaislukuja
import random
# ikkkuna = turtle.Screen() # ikkkuna = turtle.Screen()

46
python/taitotalo/main9.py Normal file
View File

@ -0,0 +1,46 @@
"""
Kivi-sakset-paperi peli!
"""
# Tarvitaan tietokoneen vastauksen päättämiseksi
import random
# Määritetään pääfunktio
def main():
"""
Pääfunktio.
"""
# Arvotaan tietokoneen valinta
tkvalinta = random.sample(["kivi", "sakset", "paperi"], 1)
tkvalinta = str(tkvalinta[0])
print(tkvalinta)
# Pyydetään käyttäjän valinta
valinta = input("Valitse 'kivi', 'sakset' tai 'paperi'\n")
# print(valinta)
# Verrataan vastauksia
if tkvalinta == valinta:
print("Tasapeli!", tkvalinta, "ja", valinta)
elif tkvalinta == "kivi" and valinta == "sakset":
print("Hävisit, kivi voittaa sakset")
elif tkvalinta == "sakset" and valinta == "paperi":
print("Hävisit, sakset voittaa paperin")
elif tkvalinta == "paperi" and valinta == "kivi":
print("Voitit, kivi voittaa paperin")
elif tkvalinta == "sakset" and valinta == "kivi":
print("Voitit, sakset voittavat kiven")
elif tkvalinta == "paperi" and valinta == "sakset":
print("Voitit, sakset voittavat paperin")
else:
# Tästä tuli vahingossa catch-all virheellisille syötteille, enkä ole varma toteutinko kaikki skenaariot
print(
"Joko tilannetta ei ole vielä toteutettu tai annoit virheellisen syötteen. Ilmoittaisitko ongelman kehittäjälle?",
)
print("Tietokone valitsi:", tkvalinta, "syötteesi oli", valinta)
# Jos suoritamme koodia suoraan skriptistä importtauksen sijaan, suoritetaan pääfunktio.
if __name__ == "__main__":
main()

15
python/taitotalo/pohja.py Normal file
View File

@ -0,0 +1,15 @@
"""
Kuvaus
"""
def main():
"""
Pääfunktio.
"""
# Jos suoritamme koodia suoraan skriptistä importtauksen sijaan, suoritetaan
# pääfunktio.
if __name__ == "__main__":
main()

View File

@ -0,0 +1,5 @@
[tool.black]
line-length = "79"
[tool.pylint.format]
max-line-length = 79