14 svar
170 visningar
destiny99 behöver inte mer hjälp
destiny99 8074
Postad: 28 jun 2023 19:08 Redigerad: 28 jun 2023 19:09

utskrift av samma variabelnamn

Hej!

jag har svårt att förstå varför programmet ej skriver ut 17 två ggr när jag använder s=17 och s="17" och printar ut s,medan jag anger olika variabelnamn och säger åt den att skriva ut s och x så gör den det. 

CurtJ 1203
Postad: 28 jun 2023 19:12

I första fallet har du en print-sats, i det andra har du två. Det är förklaringen till din fråga. Dessutom skriver du inte ut värdet av s i första exemplet utan bara talet 17. 

I det första exemplet har du två tilldelningar till variablen s. Den andra tilldelningen skriver över den första MEN du har bara en variabel. 

Räcker det? 

destiny99 8074
Postad: 28 jun 2023 19:45 Redigerad: 28 jun 2023 19:48
CurtJ skrev:

I första fallet har du en print-sats, i det andra har du två. Det är förklaringen till din fråga. Dessutom skriver du inte ut värdet av s i första exemplet utan bara talet 17. 

I det första exemplet har du två tilldelningar till variablen s. Den andra tilldelningen skriver över den första MEN du har bara en variabel. 

Räcker det? 

Nu är jag ej med på vad du menar när du säger "den andra tilldelningen skriver över den första men du har bara en variabel"?  Vad hade liksom hänt om jag skrev istället print(s) i första exemplet? Då kan jag tänka mig programmet hade skrivit ut bara 17 en gång.

Peter_ 470 – Avstängd
Postad: 28 jun 2023 20:12

Till att börja med så blandar du ihop tal med strängar. Det är inte samma sak men i Python så kan man slarva med det utan att få fel.
s = 17 tilldelar variabeln s värdet numeriskt 17.

s = "17" tilldelar s strängen "17". Det är inte samma sak.

Om jag var studievägledare så skulle jag rekommendera alla elever som ska lära sig programmering att börja med C/C++ alternativt C# eller Java. Då går det inte att "slarva" som i Python.

Fermatrix 7841 – Fd. Medlem
Postad: 28 jun 2023 20:20 Redigerad: 28 jun 2023 20:20

Att börja med C++ är jag tveksam till, personligen. 

@Destiny

Om du inte förstår förklaringen given av Peter så kanske det blir enklare att begripa så här:

Säg att du gör följande:

s=5

s=s + 1

print(s)

Vad skrivs ut? Det kommer inte skriva ut två gånger, det är det första vi kan konstatera. Att du tilldelar s två olika typer gör inte att du nu har två olika referenser.

I bild 1 som nämnts redan har du skrivit:

print(17), här skriver du bara ut 17, ändra det till print(839) så ser du att det var en tankevurpa.

destiny99 8074
Postad: 28 jun 2023 20:29 Redigerad: 28 jun 2023 20:30
Dracaena skrev:

Att börja med C++ är jag tveksam till, personligen. 

@Destiny

Om du inte förstår förklaringen given av Peter så kanske det blir enklare att begripa så här:

Säg att du gör följande:

s=5

s=s + 1

print(s)

Vad skrivs ut? Det kommer inte skriva ut två gånger, det är det första vi kan konstatera. Att du tilldelar s två olika typer gör inte att du nu har två olika referenser.

I bild 1 som nämnts redan har du skrivit:

print(17), här skriver du bara ut 17, ändra det till print(839) så ser du att det var en tankevurpa.

Då skrivs ju ut värdet 6. Men jag ville testa vad som händer om jag skriver ut tex s=17 och s="17" och sen skriver print(s) i första bilden istället för print( 17 ) som jag tidigare skrev. Då vill jag att den skriver ut 17 "17"

Fermatrix 7841 – Fd. Medlem
Postad: 28 jun 2023 20:33 Redigerad: 28 jun 2023 20:35

Så fungerar det inte. 

s="17" kommer göra att s nu har värdet "17", precis som s+1 gör att s=6, inte 5. 

Beteendet du söker kan man åstadkomma med Objektorienterad programmering eller andra datastrukturer.

Hur hade du för övrigt tänkt att en dator ska förså vilket värde du skulle refererat till? 

destiny99 8074
Postad: 28 jun 2023 20:46
Dracaena skrev:

Så fungerar det inte. 

s="17" kommer göra att s nu har värdet "17", precis som s+1 gör att s=6, inte 5. 

Beteendet du söker kan man åstadkomma med Objektorienterad programmering eller andra datastrukturer.

Hur hade du för övrigt tänkt att en dator ska förså vilket värde du skulle refererat till? 

Nu provar jag mig fram bara för jag vill ju att den skriver ut som sagt 17 2 ggr ,men den gör den ej inte när koden ser ut såhär

s="17"

s=17

print(s)

Fermatrix 7841 – Fd. Medlem
Postad: 28 jun 2023 20:55 Redigerad: 28 jun 2023 20:55

Om du vill skriva ut s två gånger kan du göra:

