tereziev / python-012021

0 stars 0 forks source link

Ukoly 2. sada #2

Open zabza86 opened 3 years ago

zabza86 commented 3 years ago

Ahojky @tereziev :) Dekuji za odevzdani dalsi varky ukolu :)

Ukol 6: Skvely kod, ale ma jeden vroubek, i kdyz je stat nalezeny, tak napise jako posledni hodnotu neplatny region, da se to obejit pres True/False. Pokud se pouzije nikdy nekoncici radek, neboli ending (end=" "), tak je potreba to nekdy zalomit a dela se to prazdnym printem (print()) coz je jako enter...

    stat_nenalezen = True
    for stat in staty:
        if stat["region"] == dotaz:
            stat_nenalezen = False
            print(stat['name'], end=", ")
    print()
    # if dotaz != stat["region"]:
    if stat_nenalezen:
        print("Neplatný region")

Ukol 7: Bez komentare

Ukol 8: Bohuzel nemohu zatim uznat, jelikot nesplnuje zadani: Tvůj program bude obsahovat dvě funkce!

Input funkce je defaultne stringova, pokud chceme int musime ji pretypovat:

# cislo = str(input("Zadej telefonní číslo: "))
cislo = input("Zadej telefonní číslo: ")

Zjednodusenni:

# if len(cislo) == 9:
# varianta A
# if len(cislo) == 9 or len(cislo) == 13:
# Varianta B
if len(cislo) in [9, 13]:
    # print(bool(cislo))
    return True
# elif len(cislo) == 13:
#     print(bool(cislo))
else:
    print("Číslo není platné.")
    # exit()

Python rozeznava dva typy deleni, 1. celociselny (vysledek v intu) // a 2. deleni se zbytkem (vysledek float) /

# cena = int(math.ceil(len(zprava)/180) * 3)
cena = (len(zprava)//180+1) * 3
zabza86 commented 3 years ago

Ahojky @tereziev :)

Ukol 9: Byl trosku zaludny a docela dobre si se s nim vyporadala :) Vzala jsem tvuj kod a trosku poprehazela a zjednodusila:

# soucet_znamek = {}
# for student in vysledky:
#     jmeno = student["Jméno"]
#     znamky = student.pop("Jméno")
#     znamky = list(student.values())
#     # prumer = sum(znamky) / len(znamky)
#     # print(f"{jmeno} má {prumer}.")
#     if jmeno in soucet_znamek:
#         soucet_znamek[jmeno] += znamky
#     else:
#         soucet_znamek[jmeno] = znamky

"""
print(soucet_znamek)
for jmeno, znamky in soucet_znamek.items():
    print(sum(znamky)/len(znamky))
"""

def ohodnot_studenta(soucet_znamek):
#     prumer = sum(znamky) / len(znamky)
    suma = sum(soucet_znamek.values())
    prumer = round(suma / len(soucet_znamek), 1)

#     if 5 not in znamky:
#         if 3 not in znamky:
#             if prumer <= 1.5:
#                 hodnoceni = 'Prospěl/a s vyznamenáním'
#             else:
#                 hodnoceni = 'Prospěl/a'
#         else:
#             hodnoceni = 'Prospěl/a'
#     else:
#         hodnoceni = 'Neprospěl/a'
#     return hodnoceni

    if 5 in soucet_znamek.values():
        return 'Neprospěl/a'

    if prumer <= 1.5 and 3 not in soucet_znamek.values():
        return 'Prospěl/a s vyznamenáním'
    return 'Prospěl/a'

# for jmeno, znamky in soucet_znamek.items():
for student in vysledky:
    jmeno = student.pop('Jméno')
    print(f"{jmeno}: {ohodnot_studenta(student)}")
zabza86 commented 3 years ago

Ukol 10: Pekne sis zavarila, ze jsi dala funkce i dovnitr, chvili mi trvalo, nez jsem to dala dohromady :) :) Cele to bylo mysleno na jednu funkci, ve ktere je spousta ifu pro kazdy parametr:

# total = 0

def rating(industry, turn, country, conference=False, newsletter=False):
    sance = ""
    total = 0

    # def industry(odvetvi):
    def industry_funkce(odvetvi, total):
        if odvetvi == "automotive":
            total = 3
        elif odvetvi == "retail":
            total = 2
        # else:
        #     total += 0
        return total
    total += industry_funkce(industry, total)

    # def turn(obrat):
    def turn_funkce(obrat, total):
        if obrat <= 10000000:
            # total += 0
            total = 1
        elif (obrat > 10000000) and (obrat < 1000000000) :
            total = 3
        # else:
        #     total += 0
        return total
    total += turn_funkce(turn, total)

    # def country(zeme):
    def country_funkce(zeme, total):
        # if zeme == "Česká republika" or "Slovensko":
        if zeme in ["Česká republika", "Slovensko"]:
            total = 2
        # elif zeme == "Německo" or "Francie":
        elif zeme == "Německo" or zeme == "Francie":
            total = 1
        # else:
        #     total += 0
        return total
    total += country_funkce(country, total)

    if conference:
        total += 1

    if newsletter:
        total += 1

    if total < 5:
        sance = "šance na záskání je malá"
    # elif total >= 5:
    elif 5 < total <= 8:
        sance = "šance na záskání je střední"
    # elif total >= 9:
    else:
        sance= "šance na záskání je velká"
    return sance

1, Pokud pouzijes funkci, je treba ji predat parametr a nejlepe ji zavolat.

  1. Pokud pricitas 0, neni treba to psat
  2. Neni dobre pojmenovavat funkce stejnym nazvem jako promennou, pak nevi co je co
  3. Or neo and je vzdy potreba rozepsat, pokud to je v tvem stylu, tak nevi s cim porovnava slovensko a hodi tam vsechno co mu prijde pod ruku, mas tam dve verze jak se to sparvne pise
  4. Ohledne total pricitani, je treba ti pricitat mimmo funkci a jen si vracet cislo

Jednodussi verze tveho kodu:

def rating(odvetvi, obrat, zeme, conference=False, newsletter=False):
    total = 0

    if odvetvi == "automotive":
        total += 3
    elif odvetvi == "retail":
        total += 2

    if obrat <= 10000000:
        total += 1
    elif (obrat > 10000000) and (obrat < 1000000000) :
        total += 3

    if zeme in ["Česká republika", "Slovensko"]:
        total += 2
    elif zeme in ["Německo", "Francie"]:
        total += 1

    if conference:
        total += 1

    if newsletter:
        total += 1

    if total < 5:
        return "šance na záskání je malá"
    elif 5 < total <= 8:
        return "šance na záskání je střední"
    return "šance na záskání je velká"