Skip to content

Instantly share code, notes, and snippets.

@zalnaRs
Last active January 2, 2025 17:57
Show Gist options
  • Save zalnaRs/f866f8c9d08eab1871aa184e3bfb44b0 to your computer and use it in GitHub Desktop.
Save zalnaRs/f866f8c9d08eab1871aa184e3bfb44b0 to your computer and use it in GitHub Desktop.
'''
Felhasználó kezelés
2025. 01. 01.
Ebbe minden benne van amit eddig tanultunk ebbe az évbe.
Lehet, hogy picit komplikáltnak nézz ki, de valójában nem az.
Ha valamit nem értetek kérdezetek engem, ChatGPT, Google Gemini, Github Copilot, StackOverflow-t.
'''
import random # beimportáljuk a random modult, amit majd késöbb használunk
'''
ebbe a "felhasznalok" listába, fogjuk tárolni a nevet és a jelszót, egy úgynevezett "matrix"-ba, tehét a listába listákat tárolunk.
Valahogy így fog kinézni a listánk:
[
["neve", "jelszava"],
["neve2", "jelszava"]
].
Ha az 1. felhasználónak az adatait akarom akkor így lehet lekérni külön:
felhasznalok[0][0] = név
felhasznalok[0][1] = jelszó
'''
felhasznalok = []
# elöre összeszedem egy listába a menü elemeket így egyszerübb lesz több opciót hozzáadni
menu_elemek = ['Felhasznaló hozzáadása', 'Felhasznaló törlése', 'Véletlenszerű felhasználó lekérése', 'Kilépés']
# ez a változó azért kell, hogy a program addig fusson míg a felhasználó nem lép ki
fut_e = True
# az alkalmazás "main loop"-ja = itt csinálunk mindent
while fut_e:
# A felhasználók elemszámát ki számoljuk
# Megszámolás tétele: így müködik a len() függvény
felhasznalok_elemszama = 0
for felhasznalo in felhasznalok:
felhasznalok_elemszama += 1
# Kiírjuk a felhasználókat, csak a nevüket!
print('Felhasználók: ')
print(f'-Elemszámuk: {felhasznalok_elemszama}')
# Így kell átmenni egy listán (több opció is van, de ezt mindenkinek kell tudnia)
for i in range(0, felhasznalok_elemszama):
print(f'-{i+1}. {felhasznalok[i][0]}')
print('---')
print('Menü: ')
for i in range(0, len(menu_elemek)):
print(f'{i+1}. {menu_elemek[i]}')
# bekérjük, hogy melyik opciót szeretné választani
valasz = input('Válasz egy opciót: ')
print('------')
if valasz == '1':
# 1. Felhasználó hozzáadása
# a jo_e változót fogjuk, arra használni, hogy újra megkérdezzük a nevet vagy a jelszót, ha hibásan irja be
jo_e = False
# üres változók ebbe fogjuk majd beirní az eredményeket
nev = ''
jelszo = ''
print('Felhasználó létrehozása: ')
# Név bekérése
while not jo_e:
beirt_nev = input('Név: ')
# megnézzuk, hogy 5 karakter hosszú e?
# FONTOS: a szöveg (string) egy sima lista (array)
if len(beirt_nev) != 5:
print('HIBA: A neved 5 karakterből kell álljon! (se több, se kevesebb)')
else:
# Ha a fenti elagazások mind hamisak voltak, átirjuk a jo_e-t igazra és a nev váltózót a bekértre
# így megáll a while ciklus
jo_e = True
nev = beirt_nev
# újra ez jelszóval
jo_e = False
# ugyanaz mint a `not jo_e`, de gyorsabb
while jo_e == False:
beirt_jelszo = input('Jelszó: ')
beirt_jelszo_hossza = len(beirt_jelszo)
# Eldöntés tétele: megnézzük, hogy van e 'a' karakter a beirt_jelszo-ba
# ehelyett ezt is lehettet volna tenni az elagazásoknál: `'a' in beirt_jelszo`
i = 0
# addig megy amíg az i kisebb mint a beirt_jelszo_hossza és a jelenlegi vizsgált beirt_jelszo karaktere (beirt_jelszo[i]) nem egyenlő 'a'-val
while i < beirt_jelszo_hossza and beirt_jelszo[i] != 'a':
i += 1
# megnézzuk hogy a i nagyobb-e mint a beirt_jelszo_hossza, ha igen akkor volt benne.
# a `not` megforditja a boolean-t (igaz- vagy hamis-t).
if not i < beirt_jelszo_hossza:
print('HIBA: A jelszónak tartalmaznia kell egy "a" betüt!')
# megnézzük, hogy a beirt_jelszo_hossza nem kisebb mint 6
elif not beirt_jelszo_hossza >= 6:
print('HIBA: A jelszó minimum 6 karakterböl kell álljon!')
else:
# szintén átirjuk a jo_e és a jelszót, ezzel megáll a ciklus
jo_e = True
jelszo = beirt_jelszo
# hozzáadjuk a felhasznalok listához a [nev, jelszo] listát
felhasznalok.append([nev, jelszo])
elif valasz == '2':
# 2. Felhasználó törlése
# bekérjük a a nevet
beirt_nev = input('Név: ')
# Kiválasztás tétele: megnézzük, hogy hányadik helyen van a listába
i = 0
while i < felhasznalok_elemszama and felhasznalok[i][0] != beirt_nev:
i += 1
# ha van töröljük
if i < felhasznalok_elemszama:
print(f'A(z) {beirt_nev} felhasználót megtaláltuk.')
# i elemszámú elem (ebbe az esetbe lista (felhasznaló)) törlése
felhasznalok.pop(i)
else:
print('HIBA: Nincs ilyen nevű felhasználó!')
elif valasz == '3':
# 3. Véletlenszerű felhasznaló lekérése
# a felhasznalo listábol egy 0-tól a felhasznalók lista elemszáma - 1 random elemszámú felhasználót kiválasztunk
valasztott_felhasznalo = felhasznalok[random.randint(0, len(felhasznalok) - 1)]
print(f'Név: {valasztott_felhasznalo[0]}')
print(f'Jelszó: {valasztott_felhasznalo[1]}')
elif valasz == '4':
# 4. Kilépés
# átirjuk a fut_e változot hamisra, így meg áll a fő ciklus ("main loop")
fut_e = False
print('Viszontlátásra!')
print('Az adatokat nem mentettük, mivel Zámbo Dominik tanárúr nem mutattot nekünk indiai Python fájlkezelési videókat!')
else:
# ha hülyeséget írt be akkor egyik elágázás feltétele se lesz igaz
print('HIBA: Nincs ilyen opció!')
# ezzek elválasztók btw
print('------')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment