Vilket är ett uttryck?
Varför är inte A) ett uttryck? I facit valde de C) men vad gör den till rätt svar?
De andra svaren innehåller/utgör sk. statements, vilket uttryck är en delmängd av, men många statements är inte utryck. Ett statement är en handling eller ett kommando, medan ett uttryck är något som bär ett värde.
Uttryck i Python innehåller bara identifierare, litteraler och aritmetiska och/eller booleska operatorer. Print-funktionen är inte ett uttryck, dock är det ett statement. :)
Smutstvätt skrev:De andra svaren innehåller/utgör sk. statements, vilket uttryck är en delmängd av, men många statements är inte utryck. Ett statement är en handling eller ett kommando, medan ett uttryck är något som bär ett värde.
Uttryck i Python innehåller bara identifierare, litteraler och aritmetiska och/eller booleska operatorer. Print-funktionen är inte ett uttryck, dock är det ett statement. :)
Okej så tex x="5" är uttryck i python och logiska operatorer som a or b or not c också är uttryck men inte statement?
Jag tror inte att så kallade assignment statements, alltså "x =" räknas som uttryck, däremot är "5" ett uttryck. Men, jag är osäker, så ta detta med en rejäl nypa salt.
Smutstvätt skrev:Jag tror inte att så kallade assignment statements, alltså "x =" räknas som uttryck, däremot är "5" ett uttryck. Men, jag är osäker, så ta detta med en rejäl nypa salt.
Aa okej, men jag tänkte på din sista mening i #2 där du sa att "ett uttryck är något som bär ett värde" och då tänkte jag tex x="5" eller x=5 där värdet är "5" eller 5. Haha jag är också osäker 😅
Anledningen till varför jag inte tror att det räknas är för att just "x =" inte håller i ett värde. Det är ju först på nästa kodrad, som x faktiskt har ett värde vi kan arbeta med. :)
Smutstvätt skrev:Anledningen till varför jag inte tror att det räknas är för att just "x =" inte håller i ett värde. Det är ju först på nästa kodrad, som x faktiskt har ett värde vi kan arbeta med. :)
vilken nästa kodrad som x faktiskt har ett värde vi jobbar med? Du menar tex värdet 5?
Ursäkta, jag tänkte mer hypotetiskt, att om vi i ett kodstycke definierar på rad fyra att x har värdet 5, då är det ju inte förrän efter att vi gjort denna definition, som x faktiskt har värdet 5 (nästa kodrad, eller i alla fall nästa kommando).
5 är definitivt ett uttryck, och x (om det har ett värde som redan är definierat) borde också kunna utgöra ett uttryck, men just tilldelningen (av värdet 5 till x) tror jag inte är ett uttryck, utan bara ett "vanligt" statement.
Men kommer det någon annan här i tråden och säger emot, så byter jag genast uppfattning. 😅
Uttryck är sådant som python kan evaluera och returnerar ett värde, som ’x’, ’x==5’ eller ’calc_prime(42)’.
’x=5’ är en sats, precis som A/B/D i uppgiften. Det händer något, men du kan inte skriva ’print(… vad som är i A …).
sictransit skrev:Uttryck är sådant som python kan evaluera och returnerar ett värde, som ’x’, ’x==5’ eller ’calc_prime(42)’.
’x=5’ är en sats, precis som A/B/D i uppgiften. Det händer något, men du kan inte skriva ’print(… vad som är i A …).
Så 'x' , x==5 och x=5 är uttryck?
'x' ja, 'x==5' ja, men 'x=5' nej. sictransit:s test är smart – kan du skriva in det i en printsats och köra koden?
print(x) #skriver ut värdet av x (om x är definierat)
print(x==5) #skriver ut true eller false, beroende på om x har värdet 5 eller inte
men print(x=5) fungerar inte.
Smutstvätt skrev:'x' ja, 'x==5' ja, men 'x=5' nej. sictransit:s test är smart – kan du skriva in det i en printsats och köra koden?
print(x) #skriver ut värdet av x (om x är definierat) print(x==5) #skriver ut true eller false, beroende på om x har värdet 5 eller inte
men print(x=5) fungerar inte.
GPT säger detta om uttryck och ger dessa exempel:
Och ChatGPT har rätt här – alla dessa har värden, och skulle kunna stoppas in ett print-statement.
Skillnaden är att det är två lika med-tecken, dvs. den logiska operatorn "=", inte tilldelningsoperatorn "=".
'x==5' är ett uttryck, då det bär värdet true eller false (beroende på vilket värde x har, men 'x=5' bär inget värde, utan är en operation som gör att x hädanefter i koden bär värdet 5.
Smutstvätt skrev:Och ChatGPT har rätt här – alla dessa har värden, och skulle kunna stoppas in ett print-statement.
Skillnaden är att det är två lika med-tecken, dvs. den logiska operatorn "=", inte tilldelningsoperatorn "=".
'x==5' är ett uttryck, då det bär värdet true eller false (beroende på vilket värde x har, men 'x=5' bär inget värde, utan är en operation som gör att x hädanefter i koden bär värdet 5.
Aa okej då är jag med. Det är därför C) är rätt för den består bara av booeliska och logiska uttryck
Japp! När det endast finns med litteraler, identifierare och booleska eller aritmetiska operationer, då är det ett uttryck. C innehåller identifierare samt booleska operationer. :)
Smutstvätt skrev:Japp! När det endast finns med litteraler, identifierare och booleska eller aritmetiska operationer, då är det ett uttryck. C innehåller identifierare samt booleska operationer. :)
Oh one more thing.. vad innebär litteraler samt identifierare?
destiny99 skrev:Oh one more thing.. vad innebär litteraler samt identifierare?
Identifierare är namn på saker, som exempelvis variabler, klasser, funktioner.
Litteraler är värden i din kod, som exempelvis 42, "kaka" eller True.
I 'x=42' är x en identifierare och 42 en litteral. (Likhetstecknet är en operator.)
sictransit skrev:destiny99 skrev:Oh one more thing.. vad innebär litteraler samt identifierare?
Identifierare är namn på saker, som exempelvis variabler, klasser, funktioner.
Litteraler är värden i din kod, som exempelvis 42, "kaka" eller True.
I 'x=42' är x en identifierare och 42 en litteral. (Likhetstecknet är en operator.)
Super tack så mycket.