Orjanp Skrevet 12. april 2005 Del Skrevet 12. april 2005 (endret) Hvis jeg har en tekststreng som ser slik ut streng = " 2 + 3" Finnes det en lettvindt måte å konvertere dette til et matematisk uttrykk, slik at det blir slik. >>>streng = "2 + 3" >>>num = streng.konverter_til_matematisk_uttrykk() >>>print(num) 5 >>> Den nærliggende måten er å dele opp strengen i tokens og konvertere hvert token som ikke er en operator til en int, og sjekke for operator, for så å legge dette sammen. Endret 12. april 2005 av Orjanp Lenke til kommentar
zeitgeist Skrevet 12. april 2005 Del Skrevet 12. april 2005 (endret) det enkleste er eval() s = "2+3" eval(s) >>> 5 Endret 12. april 2005 av zeitgeist Lenke til kommentar
Orjanp Skrevet 12. april 2005 Forfatter Del Skrevet 12. april 2005 Akkurat noe slikt jeg var på utkikk etter. Takk for hjelpen. Lenke til kommentar
A_N_K Skrevet 12. april 2005 Del Skrevet 12. april 2005 Python er ganske praktisk som du ser :] Lenke til kommentar
olanat Skrevet 12. april 2005 Del Skrevet 12. april 2005 'eval' er veldig lettvindt, men du må bare bruke det på strenger som du stoler på. Python kjører koden som du sender til eval så man bør passe på. eval('os.unlink("viktigfil.viktig")') pleier å kunne gjøre skade ola Lenke til kommentar
Orjanp Skrevet 12. april 2005 Forfatter Del Skrevet 12. april 2005 (endret) Ja, har begynt å innse det. Edit: @ A_N_K Endret 12. april 2005 av Orjanp Lenke til kommentar
Orjanp Skrevet 12. april 2005 Forfatter Del Skrevet 12. april 2005 'eval' er veldig lettvindt, men du må bare bruke det på strenger som du stoler på. Python kjører koden som du sender til eval så man bør passe på. eval('os.unlink("viktigfil.viktig")') pleier å kunne gjøre skade ola Skal passe på det. I denne sammenhengen skal det kun brukes til å evaluere et matematisk uttrykk som er konvertert fra prefix/innfix/postfix notasjon. Så jeg vil anta at jeg er på trygg grund. Lenke til kommentar
zeitgeist Skrevet 13. april 2005 Del Skrevet 13. april 2005 Det er en utrolig kul funksjon egentlig. Jeg tror den kommer fra Lisp. Jeg kastet bort en hel dag på å lete etter noe lignene i VBA. Lenke til kommentar
olanat Skrevet 14. april 2005 Del Skrevet 14. april 2005 Det er en utrolig kul funksjon egentlig. Jeg tror den kommer fra Lisp. Jeg kastet bort en hel dag på å lete etter noe lignene i VBA. Mange språk som har eval funksjoner, jeg tror VBA har det også i alle fall har VBScript (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/vsfcteval.asp) det har mye til felles med VBA. Men hvorfor ikke bruke Python og COM når man først skal være i himmelen. Det finnes forøverig utrolig mye python 'features' som er 100 ganger 'kulere' enn eval. ola Lenke til kommentar
Torbjørn Skrevet 14. april 2005 Del Skrevet 14. april 2005 eval er ikke spesielt uvanlig ei heller spesielt kult spør du meg. det innfører en stygg sikkerhetsrisiko og er et lite elegant verktøy. Lenke til kommentar
zeitgeist Skrevet 14. april 2005 Del Skrevet 14. april 2005 Det er en utrolig kul funksjon egentlig. Jeg tror den kommer fra Lisp. Jeg kastet bort en hel dag på å lete etter noe lignene i VBA. Mange språk som har eval funksjoner, jeg tror VBA har det også i alle fall har VBScript (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/vsfcteval.asp) det har mye til felles med VBA. Men hvorfor ikke bruke Python og COM når man først skal være i himmelen. Det finnes forøverig utrolig mye python 'features' som er 100 ganger 'kulere' enn eval. ola Jeg lette etter eval ifm en større Excel-macro. Den finnes ikke der såvidt jeg kunne se, men i VBA for Access skal den visst være. Jeg har ellers gode erfaringer med å styre office-programmer via COM. Jeg fastholder uansett at eval() er en kul funksjon som er kjekk til sitt bruk. Det er mange situasjoner spørsmålet om sikkerhet ikke er relevant i det hele tatt. Og hvorfor er den ikke elegant? Nå er kanskje begrepet "kul" litt pussig i denne sammenhengen. En funksjon som mer åpenbart fortjener betegnelsen er difflib.get_close_matches(). 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å