Gå til innhold

Hva er forskjellen på ' og " i Python


Anbefalte innlegg

hei

Jeg prøver å lære meg Python og leser nå gjennom boken Beginning Python.

 

I python 3.x kan jeg skrive

 

print('hei verden')

print("Hei verden")

 

og begge gir ut samme respons i Python shell. Hva er forskjellen mellom bruk av ' og " i dette tilfellet og hva er forskjellen generelt? Hvis det da er noen forskjell.

 

I python 2.x kan jeg skrive:

>>> x= input("x: ")

x: 34

>>> x

34

 

Hvis jeg skriver tilsvarende i python 3.x får jeg:

>>> x= input("x: ")

x: 32

>>> x

'32'

 

her kommer 32 ut med ', hva er betydningen av ' i dette tilfellet?

Jeg har fått med meg at den korrekte måten å skrive det over i python 3.x vil være:

>>> x= int(input("x: "))

x: 32

>>> x

32

 

Hva er egentlig forskjellen på input() i python 2.x og 3.x i tilfellet over?

Lenke til kommentar
Videoannonse
Annonse

I python 3.x kan jeg skrive

 

print('hei verden')

print("Hei verden")

 

og begge gir ut samme respons i Python shell. Hva er forskjellen mellom bruk av ' og " i dette tilfellet og hva er forskjellen generelt? Hvis det da er noen forskjell.

 

Det er ingen forskjell. Årsaken til at du kan bruke både quote og doublequote er for at det skal være lettere å konstruere tekstkonstanter med nettopp disse tegn:

 

>>> s = "Bear's claws"
>>> print s
Bear's claws
>>> t = 'Bear\'s claws'
>>> print t
Bear's claws

 

I python 2.x kan jeg skrive:

>>> x= input("x: ")

x: 34

>>> x

34

 

Hvis jeg skriver tilsvarende i python 3.x får jeg:

>>> x= input("x: ")

x: 32

>>> x

'32'

 

her kommer 32 ut med ', hva er betydningen av ' i dette tilfellet?

 

Her er det en situasjon som illustrerer forskjellen mellom 2.x og 3.x. I 2.x er input(prompt) ekvivalent med eval(raw_input(prompt)) -- dvs Python evaluerer det uttrykket som brukeren skriver. I 3.x derimot, skjer ikke evalueringen -- "The function then reads a line from input, converts it to a string (stripping a trailing newline), and returns that.". Dvs. i Python 2.x vil x være _tallet_ 34, mens i python 3.x vil x være en tekst (str) med to tegn -- 3 og 2. quote i dette tilfellet forteller deg nettopp at x (i python 3.x) er en string.

 

Jeg har fått med meg at den korrekte måten å skrive det over i python 3.x vil være:

>>> x= int(input("x: "))

x: 32

>>> x

32

 

Korrekt og korrekt. Spørs litt hva du ønsker å oppnå. Men ja, i dette tilfellet er int() å foretrekke framfor eval().

Lenke til kommentar

Python 2.x sin input() bruke raw_input og eval() for og komme ut med et nummer(integer)

Dette kan være en farlig kombinasjon(sikkerhetsrisiko),derfor ble dette ryddet opp i python 3.

Python 3 har kun input()som retunerer en string,og raw_input() er fjernet.

 

Python 3.1.2 (r312:79149, Mar 21 2010, 00:41:52) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> x = input('test: ')
test: 55
>>> x
'55'
>>> type(x)
<class 'str'>
>>> #Man kan velg og gjøre om til integer når det trengs
>>> a = int(x)
>>> a
55
>>> type(a)
<class 'int'>
>>> 
>>> x = int(input('test: '))
test: 66
>>> x
66
>>> type(x)
<class 'int'>
>>> 

 

Jeg må nok vente en god stund før jeg kan bruke python 3 fullt ut.

P.g.a venter på mange 3 part`s moduler + web-rammeverk til og bli skrevet om for python 3.

Dette er selfølgelig ikke noe problem,har 3 python versjoner installert og skifter greit mellom dem.

Endret av SNIPPSAT
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...