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?
Det är rimligen åtminstone ett likhetstecken med i utmatningen. Vad matar du in, exakt, och vad kommer ut, exakt?
input() verkar returnera en sträng.
Dr. G skrev:input() verkar returnera en sträng.
I Python3, men inte i Python 2.
I Python 3, men inte i Python 2.
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.
Hur gick det?
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)).
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å?