Jump to content

Es un mans pitons :)


Smii
 Share

Recommended Posts

Šis ir mans Eureka bļāviens šeit par savām pirmajām patstāvīgi sarakstītajām koda rindiņām. Neesiet skarbi, man tas nenācās viegli – te nebija kāda : zīme, te atkal atstarpe piemirsusies.

 

Sapnis iemācīties programmēt man ir kopš kāda 10 gadu vecuma, kad kasešu magnetofona trūkuma dēļ tika dzenāts Basic pa krievu BK 0010 (vai taml.)

 

Tad nu lūk, pēc divdesmit četriem gadiem es esmu nolēmis pabeigt iesākto un iemācīties to lietu. Pajautāju draugam ar ko sākt - viņš teica Python ūber alles.

 

Tā nu arī sāku, pirms kāda mēneša. Šeit

 

Un beidzot nolēmu kaut ko pats uzrakstīt.

#Programma kas parbauda vai epasts ir derigs 

epasts = raw_input("Kads ir tavs epasts? ")
def parbaude(epasts):
	et_skaits = 0
	punktu_skaits = 0	
	for et_zime in epasts:
		if et_zime == "@":
			et_skaits = et_skaits + 1
	if et_skaits > 1:
		derigums = False
		return False
	elif et_skaits < 1:
		derigums = False
		return False
	else:
		derigums = True
	if derigums == True:
		for punkts in epasts:
			if punkts == ".":
				punktu_skaits = punktu_skaits + 1
		if punktu_skaits < 1:
			derigums = False
			return False
	if derigums == True:
		if len(epasts) < 6:
			derigums = False
			return False
		else:
		  return True
if parbaude(epasts) == True:
	print "Paldies, jusu epasts %s ir pienemts." % (epasts)
else:
	print "Epasts nav derigs."

Viss. Esmu runājis :)

P.S. Sieva kaut kā nesaprot, par ko es visu dienu priecājos. 

Labots - Smii
Link to comment
Share on other sites

osscar

nu malacis :D

 

es BK laikos pat spēlītēs programmēju beisikā, bet kā man teica viens IT guru - cilvēks kurš māk beisiku nekad nebūs nopietns programmētājs -- un viņam ir taisnība. Pēc tam mācījos RTU C++...nu tas bija kā cita pasaule, bet to tā pa īstam neiebraucu jo visam apakšā beisiks ar savu primitīvismu :D

Link to comment
Share on other sites

Forši, bet Tava e-pasta validācija ir ļoti nepilnīga, piemēram nav pārbaude uz speciālajiem simboliem un atstarpēm, utt :) 

Kaut kad sen uzrakstīju T-SQL funkciju, kas validē epastu, sanāca diezgan gara. Labāk lietot reg-ex.

Link to comment
Share on other sites

Vai tas bija domāts, ka ja grib kļūt par nopietnu programmētāju, beisiku nedrīkst mācīties, jo tas sačakarē visu domāšanu? Man Beisiks patika. Nu tāds vienkāršais, bez visādiem navarotiem, tāds, kā bija "Bekām". Ienāca prātā doma -  interesanti, vai tagad tāds ir kaut kur pieejams? Labprāt ar tādu paspēlētos.

Link to comment
Share on other sites

osscar

ir ir - uz windozes zem dosa darbināju. qbasic vai kaut kā tā. Jā sačakarējot pareizo domāšanu "bez variantiem" :-)

Link to comment
Share on other sites

Paldies! Pameklēšu. Interesanti, vai assemblers arī sačakarē domāšanu? Jo beisiks un assemmblers ir divas lietas, kas man tā īsti patīk, pārējās ar kurām esmu niekojies Delfi7, Java - kaut kā jau pieciest var, bet tām pirmajām pavisam cits smeķis.

Link to comment
Share on other sites

binary

es BK laikos pat spēlītēs programmēju beisikā, bet kā man teica viens IT guru - cilvēks kurš māk beisiku nekad nebūs nopietns programmētājs -- un viņam ir taisnība.

 

Kas tad skaitās "nopietns programmētājs"? Tāds, kurš prot bīdīt klucīšus un ne vella nejēdz no vēstures? :crazy:

 

Ja par ASM, tad man kaut kā baigi pietrūkst, ka bērnībā nav sanācis kārtīgi pakost ASM… Tiešām pietrūkst. Un nevis psiholoģiski pietrūkst, bet tīri praktiski :D

  • Patīk 1
