Keresés

Keresendő kifejezés:

Toplista

Toplista
  • betöltés...

Segítség!

Ahhoz, hogy mások kérdéseit és válaszait megtekinthesd, nem kell beregisztrálnod, azonban saját kérdés kiírásához ez szükséges!

Python házifeladat

69
Sziasztok. Valaki tudna segíteni ebben a három python feladatban? Előre is köszi a válaszokat!

1, Bence a zsebpénzéből egy új mikrofont szeretne venni. Szerencséjére a kedvenc webshopja épp
kiárusítást tart, így minden szórakoztató elektronikai termék akciósan vásárolható meg.
Írj egy programot, amely két paramétert vár: a webshopban található mikrofonok eredeti árát
(egész számokat tároló lista) és a leárazás mértékét százalékban (valós szám)! A függvény
csökkentse a listában lévő árakat az adott százalékkal, és térjen vissza az így kapott listával! Az
árak továbbra is egészek legyenek (ne tizedestörtek)!
Példa:
Input: [5000, 12000, 10000, 29000, 47000], 30.0
Return: [3500, 8400, 7000, 20300, 32900]

2,Írj egy programot, amely egy szöveget kap paraméterül (a szöveg szóközzel elválasztott szavakat
tartalmaz)! A függvény térjen vissza a szövegben található leghosszabb szóval! Amennyiben több
szó is ugyanolyan hosszú, akkor közülük a szövegben korábban előfordulót add vissza!
Ha a paraméterül kapott szöveg az üres string, akkor a visszatérési érték a HIBA! szöveg
legyen!
Példa:
Input: 'Szia uram! Mondd mar meg, hogy hany ora van!'
Return: 'uram!'
Input: ''
Return: 'HIBA!'

3,Írj egy programot, amely egy jelszavakat tartalmazó listát kap paraméterül! A függvény adja vissza
ezek közül a gyenge jelszavakat egy listában! Egy jelszót gyengének tekintünk, ha az alábbi
feltételek közül legalább 1 érvényes rá:
• A jelszó rövidebb, mint 5 karakter
• A jelszó nem tartalmaz számjegy karaktert
• A jelszó tartalmazza a jelszo vagy 123 szövegek valamelyikét bármilyen formában (a
kis- és nagybetűket nem megkülönböztetve).
Példa:
Input: ['Root', 'Kekw2000', 'H0sszuJelszoG0esBrrr', 'Admin123456', 'sub2Pewdiepie', 'asdqwe',
'K1L0']
Return: ['Root', 'H0sszuJelszoG0esBrrr', 'Admin123456', 'asdqwe', 'K1L0']
Jelenleg 1 felhasználó nézi ezt a kérdést.
python
0
Középiskola / Informatika

Válaszok

1
1. Kissé zagyva:
  • Először programról beszél, aztán meg függvényről (függvényt választottam)
  • Azt kéri, hogy az eredmények egész számok legyenek, de nem mondja meg, hogy kerekíts vagy nyess (kerekítést választottam)

def learazas(eredeti_ar_lista, learazas):
    return [round(ar / 100 * (100 - learazas)) for ar in eredeti_ar_lista]

List comprehension nélkül:

def learazas(eredeti_ar_lista, learazas):
    learazott_ar_lista = []

    for ar in eredeti_ar_lista:
        learazott_ar_lista.append(round(ar / 100 * (100 - learazas)))

    return learazott_ar_lista

2.

def leghosszabb_szo(szoveg):
    return sorted(szoveg.split(), key = len, reverse = True)[0] if szoveg else 'HIBA!'

Korábban kissé kapkodtam, a „helyes” megoldás ez volna:

def leghosszabb_szo(szoveg):
    return max(szoveg.split(), key = len) if szoveg else 'HIBA!'

Kézzel keresve ki a leghosszabb szót:

def leghosszabb_szo(szoveg):
    if szoveg == '':
        return'HIBA!'

    szo_lista = szoveg.split()
    leghosszabb = ''

    for szo in szo_lista:
        if len(leghosszabb) < len(szo):
            leghosszabb = szo

    return leghosszabb

3. (Jessz! Befért egy sorba.)

def gyenge_jelszo(jelszo_lista):
    return list(filter(lambda jelszo: len(jelszo) < 5 or not any([str(szamjegy) in jelszo for szamjegy in range(10)]) or 'jelszo' in jelszo.lower() or '123' in jelszo, jelszo_lista))

Ismét a kapkodás, a list comprehension nem kellett bele:

def gyenge_jelszo(jelszo_lista):
    return list(filter(lambda jelszo: len(jelszo) < 5 or not any(filter(str.isdigit, list(jelszo))) or 'jelszo' in jelszo.lower() or '123' in jelszo, jelszo_lista))

A fenti szétszedve külön feltételekre:

def gyenge_jelszo(jelszo_lista):
    gyenge_lista = []

    for jelszo in jelszo_lista:
        if len(jelszo) < 5:
            gyenge_lista.append(jelszo)
        elif not any(filter(str.isdigit, list(jelszo))):
            gyenge_lista.append(jelszo)
        elif 'jelszo' in jelszo.lower() or '123' in jelszo:
            gyenge_lista.append(jelszo)
           
    return gyenge_lista
Módosítva: 2 hete
1