8 svar
372 visningar
Salsadansssar behöver inte mer hjälp
Salsadansssar 206 – Fd. Medlem
Postad: 14 nov 2019 21:23 Redigerad: 14 nov 2019 21:24

Vad är felet?

Jag ska konstruera en multiplikationstabell, men de värden jag får ut blir fel

Kod:

tabell = input("Skriv in en tabell:)")
for x in range(0,4):
print(x, "x", tabell, "=", x*tabell)

Vid 2x3 blir svaret 33 och vid 3x3 blir svaret 333

Vad är felet?

Laguna Online 30482
Postad: 14 nov 2019 21:51

Det är rimligen åtminstone ett likhetstecken med i utmatningen. Vad matar du in, exakt, och vad kommer ut, exakt?

Dr. G 9479
Postad: 14 nov 2019 21:54

input() verkar returnera en sträng.

Laguna Online 30482
Postad: 14 nov 2019 21:56
Dr. G skrev:

input() verkar returnera en sträng.

I Python3, men inte i Python 2.

Laguna Online 30482
Postad: 14 nov 2019 21:57

I Python 3, men inte i Python 2.

Lindehaven 820 – Lärare
Postad: 15 nov 2019 22:36

Vid multiplikation av en sträng s med ett heltal h så blir produkten en sträng s repeterad h gånger. Det är inget fel utan så som Python funkar.

Om du ändrar datatypen på tabell från sträng till heltal så blir det som du (antagligen) vill ha det.

Lindehaven 820 – Lärare
Postad: 24 nov 2019 20:49

Hur gick det?

Laguna Online 30482
Postad: 25 nov 2019 05:13

För debuggning kan man stoppa in print-anrop här och där i program. print(tabell) visar vad tabell innehåller. För att vara säker på att man skiljer mellan t.ex. talet 3 och strängen "3" (som skulle skrivas ut likadant), kan man använda funktionen repr, alltså print(repr(tabell)). 

Lindehaven 820 – Lärare
Postad: 27 nov 2019 10:41

Att ändra datatypen på tabell från sträng till heltal kan göras med funktionen int() så här:

tabell = input("Skriv in en tabell:)")

tabell = int(tabell)

Eller mer komprimerat så här:

tabell = int(input("Skriv in en tabell:)"))

Går det bättre då?

Svara
Close