print(f'{s} {s}'), eller print(s,s) osv.

destiny99 8074
Postad: 28 jun 2023 20:59 Redigerad: 28 jun 2023 21:00
Dracaena skrev:

Om du vill skriva ut s två gånger kan du göra:

print(f'{s} {s}'), eller print(s,s) osv.

Varför kan man göra så båda fallen? Är det för att programmet förstår att strängen 17 ska skrivas ut som 17 bara?

Fermatrix 7841 – Fd. Medlem
Postad: 28 jun 2023 21:05 Redigerad: 28 jun 2023 21:06

Det är bara två olika sätt att hantera strängar. Läs gärna igenom dokumentationen:

https://docs.python.org/3/tutorial/inputoutput.html

Om du vill skriva ut n st 17, kan du göra ex:

s=17

for _ in range(n):

    print(s, end=' ')

Glöm bara inte definiera vad n är.

destiny99 8074
Postad: 28 jun 2023 21:16
Dracaena skrev:

Det är bara två olika sätt att hantera strängar. Läs gärna igenom dokumentationen:

https://docs.python.org/3/tutorial/inputoutput.html

Om du vill skriva ut n st 17, kan du göra ex:

s=17

for _ in range(n):

    print(s, end=' ')

Glöm bara inte definiera vad n är.

Ok

destiny99 8074
Postad: 29 jun 2023 11:57 Redigerad: 29 jun 2023 11:57
Dracaena skrev:

Det är bara två olika sätt att hantera strängar. Läs gärna igenom dokumentationen:

https://docs.python.org/3/tutorial/inputoutput.html

Om du vill skriva ut n st 17, kan du göra ex:

s=17

for _ in range(n):

    print(s, end=' ')

Glöm bara inte definiera vad n är.

Nu var det längesen jag skapade såna här for i in range bla bla koder,men hur var det man definierade n? För jag har för mig man kan skriva 

s=17

for i in range(10)

print(s,end= ' ')

 

Vi har ej definierat vad i är här. 

Fermatrix 7841 – Fd. Medlem
Postad: 29 jun 2023 12:56 Redigerad: 29 jun 2023 13:02

Ja, följande kod fungerar

s=17

for i in range(10)

	print(s,end= ' ')

Notera att jag indenterade printen.

I är definierad. for i in range(start, stop, step) betyder att vi definierar variablen i som följer sekvensen angiven från range(start, stop, step). start och step har default värden. Om du skriver följande:

for i in range(10) så är det samma sak som:

for i in range(0,10,1):
	something

Har vi istället en lista, exempelvis:

apple_types={"green", "red"}
for item in apple_types:
	print(item)

Så definierar vi en variabel item som i varje iteration antar nästa värde i listan. Dvs, första iterationen blir item det första värdet i apple_types, eller apples_types[0], eller "green". Nästa iteration blir den "red", och sedan har vi inga fler element i listan, därför körs denna loopen bara två gånger.


Tips, prova köra koden ovan för att verifiera resultaten.


För att svara på din första fråga dock så definierar vi n på olika sätt.

Metod 1:

s=17
n=10
for _ in range(n):

    print(s, end=' ')

Metod 2:

s=17

for _ in range(10):

    print(s, end=' ')

Osv. 

Notera att jag använder _ som min variabel i loopen. Det är en konvention att använda underscore (_) som loop variabel om vi inte bryr oss om variabeln, dvs, om vi inte använder den. I vårt fall så använder vi den inte, vilket _ indikerar. I exemplet med äpplen så använder vi den dock, varav vi kallade den något annat.

destiny99 8074
Postad: 29 jun 2023 21:36
Dracaena skrev:

Ja, följande kod fungerar

s=17

for i in range(10)

	print(s,end= ' ')

Notera att jag indenterade printen.

I är definierad. for i in range(start, stop, step) betyder att vi definierar variablen i som följer sekvensen angiven från range(start, stop, step). start och step har default värden. Om du skriver följande:

for i in range(10) så är det samma sak som:

for i in range(0,10,1):
	something

Har vi istället en lista, exempelvis:

apple_types={"green", "red"}
for item in apple_types:
	print(item)

Så definierar vi en variabel item som i varje iteration antar nästa värde i listan. Dvs, första iterationen blir item det första värdet i apple_types, eller apples_types[0], eller "green". Nästa iteration blir den "red", och sedan har vi inga fler element i listan, därför körs denna loopen bara två gånger.


Tips, prova köra koden ovan för att verifiera resultaten.


För att svara på din första fråga dock så definierar vi n på olika sätt.

Metod 1:

s=17
n=10
for _ in range(n):

    print(s, end=' ')

Metod 2:

s=17

for _ in range(10):

    print(s, end=' ')

Osv. 

Notera att jag använder _ som min variabel i loopen. Det är en konvention att använda underscore (_) som loop variabel om vi inte bryr oss om variabeln, dvs, om vi inte använder den. I vårt fall så använder vi den inte, vilket _ indikerar. I exemplet med äpplen så använder vi den dock, varav vi kallade den något annat.

Ah okej det var tydligt. Tack!

Svara
Close