Exemplo n.º 1
0
def kysy_liukuluku(kysymys, alaraja, ylaraja):
    """Kysyy käyttäjä liukuluvun tai kokonaisluvun ja tarkistaa syötteen oikean tietotyypin ja suuruuden

    Args:
        kysymys (str): Käyttäjälle esitettävä kysymys
        alaraja (float): pienin sallittu arvo
        ylaraja (float): suurin sallittu arvo

    Returns:
        float: käyttäjän syöttämä arvo liukulukuna
    """
    # Kysytään käyttäjältä tietoa, kunnes saadaan järkevä arvo
    luku = 0
    tapahtui_virhe = True

    while tapahtui_virhe == True:

        # Esitetään parametrina annettu kysymys ja tallennetaan vastaus (merkkijono) muuttujaan
        vastaus_str = input(kysymys + ' ')

        # Tarkistetaan syötteen järkevyys, virhetiedot ja arvo tallennetaan listamuuttujaan tulokset
        tulokset = sanity2.liukuluvuksi(vastaus_str)

        # Katsotaan onko virhekoodi 0, ja tallennetaan arvo muuttujaan vastaus
        if tulokset[0] == 0:
            vastaus = tulokset[2]

            # Tehdään raja-arvotarkistus, virhetiedot muuttujaan tarkistusviesti
            tarkistusviesti = sanity2.rajatarkistus(vastaus, alaraja, ylaraja)

            # Katsotaan onko arvo sallittujen rajojen sisällä tutkimalla virhekoodia
            if tarkistusviesti[0] == 0:
                tapahtui_virhe = False
                luku = vastaus

            else:
                # Jos raja-arvotarkistuksen virhekoodi ei ole 0, tulostetaan virheilmoitus
                print(tarkistusviesti[1])

        # Jos liukulukutarkistuksen virhekoodi ei ole 0, tulostetaan virheilmoitus
        else:
            print(tulokset[1])

    return luku
Exemplo n.º 2
0
def kysy_liukuluku(kysymys, alaraja, ylaraja):
    """Kysyy käyttäjältä liukuluvun tai kokonaisluvun ja tarkistaa syötteen oikean tietotyypin ja suuruuden

    Args:
        kysymys (string): Käyttäjälle esitettävä kysymys
        alaraja (float): Pienin sallittu arvo
        ylaraja (float): Suurin sallittu arvo

    Returns:
        float: Käyttäjän syöttämä arvo liukulukuna
    """
    # Kysytään käyttäjältä tietoa kunnes saadaan järkevä arvo
    luku = 0
    tapahtui_virhe = True

    while tapahtui_virhe == True:
        vastaus_str = input(kysymys)
        tulokset = sanity2.liukuluvuksi(vastaus_str)

        # Katsotaan onko virhekoodi 0, ja tallennetaan arvo muuttujaan paino
        if tulokset[0] == 0:
            vastaus = tulokset[2]
            tarkistettu_vastaus = sanity2.rajatarkistus(
                vastaus, alaraja, ylaraja)

            # Katsotaan onko arvo sallittujen rajojen sisällä tutkimalla virhekoodia
            if tarkistettu_vastaus[0] == 0:
                tapahtui_virhe = False
                luku = vastaus

            else:
                # Tulostetaan virheilmoitus
                print(tarkistettu_vastaus[1])

        # Jos virhekoodi ei ole 0, tulostetaan virheilmoitus
        else:
            print(tulokset[1])

    return luku
Exemplo n.º 3
0
def test_liukuluvuksi_teksti():
    assert sanity2.liukuluvuksi('sataviisi') == [
        2,
        'Syötteessä ylimäärisiä merkkejä: vain numerot ja desimaalipiste on sallittu',
        0
    ]
Exemplo n.º 4
0
def test_liukuluvuksi_teksti_lopussa():
    assert sanity2.liukuluvuksi('125.5 kg') == [
        4,
        'Desimaalierottimen jälkeen ylimääräisiä merkkejä: vain numerot ja desimaalipiste on sallittu',
        0
    ]
Exemplo n.º 5
0
def test_liukuluvuksi_teksti_ennen():
    assert sanity2.liukuluvuksi('paino 125.5') == [
        3,
        'Ennen desimaalierotinta ylimääräisiä merkkejä: vain numerot ja desimaalipiste on sallittu',
        0
    ]
Exemplo n.º 6
0
def test_liukuluvuksi_monta_pistetta():
    assert sanity2.liukuluvuksi('12.5.5') == [
        1, 'Syöte sisältää useita erottimia. Vain yksi arvo on sallittu', 0
    ]
Exemplo n.º 7
0
def test_liukuluvuksi_pilkku():
    assert sanity2.liukuluvuksi('125,5') == [0, 'Syöte OK', 125.5]
Exemplo n.º 8
0
def test_liukuluvuksi_ok():
    assert sanity2.liukuluvuksi('125.5') == [0, 'Syöte OK', 125.5]
Exemplo n.º 9
0
def test_liukuluku_kirjaimia_alussa():
    assert sanity2.liukuluvuksi('paino 15.0') == [
        3,
        'Ennen desimaalierotinta ylimääräisiä merkkejä: vain numerot ja desimaalipiste on sallittu',
        0
    ]
Exemplo n.º 10
0
def test_liukuluku_monta_pilkkua():
    assert sanity2.liukuluvuksi('15,0,7') == [
        1, 'Syöte sisältää useita erottimia. Vain yksi arvo on sallittu', 0
    ]
Exemplo n.º 11
0
def test_liukuluku_liukuluku_pilkku():
    assert sanity2.liukuluvuksi('15,0') == [0, 'Syöte OK', 15.0]
Exemplo n.º 12
0
def test_liukuluku_kokoaisluku():
    assert sanity2.liukuluvuksi('15') == [0, 'Syöte OK', 15.0]
Exemplo n.º 13
0
def test_liukuluku_liukuluku():
    assert sanity2.liukuluvuksi('15.0.7') == [1, 'Syöte sisältää useita erottimia. Vain yksi arvo on sallittu', 0]