Permalänk
Medlem

Python 2 till 3

Hej jag försöker förstå lite varför detta inte funkar i python 3
from datetime import datetime
now = datetime.now()

print '%s/%s/%s' % (now.year, now.month, now.day).

PyCharm vill inte ha %s/%s/%s'... jag har försökt att få in det i argumentet(?) men det går inte heller..
Koden som jag har skrev jag i Codeacademys tutorial från början..

Permalänk
Hedersmedlem
Skrivet av leoNilsson:

Hej jag försöker förstå lite varför detta inte funkar i python 3
from datetime import datetime
now = datetime.now()

print '%s/%s/%s' % (now.year, now.month, now.day).

PyCharm vill inte ha %s/%s/%s'... jag har försökt att få in det i argumentet(?) men det går inte heller..
Koden som jag har skrev jag i Codeacademys tutorial från början..

I Python 3 så är `print` en "vanlig" funktion, dvs med parenteser, så:

from datetime import datetime now = datetime.now() print('%s/%s/%s' % (now.year, now.month, now.day))

bör fungera. Tidigare var det ett "statement", dvs en språkkonstruktion som inte krävde parenteser (man kunde skriva dem om man ville, men de var inte nödvändiga, så de skippades ofta). Denna ändring gjordes för att göra `print` kraftfullare, och också för konsekvensens skull.

Se första punkten i dokumentationsavsnittet What’s New In Python 3.0.

Jag brukar även gilla att rekommendera att använda strängens `format()`-metod (formatspecifikation) till förmån för `%`-interpolationen. `format` kan göra fräsigare saker och ser i mina ögon mer "ordentligt" ut. Dokumentationen säger också gällande string.format():

Citat:

This method of string formatting is the new standard in Python 3, and should be preferred to the % formatting in new code.

Visa signatur

Nu med kortare användarnamn, men fortfarande bedövande långa inlägg.

Permalänk
Medlem
Skrivet av phz:

I Python 3 så är `print` en "vanlig" funktion, dvs med parenteser, så:

from datetime import datetime now = datetime.now() print('%s/%s/%s' % (now.year, now.month, now.day))

bör fungera.

Ja nuså!! Hade satt print('%s/%s/%s' %) (now.year, now.month, now.day)
Man tackar
Ska använda dess länkar till framtida "omvandligar" mycket hjälpsamt!