Link to comment
Share on other sites

androidss

nākamais solis varētu būt uztaisīt to pašu, bet izmantojot regex

Link to comment
Share on other sites

Mhh, mana pirmā valoda bija QBasic. Laikam jau tad esmu neatgriezeniski sabojāts. :)

 

Mans viedoklis - sāc ar ko gribi, programmēt var iemācīties ar visu. Protams, ir dažas valodas, ar kuru tas būs grūtāk, vai var iemācīties kaut kādus sliktus ieradumus - bet, beigu beigās, arī tas viss ir pupu mizas. :)

  • Patīk 2
Link to comment
Share on other sites

HIGH-Zen

Forši, bet Tava e-pasta validācija ir ļoti nepilnīga, piemēram nav pārbaude uz speciālajiem simboliem un atstarpēm, utt :) Kaut kad sen uzrakstīju T-SQL funkciju, kas validē epastu, sanāca diezgan gara. Labāk lietot reg-ex.

 

Nu tak cilvēks tikko sācis un jau ar pirmo helloworldu viņu grib iedzīt analīzes paralīzē ar visādām validācijām un regexiem.

Priekš pirmajiem soļiem ir ļoti labi.

 

Ieteiktu nesteidzīgi sākt lasīt kādas grāmatas, nu tur "A Byte of Python" vai ko tamlīdzīgu. Un paskatīties arī kaut ko par PySide vai wxPython, startam pietiks ar kādu tutorial.

Varētu jau ieteikt arī paša Python tutorial iekš viņu help-a, bet tas milzīgs un dokumentācija viņiem ir nožēlojama. Labāk grāmata.

 

Link to comment
Share on other sites

(labots)

Ok, uz planšetnieka nesanāks precīzi nocitēt, bet aikoN uzkāpa uz dvēseles ar speciālajiem simboliem; un viņam ir taisnība. Tas man nedeva mieru visu vakaru, kamēr izdomāju.

def burti(epasts):
        pareizie_burti = ["a","b","c","d","e","f","g","h","i","j","k","l",
"m","n","o","p","r","s","t","u","v","z","q","x","w","_",".","@","y","-",
"1","2","3","4","5","6","7","8","9","0"]
        epasts = epasts.lower()
        garums = len(epasts)
        
        for burts_epasta in epasts:
            for burts_salidzinasanai in pareizie_burti:
                if burts_epasta == burts_salidzinasanai:
                    garums -= 1 #Tiek izslegti pareizie burti
        if garums == 0: #Jabut izslegtiem visiem burtiem. Ja kads palicis tas ir neatlauts jo nebija liste.
            return True
        else:
            return False

Šis ir papildinājums aukšējam kodamPar xxx@yyy.zz validāciju – tas šobrīd ir par sarežģītu.

Labots - Smii
Link to comment
Share on other sites

Mana Otrajā kodā epasta strings ir jāpārvērš mazajos burtis, tas piemirsās

Ieleja, paldies par optimizēšanu :)

Link to comment
Share on other sites

HIGH-Zen

Par xxx@yyy.zz validāciju – tas šobrīd ir par sarežģītu.

 

Pagaidi pāris dienas un būta frīki biedri tev visu nooptimizēs un izlaizīs tavu helloworldu tā, ka nākotnē varēsi droši to laist prodakšanā. :sarkasms:

 

ieleja

Vēl nav viss liekais atmests

 

if parbaude(epasts) == True:

    print u"paldies, jūsu e-pasts {0} ir pieņemts".format(epasts)

else:

    print u"e-pasts nav derīgs"

Link to comment
Share on other sites

Izdomāju kā arī to xxx@yyy.zz noteikt. Jānosaka @ vieta epasta un tai jābūt lielākai par 0,jānosaka pēdējā punkta vieta un tai jābūt lielākai par @ vietu. Nu un pēdējam punktam jābūt vismaz 2 vietas no beigām.

Izdomāju kā arī to xxx@yyy.zz noteikt. Jānosaka @ vieta epasta un tai jābūt lielākai par 0,jānosaka pēdējā punkta vieta un tai jābūt lielākai par @ vietu. Nu un pēdējam punktam jābūt vismaz 2 vietas no beigām.

Link to comment
Share on other sites

