» »

Python leposlovje

Python leposlovje

ozbolt ::

Zanima me, kako bi na bolj eleganten in berljiv nacin napisal tole:

if str1 != 'no_decoration':
  str1 = "**" + str1 + "**"
if str2 != 'no_decoration':
  str2 = "**" + str2 + "**"
if str3
...

Ideja je bila, da bi napisal tako:

for item in (str1, str2, str3,...):
  if item != "no_decoration":
    item = "**" + item + "**"

Ampak ne dela.

PS: zaradi berljivosti bi raje delal direktno z vec spremenljivkami, kot pa z enim dictionarjem ali cem podobnim

Gandalfar ::

Kaj to pomen - "ne dela"? Kaj se zgodi, kaj pricakujes da bi se moralo zgodit?

OrkAA ::

Dejmo najprej pokazat najbolj neberljiv nacin :)

["** %s **" % x for x in (str1, str2, str3) if x != "no_decoration"]

Zgodovina sprememb…

  • spremenil: Mavrik ()

joze67 ::

def no_decoration(str):
    if str == "no decoration"
        return str
    return "** %s **" % (str)

str1, str2, str3 = map(no_decoration, [str1, str2, str3])

Zgodovina sprememb…

  • spremenilo: joze67 ()

Mavrik ::

Tole z map je lepo ja :)

Lahko tudi z lambdo:

str1,str2,str3 = map(lambda str: str if str == "no decoration" else "** %s **" % (str,), [str1, str2, str3])


Morda manj pregledno :)
The truth is rarely pure and never simple.

morbo ::

OrkAA je izjavil:

Dejmo najprej pokazat najbolj neberljiv nacin :)


["** %s **" % x for x in (str1, str2, str3) if x != "no_decoration"]

List comprehension one-liner FTW! Ko se navadiš ni bistveno manj berljivo od if bloka in je obenem bolj slick looking.

Zgodovina sprememb…

  • spremenil: morbo ()

joze67 ::

OrkAA je izjavil:

Dejmo najprej pokazat najbolj neberljiv nacin :)


["** %s **" % x for x in (str1, str2, str3) if x != "no_decoration"]


Off topic: damn, nisem vedel, da je python podprt v st.koda; v navodilih ni.
(trenutno so podprti c, php, java, javascript, vb, perl, pascal in html)


On topic: zgornja koda naredi vse, razen:

  • prireditve novih vrednosti

  • ne izpiše nespremenjenih nizov ("no_decoration")

OrkAA ::

(str1, str2, str3) = ["** %s **" % x if x != "no_decoration" else x for x in (str1, str2, str3)]


Evo, zdaj je popravljeno, da podpira celotno funkcionalnost :)

ozbolt ::

Hvala, pro-ji.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Pošljite nam vašo najboljšo kodo

Oddelek: Programiranje
122171 (1416) AndrejO
»

Ali obstaja možnost ?

Oddelek: Pomoč in nasveti
201589 (955) mojca
»

[C] struct in int[] (strani: 1 2 )

Oddelek: Programiranje
657288 (6361) MrBrdo
»

PHP - stringi

Oddelek: Izdelava spletišč
251776 (1599) pehape
»

c++ urejanje

Oddelek: Programiranje
51202 (1149) mchaber

Več podobnih tem