Taas olisin neuvoja kysellyt
Ohjelman pitäsi tuoda merkkijonot tiedostosta ja tutkia onko niissä van kirjaimia ja numeroita tai onko niissä myös muita merkkejä.
Ja tulostaa kyseisen merkkijonon perään teksti.
Esim.
nfjlm25nmi kelpaa salasanaksi.
dfh/((((kl ei kelpaa salasanaksi.
ohjelmani tuo merkkijonot mutta en osaa käyttää muokkausmetodia ja toki koodi voi olla myös täysin metsässä.
# -*- coding: cp1252 -*- merkkijono = open("merkkijonoja.txt","r") sisalto = merkkijono.readlines() for i in sisalto: str.isalnum(i) print(i, end = "") if sisalto == "True": print(i ,("kelpaa salasanaksi.")) else: print(i ,("sisältää virheellisiä merkkejä.")) merkkijono.close()
Mod. lisäsi kooditagit.
Minusta on huono idea kieltää erikoismerkit salasanasta, ne lisäisivät vain salasanan turvallisuutta.
Tutustu Pythonin säännöllisten lausekkeiden dokumentaatioon täällä.
Seuraavanlainen lauseke sallii numerot ja kirjaimet.
[a-zA-ZäöåÄÖÅ0-9]+
Itseäni ihmetyttää erittäin paljon kaikki saitit, jotka asettaa minkäänlaisia yläpään rajoituksia salasanoille.
Itse käytän yleensä tämän tyylisiä salasanoja: 14r0oo3DggDSd\ENJp'QwW
Usein tulee kuitenkin vastaan saitteja jotka antavat tuosta virheilmoituksen, kuten "salasanan maksimipituus on 8 merkkiä" (WTF??), "Salasanassa ei voi olla erikoismerkkejä". Hauskin on ollut "Salasana on liian helppo", kun saitin hieno vaikeuslaskuri sekosi jostain sopivasta merkkiyhdistelmästä.
Ja sitten mukavia ylläreitä joskus kun rekisteröityessä tuollainen 22 merkkinen salasana kelpaa mutta kun yrittää kirjautua sisään niin "salasana on liian pitkä, yritä uudelleen" ;D
Nykyinen koodi on kyllä erittäin pahasti metsässä. Mietihän nyt järkevästi, mitä tuossa tapahtuu. Silmukan alussa on ihan hyvä funktiokutsu, mutta siitä loppuun saakka koodi onkin ihan pielessä: ensimmäinen print-rivi on turha, kummatkin jälkimmäiset print-rivit sisältävät turhat sulut, if-lause tarkistaa jotain ihan outoa, ja else-rivikin on sisennetty virheellisesti for-silmukan tasolle.
Kun ilmeisesti näinkin suuren kokonaisuuden kuin yhden for-silmukan ja yhden if-lauseen hallitseminen samaan aikaan on ihan mahdotonta, tee ensin tarkistus yhdelle riville. Siis ota tiedoston lukeminen kokonaan pois ja laita alkuun vaikka vakiosalasana:
salasana = "p*l#¤%p**"
Kirjoita siis tuon perään nyt tarkistukseen tarvittava if-lause ja else-lohko. (Vihje: neljä riviä.) Vaihtele salasanaa niin, että näet, toimiiko tarkistus aina. Kun tarkistus toimii, laita koko tarkistus for-silmukan sisään niin, että for-silmukka käy läpi kaikki tiedoston rivit.
Kiitos ja terve taas. Tällä sain testauksen toimimaan,mutta kun yritän vääntää sitä silmukkaan jotain menee aina pieleen.
mutta yritetään vielä
salasana = "dksjjkj¤%gjn" if salasana.isalnum() == True: print(salasana,"ok") else: print(salasana,"ei käy")
Mod. lisäsi kooditagit.
Opettele nyt vihdoinkin käyttämään niitä kooditageja.
Silmukan tekemisen ei pitäisi olla kummoinen ihme. Voit tehdä senkin kahdessa vaiheessa: laita ensin tuon koodin alkuun taulukollinen salasanoja, ja vasta sen jälkeen yritä lisätä tiedoston lukeminen.
salasanat = ["abcd", "#%&/"]
Silmukoistakin on lukuisia esimerkkejä Python-oppaassa, jonka löydät opasalueelta.
Aihe on jo aika vanha, joten et voi enää vastata siihen.