Gjest Slettet+6132 Skrevet 26. mai 2013 Del Skrevet 26. mai 2013 (endret) import datetime mone = ['Januar','Februar','Mars','April','Mai','Juni','Juli','August','September','Oktober','November','Desmeber'] moneint = [1,2,3,4,5,6,7,8,9,10,11,12] def run(): x=0 ; sjekk=False ; month = datetime.datetime.now().month while True: if x == 12: break else: if sjekk == False: if moneint[x] == month: print mone[x] + " <-- " x=x+1 ; sjekk=True else: print mone[x] ; x=x+1 else: print mone[x] x=x+1 x = raw_input("") run() run() Endret 4. mai 2020 av Slettet+6132 Lenke til kommentar
Torbjørn T. Skrevet 26. mai 2013 Del Skrevet 26. mai 2013 (endret) Eit forslag: import datetime mone = ['Januar','Februar','Mars','April','Mai','Juni','Juli','August','September','Oktober','November','Desmeber'] def run(): month = datetime.datetime.now().month for m,mon in enumerate(mone): if m+1 == month: print mon + " <-- " else: print mon run() Endret 26. mai 2013 av Torbjørn T. 1 Lenke til kommentar
Gjest Slettet+6132 Skrevet 26. mai 2013 Del Skrevet 26. mai 2013 Eit forslag: import datetime mone = ['Januar','Februar','Mars','April','Mai','Juni','Juli','August','September','Oktober','November','Desmeber'] def run(): month = datetime.datetime.now().month for m,mon in enumerate(mone): if m+1 == month: print mon + " <-- " else: print mon run() Takk! Lenke til kommentar
Jaffe Skrevet 26. mai 2013 Del Skrevet 26. mai 2013 (endret) Ja, her kan du gjøre ting mye enklere. Kodestilen din her ligner mer på hvordan man gjør ting i C/C++ eller Java. Python har syntaks og funksjoner som lar deg iterere over lister på en mye enklere måte enn å måtte indeksere manuelt (som man ville gjort med en array). Koden din kan f.eks. gjøres slik: edit: for sein ja :/. se koden til Torbjørn T. ovenfor. Endret 26. mai 2013 av Jaffe Lenke til kommentar
Ilyrr Skrevet 26. mai 2013 Del Skrevet 26. mai 2013 Beste måten er vel slik: import datetime months = ['Januar','Februar','Mars','April','Mai','Juni','Juli','August','September','Oktober','November','Desember'] months[datetime.datetime.now().month-1] += ' <-- ' print '\n'.join(months) Men hvis du vil løse det med bare to linjer: import datetime print '\n'.join([m if i != datetime.datetime.now().month-1 else m+' <-- ' for i, m in enumerate(['Januar','Februar','Mars','April','Mai','Juni','Juli','August','September','Oktober','November','Desember'])]) 1 Lenke til kommentar
Lycantrophe Skrevet 26. mai 2013 Del Skrevet 26. mai 2013 Beste måten er vel slik: import datetime months = ['Januar','Februar','Mars','April','Mai','Juni','Juli','August','September','Oktober','November','Desember'] months[datetime.datetime.now().month-1] += ' <-- ' print '\n'.join(months) Pass på at denne ødelegger listen din. Lenke til kommentar
Gjest Slettet+6132 Skrevet 26. mai 2013 Del Skrevet 26. mai 2013 (endret) Må bare spør i det samme; Har dere noen spesielle tutorials på nettet dere vil anbefale? Endret 4. mai 2020 av Slettet+6132 Lenke til kommentar
slacky Skrevet 26. mai 2013 Del Skrevet 26. mai 2013 (endret) Ett tips i tilfeller hvor du trenger både nummer og element, da er enumerate() flott: ... from datetime import datetime months = ['Januar','Februar','Mars','April','Mai','Juni','Juli','August','September','Oktober','November','Desember'] this_mnt = datetime.now().month data = [m + '\t\t<===' if i==this_mnt-1 else m for i,m in enumerate(months)] print '\n'.join(data) Akkurat samme greia bare forenklet / lettere å lese for de som ikke er så vandt med python: from datetime import datetime months = ['Januar','Februar','Mars','April','Mai','Juni','Juli','August','September','Oktober','November','Desember'] this_mnt = datetime.now().month for i,month in enumerate(months): print (month if i!=this_mnt-1 else month + ' \t\t<===') ....... Om norsk månedsnavn ikke er nødvendig så kan du gjøre slik (2 linjer, ca 180 tegn): from datetime import (datetime,date) print ('\n'.join([m if (m!=datetime.now().strftime("%B")) else (m+'\t\t<===') for m in (date(2000,j,1).strftime('%B') for j in range(1,13))])) ....... Klarte du å skrive den koden i førstepost (helt selv), så tror jeg ikke tutorials er noe for deg lengre, da er det bare å vende deg til Python syntaksen/stilen. Alle tutorials jeg har sett tar deg bare frem til det punktet du er på nå, og ikke lengre... Kanskje du har flaks å finner noen stilguider for Python... Endret 26. mai 2013 av warpie Lenke til kommentar
Lycantrophe Skrevet 26. mai 2013 Del Skrevet 26. mai 2013 Hvorfor kaller dere now().month for HVER iterasjon? Det er heller ingen grunn til å generere tupler for å sammenligne. 1 Lenke til kommentar
slacky Skrevet 26. mai 2013 Del Skrevet 26. mai 2013 (endret) Hvorfor kaller dere now().month for HVER iterasjon? Det er heller ingen grunn til å generere tupler for å sammenligne. Be my guest... han ba om kort kode, vi ga han det. kun snakk om 12 iterasjoner.. det skader ikke, er liten grunn til å optimalisere ved å lage en variabel for now().month. Jeg endret dette uansett i min siste endring, da for å skape litt oversikt. Endret 26. mai 2013 av warpie Lenke til kommentar
Lycantrophe Skrevet 26. mai 2013 Del Skrevet 26. mai 2013 Liten grunn? Du sparer 12 funksjonskall på 12 iterasjoner. Det er ganske mye grunn, selv om eksempelet er trivielt. Det er verken mye tydeligere eller spesielt mer elegant å gjøre kallet inne i loopen. 2 Lenke til kommentar
slacky Skrevet 26. mai 2013 Del Skrevet 26. mai 2013 (endret) Liten grunn? Du sparer 12 funksjonskall på 12 iterasjoner. Det er ganske mye grunn, selv om eksempelet er trivielt. Det er verken mye tydeligere eller spesielt mer elegant å gjøre kallet inne i loopen. Skal vi gjøre noe annet (mer kompleks) en det så er det nødvendig å unngå dyre funksjonskall... Hadde antall iterasjoner økt en del, eller at denne loopen skal itereres over, så er det også en sak. Men dette er virkelig ikke en situasjon hvor det trenger å bli tatt hensyn til. Å gjøre koden mer elegant er en annen sak, men det var ikke temaet. Jeg er absolutt enig i tankegangen, men ikke i akkurat denne ENKLE sammenhengen. Endret 26. mai 2013 av warpie Lenke til kommentar
Lycantrophe Skrevet 26. mai 2013 Del Skrevet 26. mai 2013 Det er nå fortsatt å bygge oppunder dårlig teknikk. Det bør unngås, spør du meg. 2 Lenke til kommentar
slacky Skrevet 26. mai 2013 Del Skrevet 26. mai 2013 Jau, ikke noe å si på det! Er grunnen til at jeg tok meg til å redigere min post :-) Lenke til kommentar
Terrasque Skrevet 26. mai 2013 Del Skrevet 26. mai 2013 http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html Lenke til kommentar
snippsat Skrevet 26. mai 2013 Del Skrevet 26. mai 2013 (endret) Et par kommentarer enumerate('', 1) kan ta argument om start,da slipper man og gjøre ting som month+1 og kun bruke month. mon + " <-- Korte ned og bruke "string formatting" ser bredere ut,da er ny type anbefalt '{}'.format(). Torbjørn sin kode er grei,kan forandre kode med forslag over. import datetime mone = ['Januar','Februar','Mars','April','Mai','Juni','Juli','August','September','Oktober','November','Desmeber'] month = datetime.datetime.now().month for index,mon in enumerate(mone, 1): if index == month: print '{:15}<--'.format(mon) print mon Tull og tøys,men her en linje print '\n'.join('{:15}<--'.format(m) if i == __import__("datetime").datetime.now().month\ else m for i,m in enumerate(['Januar','Februar','Mars','April','Mai','Juni','Juli','August','September','Oktober','November','Desember'],1)) Med ."diskusjon.no" sin ikke fungerende indentering og skrevet mer i C/C++ /Java stil ble det ikke så pent dette Raymond Hettinger hadde en bra video(PyCon US 2013) om kode stil i Python,kan være vært og se på. Transforming Code into Beautiful, Idiomatic Python Endret 4. mai 2020 av Øystein Lenke til kommentar
slacky Skrevet 26. mai 2013 Del Skrevet 26. mai 2013 (endret) Tull og tøys,men her en linje print '\n'.join('{:15}<--'.format(m) if i == __import__("datetime").datetime.now().month\ else m for i,m in enumerate(['Januar','Februar','Mars','April','Mai','Juni','Juli','August','September','Oktober','November','Desember'],1)) Tell me you just didn't do that! Det der vare bare skittent... Endret 26. mai 2013 av warpie Lenke til kommentar
Lycantrophe Skrevet 26. mai 2013 Del Skrevet 26. mai 2013 Nåja, det er ganske lett å se hva som skjer. :------) Lenke til kommentar
slacky Skrevet 26. mai 2013 Del Skrevet 26. mai 2013 (endret) Nåja, det er ganske lett å se hva som skjer. :------) DIRTY. - God natt! Endret 26. mai 2013 av warpie Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå