Keresés


Toplista

Toplista
  • betöltés...

Magántanár kereső

Ha szívesen korrepetálnál, hozd létre magántanár profilodat itt.
Ha diák vagy és korrepetálásra van szükséged, akkor regisztrálj be és írd meg itt, hogy milyen tantárgyban!

5-ösért megy

151
Írj egy python programot ami képes az áltulunk megadott 3 névhez születési dátumot generálni 1980 és 2023 között. Majd kiszámítja mekkora korkülönbség van a legidősebb és legfiatalabb személy között a generált dátumokból.
Jelenleg 1 felhasználó nézi ezt a kérdést.
0
Középiskola / Informatika

Válaszok

2
import random
import datetime
import calendar

szemely_lista = []

for i in range(3):
    nev = input(f'{ i + 1 } személy neve: ')
    ev = random.randint(1980, 2023)
    honap = random.randint(1, 12)
    nap = random.randint(* calendar.monthrange(ev, honap))
    datum = datetime.date(ev, honap, nap)

    print('Fogjuk rá, hogy', nev, 'születési dátuma', datum)
    szemely_lista.append((nev, datum))

legfiatalabb = min(szemely_lista, key = lambda szemely: szemely[1])
legidosebb = max(szemely_lista, key = lambda szemely: szemely[1])
kulonbseg = (legidosebb[1] - legfiatalabb[1]).days

print('A legfiatalabb', legfiatalabb[0], 'és', legidosebb[0], 'közt', kulonbseg, 'nap (kábé', round(kulonbseg / 365.25, 2), 'év) a korkülönbség')
0

Ez a kérdés első változatára volna egy próbálkozás. A véletlen nevek természetesen nem értelmesek, viszont kimondhatóak és helyesírásilag elfogadhatóak. A változatosság kedvéért ezúttal a véletlen dátumot nem darabokból raktam össze, hanem egy véletlen Unix időt konvertáltam az 1970-01-01 .. most intervallumból.

import random
import datetime
import time

def veletlen_nev():
    hangzo = (
        (('a', 'á', 'e', 'é', 'i', 'í', 'o', 'ó', 'ö', 'ő', 'u', 'ú', 'ü', 'ű'), ('a', 'á', 'e', 'é', 'i', 'ó', 'ő', 'ú', 'ű')),
        (('b', 'c', 'cs', 'd', 'f', 'g', 'gy', 'h', 'j', 'k', 'l', 'ly', 'm', 'n', 'p', 'r', 's', 'sz', 't', 'ty', 'v', 'z', 'zs'), ),
    )
    kezdo = random.randint(0, 1)
    hossz = random.randint(3, 7)
    nev = [random.choice(hangzo[(i + kezdo) % 2][-(i == hossz - 1)]) for i in range(hossz)]
    return ''.join(nev).capitalize()

def veletlen_datum():
    return datetime.date.fromtimestamp(random.randint(0, int(time.time())))

szemely_lista = [(veletlen_nev(), veletlen_datum()) for _ in range(30)]

print('%-10s | %s' % ('Név', 'Dátum'))
for szemely in szemely_lista:
    print('%-10s | %s' % szemely)

legfiatalabb = min(szemely_lista, key = lambda szemely: szemely[1])
legidosebb = max(szemely_lista, key = lambda szemely: szemely[1])
kulonbseg = (legidosebb[1] - legfiatalabb[1]).days

print('A legfiatalabb', legfiatalabb[0], 'és legidősebb', legidosebb[0], 'közt', kulonbseg, 'nap (kábé', round(kulonbseg / 365.25, 2), 'év) a korkülönbség')
Módosítva: 1 éve
0