Smii, malacis, papildus vēl vari uzlikt, lai pārbauda vai domēnim ieraksti mx reāli eksistē, lai nebūtu tā, ka pēterītis norāda jebkādu hostu un sūta spamu (dnspython modulis + http://stackoverflow.com/questions/4336849/mx-record-lookup-and-check):)

Pats arī lēnām mācos pitonu un uz doto momentu ir uztaisīts:

a) apis, kas pieņem json postu un ģenerē xls ievērojot formatēšanu (šūnu apvienošanu ieskaitot),

b) skripts, kas regulāri lasa teksta failus un saliek datus iekš db (līdzīgs skripts uztaisīts arī uz bash)

 

Bet bļīn, ar to xls drukāšanu ***** ne pa jokam un domāju, ka šodien vēl to mocīšu augšā :D

 

p.s. topika nosaukums gan tāds divdomīgs  :TBS:

Link to comment
Share on other sites

(labots)
Sapnis iemācīties programmēt man ir kopš kāda 10 gadu vecuma, kad kasešu magnetofona trūkuma dēļ tika dzenāts Basic pa krievu BK 0010 (vai taml.) Tad nu lūk, pēc divdesmit četriem gadiem es esmu nolēmis pabeigt iesākto un iemācīties to lietu. Pajautāju draugam ar ko sākt - viņš teica Python ūber alles.

 

Tā turpināt!

 

 

cilvēks kurš māk beisiku nekad nebūs nopietns programmētājs

 

bulš*ts.

Ja cilvēks taisa vajadzīgu softu, ko citi cilvēki ilgstoši izmanto un priecājas, tad autors ir nopietns programmētājs. Izmantotajai valodai nav nozīmes.

 

P.S. Tikko iedomājos, ka excelī makrosus var rakstīt tikai tajā pašā nīstajā beisikā, Ko nu?

Labots - VIL
Link to comment
Share on other sites

te būs xxx@zzz.yy pārbaude

def sintakse(epasts):
        n = 0 # @ skaititajs
        p = 0 # punktu skaititajs
        et_vieta = [] # @ novietojuma liste
        punkta_vietas = [] # . novietojumu liste
        garums = len(epasts) # teoretiski var nedefinet
        
        for et in epasts:
            n += 1
            if et == "@":
                et_vieta.append(n)
        
        for dot in epasts:
            p += 1
            if dot == ".":
                punkta_vietas.append(p)
        
    #parbaudam vai:
    #   et nav aiz pedeja punkta
    #   et nav pirma zime
    #   pedejais punkts ir vismaz divas vietas pirms beigam
    #Siem visiem jabut ka True
    
        if max(punkta_vietas) > min(et_vieta) and min(et_vieta) > 1 and max(punkta_vietas) <= garums - 2:
            return True
        else:
            return False

Saliekot šos visus trīs gabalus kopā sanāk itin korekta epasta formāta pārbaude :)

Protams, ka to visu var saoptimizēt vienā funkcijā, tomēr man tas vairāk šobrīd ir elegants galvas mežģis algoritmu loģikā un labs praktiskais darbs lai atkārtotu vienkāršākās funkcijas, listes un to visu for / if pasākumu.

 

Kāpēc tieši epasta pārbaude? Tādēļ, ka mani vienmēr ir interesējis algoritms, kā tiek pārbaudīts epasts. Šoreiz offline režīmā :)

Link to comment
Share on other sites

 

 

un Excel makrosi pēc definīcijas ir kaut kāds "state of the art"? manuprāt tieši otrādi

Tieši tā. Katrs trešais exceļa lietotājs prot rakstīt kaut kādus makrosus.

Vai līdz ar šo prasmi tiek slēgtas durvis un nopietno cilvēku pasauli.

Link to comment
Share on other sites

binary

 

 

Ja cilvēks taisa vajadzīgu softu, ko citi cilvēki ilgstoši izmanto un priecājas, tad autors ir nopietns programmētājs. Izmantotajai valodai nav nozīmes.

 

 

Vai līdz ar šo prasmi tiek slēgtas durvis un nopietno cilvēku pasauli.

