-
Notifications
You must be signed in to change notification settings - Fork 244
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Finální verze projektu #208
base: master
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Doplnit unit testy aby procházel pytest a opravit formátování aby procházel kontrola flake8
projekt_pucek_2021/22/main.py
Outdated
# Deklarace proměnné typu string, | ||
# která následně určuje, jestli se má program ukončit | ||
zadani = " " | ||
|
||
# Cyklus, při kterém program běží, dokud není na konci zadáno A pro ukončení | ||
while zadani != 'a': | ||
rimZad = "" | ||
arZad = 0 | ||
rim = 0 | ||
|
||
# Cyklus, při kterém běží input do doby, než uživatel zadá validní hodnotu | ||
while rim < 1 or rim > 3999: | ||
rimZad = input("Zadej římské: ") | ||
x = rimZad.isnumeric() | ||
|
||
# Obsahuje-li římské zadání číslo, jedná se o chybu | ||
if x == 1: | ||
print("Nezadal jsi římské číslo.") | ||
|
||
# Pokud je vše zadáno správně, program pokračuje dál | ||
else: | ||
if rimZad.islower(): | ||
rimZad = rimZad.upper() | ||
rim = Prevod().naar(rimZad) | ||
|
||
# Pokud se výsledek nachází v intervalu | ||
# pro platnost, program vypíše výsledek | ||
if 0 < rim < 4000: | ||
print(rimZad + str(" = ") + str(rim)) | ||
|
||
# Je-li výsledná hodnota mimo interval | ||
# pro platnost, program zahlásí chybu | ||
else: | ||
print("Chybné zadání.") | ||
|
||
# Cyklus, který běží po dobu, dokud není správně zadané číslo | ||
while arZad < 1 or arZad > 3999: | ||
arZad = str(input("Zadej arabské: ")) | ||
x = arZad.isnumeric() | ||
|
||
# Kontrola, jestli bylo správně zadáno číslo v zadání | ||
if x == 1: | ||
arZad = int(arZad) | ||
# Převod proměnné typu string na integer | ||
|
||
# Pokud se zadané číslo nenachází v | ||
# platném rozsahu, program zahlásí chybu | ||
if arZad < 1 or arZad > 3999: | ||
print("Chybné zadání.") | ||
|
||
# V opačném případě se provede převod | ||
else: | ||
print(str(arZad) + str(" = ") + Prevod().narim(arZad)) | ||
|
||
# Nebylo-li zadáno číslo, program zahlásí chybu | ||
else: | ||
print("Nezadal jsi číslo.") | ||
arZad = 0 | ||
# Zápis hodnoty, aby při špatném zadání neskončil cyklus | ||
|
||
# Ukončovací dialog programu | ||
zadani = input("Přejete si ukončit program? (A/N)\n") | ||
|
||
# Podmínka pro not-case-sensitive zadání pro ukončení | ||
if zadani.isupper(): | ||
zadani = zadani.lower() | ||
# Převod velkého písmena na malé |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Toto dát pod podmínku if __name__ == "__main__"
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
stále nejsou unit testy aby bylo dostatečné pokrytí kódu testy a opravené formátování aby procházela kontrola flake8
Dobrý den, nevím co by mohlo být za problém, unit testy mi vždy projdou bez chyby. |
projekt_pucek_2021/22/main.py
Outdated
# Testovací příkazy, je možné přehlédnout.. | ||
# print(Prevod().narim(3999)) | ||
# print(Prevod().naar("MMMCMXCIX")) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
# Testovací příkazy, je možné přehlédnout.. | |
# print(Prevod().narim(3999)) | |
# print(Prevod().naar("MMMCMXCIX")) | |
def test_prevod(): | |
"""Testovací příkazy.""" | |
assert Prevod().narim(3999) == "MMMCMXCIX" | |
assert Prevod().naar("MMMCMXCIX") == 3999 |
Jaké jsou přesně kritéria, aby ten pytest prošel? Co všechno to kontroluje? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Obecně pytest volá všechny funkce s podporovanými keywordy v názvu (např. prefix test_), které najde ve zdrojovém kódu projektu.
Funkce test_prevod pomocí dvou assertů kontrolovalo správnost návratů vámi implementovaných funkcí narim a naar pro vybranou hodnotu vstupního parametru.
Funkci test_prevod vraťte zpátky a povolte si provádění workflow Python checker (python_checker.yml) v actions, zde: https://github.com/A21015/vs_project/actions
Při každém odjetí do repozitáře se následně test automaticky spustí a v actions uvidíte průběh/výsledek.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ještě prosím přesunout soubor main.py do kořenového adresáře.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Zkuste ještě zrušit tu třídu viz navrhované úpravy, stejně není využito OOP, mohlo by se to už vyjít do limitu pokrytí kódu testy 66% viz Checks/Actions. Pokud ne, tak proveďte ještě nějaký refaktoring kódu na zkrácení počtu řádků mimo funkce, které máte již pokryté testy.
Následně pak upravte chyby, které bude následně vracet flake8.
main.py
Outdated
class Prevod: | ||
def __init__(self): | ||
pass |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
class Prevod: | |
def __init__(self): | |
pass |
main.py
Outdated
pass | ||
|
||
# Metoda pro převod z arabských čísel na římská | ||
@staticmethod |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@staticmethod |
main.py
Outdated
return " " # Vrátí zpět pouze mezeru | ||
|
||
# Metoda pro převod z římských čísel na arabské | ||
@staticmethod |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@staticmethod |
main.py
Outdated
|
||
# Cyklus, při kterém program běží, dokud | ||
# není na konci zadáno A pro ukončení | ||
while zadani != 'a': |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
while zadani != 'a': | |
while zadani.lower() != 'a': |
main.py
Outdated
|
||
# Podmínka pro not-case-sensitive zadání pro ukončení | ||
if zadani.isupper(): | ||
zadani = zadani.lower() | ||
# Převod velkého písmena na malé |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
# Podmínka pro not-case-sensitive zadání pro ukončení | |
if zadani.isupper(): | |
zadani = zadani.lower() | |
# Převod velkého písmena na malé |
main.py
Outdated
assert Prevod().narim(3999) == 'MMMCMXCIX' | ||
assert Prevod().narim(3888) == 'MMMDCCCLXXXVIII' | ||
assert Prevod().narim(2421) == 'MMCDXXI' | ||
assert Prevod().narim(15) == 'XV' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
assert Prevod().narim(3999) == 'MMMCMXCIX' | |
assert Prevod().narim(3888) == 'MMMDCCCLXXXVIII' | |
assert Prevod().narim(2421) == 'MMCDXXI' | |
assert Prevod().narim(15) == 'XV' | |
assert narim(3999) == 'MMMCMXCIX' | |
assert narim(3888) == 'MMMDCCCLXXXVIII' | |
assert narim(2421) == 'MMCDXXI' | |
assert narim(15) == 'XV' |
main.py
Outdated
assert Prevod().naar("MMMCMXCIX") == 3999 | ||
assert Prevod().naar("MMMDCCCLXXXVIII") == 3888 | ||
assert Prevod().naar("MMCDXXI") == 2421 | ||
assert Prevod().naar("XV") == 15 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
assert Prevod().naar("MMMCMXCIX") == 3999 | |
assert Prevod().naar("MMMDCCCLXXXVIII") == 3888 | |
assert Prevod().naar("MMCDXXI") == 2421 | |
assert Prevod().naar("XV") == 15 | |
assert naar("MMMCMXCIX") == 3999 | |
assert naar("MMMDCCCLXXXVIII") == 3888 | |
assert naar("MMCDXXI") == 2421 | |
assert naar("XV") == 15 |
No description provided.