Gå til innhold

Anbefalte innlegg

Hei!

 

Jeg kom over en nybegynnerguide til python på youtube. Jeg syns jeg har fulgt den slavisk, men jeg får likevel ikke et veldig enkelt program til å fungere. Slik er programmet, skrevet i notepad ++ (program er å ta i da...):

 

print("Hello world")

myName = input("What is your name?")

print(myName)

 

Jeg går så til ledetekst, og åpner programmet der. Etter at jeg har svar "Joda" på spørsmålet "What is your name?", blir det feilmelding. Her er "snutten":

 

C:\Users\Joda\Desktop\python helloworld.py

Hello world

What is your name? Joda

Traceback (most recent call last):

File “helloworld.py”, line 2, in (module)

myName = input(“What is your name?”)

File “<string>”, line 1, in <module>

NameError: name ‘Joda’ is not defined

 

I følge nybegynnerguiden skulle jeg nå kun få opp "Joda", som svar, ikke noen feilmeldinger om udefinerte navn. Kan noen si meg hva jeg har gjort feil? :)

Lenke til kommentar
Videoannonse
Annonse

basert på print-statementet ser det ut som du bruker python3, men feilmeldingen du får hadde gitt mening om du brukte python 2 (og da skal man ikke skrive print på den måten). (input i python3 er det samme som raw_input i python 2, og raw_input er da fjernet).

 

Hvilken versjon av python bruker du?

 

Hvis du bruker python 2, så anbefaler jeg deg å bytte til python 3, da guiden du følger tydeligvis bruker dette. Så slipper du slike problemer :)

 

Edit: Kan forklare litt hvorfor.

 

I python2 har man to ulike input-kommandoer som brukes til litt forskjellige ting:

raw_input() er en funksjon som tok inn brukerinput og returnerte teksten som en streng, uten å gjøre noe mer med det.

 

input() var en funksjon, som i praksis var det samme som eval(raw_input()), denne ville da ta inputen fra brukerene og kjøre det som det var kode.

 

Eksempel: bruker du raw_input() og skriver inn "2+2+2" så vil den returnere strengen "2+2+2", mens om du brukte input() ville den returnere svaret på utrykket, altså tallet 6.

 

I python3 endret de dette. raw_input byttet da navn til input, og den gamle imput-funksjonen ble fjernet. Om man da ønsket denne funksjonaliteten måtte man skrive eval(input())

Endret av etse
Lenke til kommentar

Print med parentes vil funke i Python 2, og oppførselen til input() er som i Python 2. Trådstarter må bruke raw_input() eller bytte til Python 3.

Hvis du bruker python 2, så anbefaler jeg deg å bytte til python 3, da guiden du følger tydeligvis bruker dette. Så slipper du slike problemer :)

 

Støtter meg til dette.

Det er vel ikke helt presist at inputen kjøres som kode, men at det evalueres som et uttrykk (expression)? Man man få 2+2 til å bli 4, men du kan ikke skrive print "hello" og få hello som output.

Endret av Imsvale
Lenke til kommentar

Takker for alle svar! :)

 

Da forsøker jeg rett og slett å bytte til python3, det stemmer at jeg bruker python2. Hjertelig takk for råd og forklaringer; det er mye det er vanskelig å "få hodet rundt" sånn til å begynne med. :)

 

EDIT: Da var det oppe å gikk, tusen takk. :)

Endret av Skrømt
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...