Viena lieta - nopietns cilvēks. Pavisam cita - nopietns programmētājs. Lai cilvēku varētu dēvēt par labu, nopietnu programmētāju, nepietiek ar 1 "vajadzīgu softu". Tāds softs var būt vienkārši veiksmīga haļava - cilvēks gluži vienkārši pareizajā brīdī paveicis pareizo lietu. Vēl jo vairāk, ja tas ir kaut kāds "nišas produkts", kur cilvēks sabakstījis simtrindīti ar kaudzi memory leaku, kuri konkrētā cilvēku lokā nesagādā problēmas. Ja tādi "veiksmīgi" softi atkārtojas vēl un vēl, un vēl, tad jā, tad var sākt runāt par nopietnu programmētāju. Vai vismaz par veiksmīgu kaut kādas nozares entuziastu ar kaut kādām loģiskās domāšanas ievirzēm.

Link to comment
Share on other sites

nevertell

Pitonā taču ir tik jaukas iebūvētās funkcijas, piemēram split(), filter un visas citas iebūvētās stringu funkcijas.

Link to comment
Share on other sites

Raimonds1

Nezinu, vai būs par tēmu - par darbu dalīšanu programmēšanā - kantoros, kas izstrādā programmas un sadarbībā starp pasūtītāju un programmetāju.

Cik būtiski ir, iepazīstot valodas pamatus, iemācīties rakstīt labas uzdevumus programmētājam, lai uzreiz ir redzams, ko vajag sasniegt ar programmu.

Link to comment
Share on other sites

(labots)

nevertell, skaidrs ka ir daudzas funkcijas, par kurām es vēl pagaidām nezinu, kuras to visu izdara 1 rindiņā. Es arī neloju ilūzijas par sava koda unikalitāti :D

 

Piemēram, man tikko pieleca, ka visu to pirmo koda gabalu var aizvietot ar diviem apgalvojumiem koda trašajā daļā


    if len(et_vieta) == 1 and \
        len(punkta_vietas) >=1  # ievietots sintakses pārbaudē nočeko arī punktu un @ zīmju skaitu. 

Bet pirmkārt es izbaudu šo domāšanas procesu un otrkārt tas nostiprina manas zināšanas, konkrētās tikko apgūtās tēmās par booleāņiem, listiem, pašdefinētām funkcijām un vēl pāris lietām, kuras man latviski būs grūti formulēt. Nu tur for, if, else – kā tas viss strādā. Jo viens ir bakstīt tutoriālī ko tev liek, pilnīgi cits, mēģināt pašam ko izdomāt un uzkodēt no nulles, iztiekot vien ar to, kas pierakstīts kladītē.

 

Vairāk es to epasta padarīšanu nemocīšu, apsolos :) epasts_v3.py kompī ir noseivots, lai stāv. Kādreiz ierāmēšu un pielikšu pie sienas.

Labots - Smii
  • Patīk 1
Link to comment
Share on other sites

nevertell

Es jau nemēģinu tevi atturēt no mācišanās, un jā, izprast forelseifus ir labi.

Ja negribi, lai kāds kautko priekšā saka un gribi mācīties - checkio.com, kā reiz priekš pitonistiem.

Link to comment
Share on other sites

MarisO

 

 

Kādreiz ierāmēšu un pielikšu pie sienas.
 

 

tur nevar divus @ simbolus iebarot ?

Link to comment
Share on other sites

Nevar

Nevertell, bez priekšā teikšanas jau neiztikt. Tiesa gan pirmkārt jau priekšā pasaka google, visbiežāk stackoverflow topiku veidolā.

Link to comment
Share on other sites

binary

Nākamais uzdevums - apgriezt tekstā otrādi visus vārdus…

siamakāN smuvedzu - tzeirgpa ātsket idārto susiv …sudrāv

 

Nu tas tā, ja pašam ideju trūkst ;)

Link to comment
Share on other sites

(labots)
" ".join(x[::-1] for x in s.split(" "))

:)

 

Ja trūkst ideju, tad var iet uz https://projecteuler.net/ un risināt visus uzdevumus pēc kārtas. Labs veids kā iemācīties jaunu valodu (ja uzdevumu jau ir risināti, bet citā valodā).

Labots - bubu
Link to comment
Share on other sites

Izveido kontu, vai pieraksties esošajā, lai komentētu

Jums ir jābūt šī foruma biedram, lai varētu komentēt tēmas

Izveidot jaunu kontu

Piereģistrējies un izveido jaunu kontu, tas būs viegli!

Reģistrēt jaunu kontu

Pierakstīties

Jums jau ir konts? Pierakstieties tajā šeit!

Pierakstīties tagad!
 Share

×
×
  • Izveidot jaunu...