Tapahtumat

Kun kirjaudut sisään näet tässä ilmoitukset sinua kiinnostavista asioista.

Kirjaudu sisään

Python ohjelmoinnin osaajat

Vierailija
11.06.2015 |

def testaa(testi):

    if (len(testi) < 5) or (testi.isdigit() == False) or (testi.isalpha() == False):
        return False
    else:
        return True

-----------------------------------

# python3.2 ohjelma.py 
Anna testattava sana:  Testi
Sana ei kelpaa.
Anna testattava sana:  234234
Sana ei kelpaa.
Anna testattava sana:  Testisana11234
Sana ei kelpaa.
Anna testattava sana:

Jää ikuiseen luuppiin koska antaa arvon False jokaiseen sanaan.

Kommentit (14)

Vierailija
1/14 |
11.06.2015 |
Näytä aiemmat lainaukset

 no toki koska  (testi.isdigit() == False) or (testi.isalpha() == False):

Vierailija
2/14 |
11.06.2015 |
Näytä aiemmat lainaukset

[quote author="Vierailija" time="11.06.2015 klo 16:38"]

 no toki koska  (testi.isdigit() == False) or (testi.isalpha() == False):

[/quote]"Tehtäväsi onkin luoda tähän päämoduuliin sopiva tarkastaja-moduuli. Tee moduuli, jossa on testaa-niminen funktio, joka vastaanottaa syötteen. Jos syöte on alle 5 merkkiä pitkä, sisältää pelkästään kirjaimia tai pelkästään numeroita, palauttaa ohjelma False. Muussa tapauksessa ohjelma palauttaa arvon True. Ohjelma lopetetaan kun käyttäjä antaa ensimmäisen sopivan syötteen. "

 

Eikös tuo ole oikein? Palauttaa Falsen jos pituus < 5 tai kirjaimet = False tai numerot = False

Sisältö jatkuu mainoksen alla
Sisältö jatkuu mainoksen alla
Vierailija
3/14 |
11.06.2015 |
Näytä aiemmat lainaukset

ei taida kelvata. En ole Pythonia koskaan koodannut, mutta veikkaanpa, että isDigit palauttaa falsen kun yksinkin kirjain on merkkijonossa ja sama isAlpha numeron kohdalla eli jos pitäisi kuitenkin hyväksyä kirjaimien ja numeroiden yhdistelmä niin tuo ei toimi. 

Vierailija
4/14 |
11.06.2015 |
Näytä aiemmat lainaukset

Ahaa tässä ketjussa on pelkkiä miehiä :-D

Vierailija
5/14 |
11.06.2015 |
Näytä aiemmat lainaukset

Anna testattava sana:  Testi
testi.isdigit() == False
Anna testattava sana:  234234
testi.isalpha() == False
Anna testattava sana:  Testisana11234

molemmat == False

Vierailija
6/14 |
11.06.2015 |
Näytä aiemmat lainaukset

[quote author="Vierailija" time="11.06.2015 klo 16:55"]

Anna testattava sana:  Testi
testi.isdigit() == False
Anna testattava sana:  234234
testi.isalpha() == False
Anna testattava sana:  Testisana11234

molemmat == False

[/quote]

ja Testisana11234 palauttaa truen, no sittenhän tuo toimii noin.

Sisältö jatkuu mainoksen alla
Vierailija
7/14 |
11.06.2015 |
Näytä aiemmat lainaukset

isdigit == true ja 

isalpha == true

falsejen sijaan

Vierailija
8/14 |
11.06.2015 |
Näytä aiemmat lainaukset

[quote author="Vierailija" time="11.06.2015 klo 16:51"]

ei taida kelvata. En ole Pythonia koskaan koodannut, mutta veikkaanpa, että isDigit palauttaa falsen kun yksinkin kirjain on merkkijonossa ja sama isAlpha numeron kohdalla eli jos pitäisi kuitenkin hyväksyä kirjaimien ja numeroiden yhdistelmä niin tuo ei toimi. 

[/quote]Tämä taitaa olla ongelma.

Lisäsin alkuun:

print(len(test))
print(test.isdigit() == False)
print(test.isalpha())

jotta näen mitä arvoja tulee:

# python3.2 ohjelma.py
Anna testattava sana:  Testi
5
True
True
Sana ei kelpaa.
Anna testattava sana:  234234
6
False
False
Sana ei kelpaa.
Anna testattava sana:  Testisana11234
14
True
False
Sana ei kelpaa.
Anna testattava sana:

Sisältö jatkuu mainoksen alla
Vierailija
9/14 |
11.06.2015 |
Näytä aiemmat lainaukset

[quote author="Vierailija" time="11.06.2015 klo 16:58"]

[quote author="Vierailija" time="11.06.2015 klo 16:55"]

Anna testattava sana:  Testi
testi.isdigit() == False
Anna testattava sana:  234234
testi.isalpha() == False
Anna testattava sana:  Testisana11234

molemmat == False

[/quote]

ja Testisana11234 palauttaa truen, no sittenhän tuo toimii noin.

[/quote]

isalpha() ja isdigit() toteutuvat vain jos merkkijo on pelkkiä numeroita tai kirjaimia.

Vierailija
10/14 |
11.06.2015 |
Näytä aiemmat lainaukset

korjaus:

def testaa(test):

    print(len(test))
    print(test.isdigit())
    print(test.isalpha())

    if (len(test) < 5) or (test.isalpha() == False) or (test.isdigit() == False):
        return False
    else:
        return True

# python3.2 ohjelma.py
Anna testattava sana:  Testi
5
False
True
Sana ei kelpaa.
Anna testattava sana:  234234
6
True
False
Sana ei kelpaa.
Anna testattava sana:  Testisana11234
14
False
False
Sana ei kelpaa.
Anna testattava sana:

Sisältö jatkuu mainoksen alla
Vierailija
11/14 |
11.06.2015 |
Näytä aiemmat lainaukset

Vaihdat nyt vaan tämän:

    if (len(test) < 5) or (test.isalpha() == False) or (test.isdigit() == False):

muotoon:

    if (len(test) < 5) or (test.isalpha() == True) or (test.isdigit() == True):

Kun molemmat ovat 'False', ei testisana ole pelkkiä numeroita tai kirjaimia.

Vierailija
12/14 |
11.06.2015 |
Näytä aiemmat lainaukset

Ohjelmoinnissa or-lause tarkoittaa, että jompikumpi tai molemmat pätee. Ei joko-tai.

Sisältö jatkuu mainoksen alla
Vierailija
13/14 |
11.06.2015 |
Näytä aiemmat lainaukset

Oikea tapa löytyi:

def testaa(test):

    if (len(test) > 4) and (test.isalpha() == False) and (test.isdigit() == False):
        return True
    else:
        return False

Vierailija
14/14 |
11.06.2015 |
Näytä aiemmat lainaukset

[quote author="Vierailija" time="11.06.2015 klo 17:14"]

Ohjelmoinnissa or-lause tarkoittaa, että jompikumpi tai molemmat pätee. Ei joko-tai.

[/quote]

Niin, ja kun kumpikaan ei päde, niin kaikki on hyvin. isalpha() on True, kun merkkijono on pelkkiä kirjaimia. isdigit() on True, kun merkkijono on pelkkiä numeroita. Kun kumpikaan ei ole True, on kyseessä halutunlainen merkkijono.

Kirjoita seuraavat numerot peräkkäin: neljä kolme yksi