5 svar
194 visningar
SimSim behöver inte mer hjälp
SimSim 2
Postad: 8 sep 2020 23:27

Tolka typer av variabler

Hej! Nybörjare i programmering här och är tacksam för alla svar.

Jag håller på med en uppgift som går ut på att skriva ett program som låter användaren ange hur många heltal som ska lagras i en lista och vilka, sedan skriva ut talen baklänges. Men programmet ska också kunna hantera om användaren skriver in något som inte tolkas som heltal (till exempel en sträng) och fråga om ett nytt tal.

Så här långt har jag kommit men jag kan inte få kläm på den sista biten utan får bara en massa felmeddelanden på allt jag försöker.

heltal = int(input("Hur många heltal? "))
heltal_lista = []
h = 1

while h <= heltal:
    tal = int(input("Mata in ett tal här: "))
    heltal_lista.insert(0, tal)
    h += 1

print(heltal_lista)

tomast80 4245
Postad: 9 sep 2020 07:50 Redigerad: 9 sep 2020 07:51

Tips här: https://careerkarma.com/blog/python-string-to-int/

Jag skulle nog läst in som en sträng först och sedan konverterat till heltal i nästa steg om det verkligen är på rätt format.

Laguna Online 30472
Postad: 9 sep 2020 08:51

Lång och pladdrig sida som ändå inte säger något om vad som händer om strängen inte kan konverteras.

Om ni har lärt er exceptions så kan ni använda det (men det brukar man inte lära sig tidigt).

Ett annat sätt är att undersöka om strängen består av enbart siffror, eventuellt med ett minustecken först. 

emilg 478
Postad: 9 sep 2020 10:33

Prova:

def isDigit(s):
  if s[0] == '-':
    return s[1:].isdigit()
  return s.isdigit()

Det är en funktion som kollar om det användaren skrivit in är ett heltal. 

Laguna Online 30472
Postad: 9 sep 2020 11:01

Akta om strängen är tomma strängen, bara.

Aerius 504 – Fd. Medlem
Postad: 9 sep 2020 11:15

Eftersom du vet hur många iterationer while-loopen ska göra är en for-loop bättre. Det är ingen större skillnad på while-loop och for-loop. Men en while-loop används vanligen när man inte vet hur många iterationer ska göras medan en for-loop används vanligen när man vet hur många iterationer som ska göras.

Det finns en inbyggd funktion i python som vänder på en lista baklänges, list.reverse(). Det är en god vana att göra en sak i taget. I det här fallet läsa in talen till listan i loopen (list.append() ), efter det ändra ordningen till baklänges i listan (list.reverse() ) sist skriva ut listan.

Svara
Close