Ga naar hoofdinhoud

Hoe zet je een string om naar een integer in Python

Leer hoe je Python-strings naar integers converteert in deze korte tutorial.
· 5 min lezen

Verken met AI

Fouten met datatypen zijn een van de meest voorkomende obstakels in Python, zeker voor beginners. Een vaak voorkomende typefout ontstaat wanneer getallen als strings zijn geformatteerd, wat leidt tot verkeerde berekeningen, onjuiste inzichten of regelrechte foutmeldingen.

In deze tutorial laat ik je zien hoe je met dit soort fouten omgaat en hoe je Python-strings naar integers converteert.

Het snelle antwoord: hoe zet je een Python-string om naar een integer

Als je string een geheel getal voorstelt (bijv. 12), gebruik dan de functie int() om een string naar een integer te converteren. Als je string een decimaal getal voorstelt (bijv. 12.5), gebruik dan de functie float() om een string naar een float te converteren. Hieronder vind je voorbeelden:

# Converting a string into an integer 
number_str = "10"
number_int = int(number_str)
print(number_int)  # Output: 10

# Converting a string into a float 
decimal_str = "10.5"
decimal_float = float(decimal_str)
print(decimal_float)  # Output: 10.5

Datatypen in Python

Python is een dynamisch getypeerde taal met uiteenlopende datatypen, van strings en integers tot drijvende-kommagetallen en booleans. Inzicht hierin is cruciaal voor effectief programmeren. Hieronder staat een niet-uitputtende lijst met Python-datatypen:

  • String (str): Tekstuele data tussen aanhalingstekens. Bijv. greeting = "Hello, World!"
  • Integer (int): Gehele getallen zonder fractie. Bijv. age = 25
  • Float (float): Getallen met een decimaal punt. Bijv. height = 5.9
  • Boolean (bool): Stelt True of False voor
  • Lijst (list): Een geordende verzameling items die van verschillende datatypen kunnen zijn. Lijsten zijn muteerbaar, dus je kunt ze aanpassen. Bijvoorbeeld colors = ["red", "blue", "green"]
  • Dictionary (dict): Een verzameling sleutel-waardeparen waarmee je data kunt opslaan en ophalen via sleutels. Bijvoorbeeld person = {"name": "Alice", "age": 30}

Lees voor meer over datatypen deze tutorial Data Structures in Python op DataCamp.

Waarom een string omzetten naar een integer?

Correcte datatypen zijn essentieel voor nauwkeurige berekeningen. Neem het volgende voorbeeld. Stel, we hebben twee getallen 5 en 10 die als strings zijn opgeslagen. Als we die optellen, is het antwoord 510, omdat ze als strings worden behandeld die met de +-operator aan elkaar worden geplakt.

Om het juiste antwoord te krijgen (in dit geval 15), moeten ze voor het optellen naar integers worden geconverteerd. Dit is een simpele illustratie, maar stel je voor dat dit wordt toegepast op een dataset met bedrijfsomzet—dat kan tot slechte zakelijke beslissingen leiden.

# Summing two numbers that are actually strings
'5'+'10'# This returns 510

# Converting them to integers before summing them
int('5') + int('10') # This returns 15

Hoe zet je strings om naar integers in Python

Als je met numerieke data werkt die als strings zijn geformatteerd, is het vaak nodig deze strings om te zetten naar integers voor berekeningen of andere numerieke bewerkingen. Python biedt hiervoor een eenvoudige manier met de functie int(). Deze functie neemt een string als invoer en geeft de gehele weergave terug, mits de string een geldig geheel getal voorstelt.

# Convert a string to an integer
numeric_string = "42"
converted_integer = int(numeric_string)
print(converted_integer)  # Output: 42

Hoe zet je strings om naar floats in Python

In gevallen waarin de string een getal met een decimaal punt voorstelt, is conversie naar een integer ongeschikt en resulteert dat in een fout. In plaats daarvan kun je deze strings met de functie float() in Python naar floats converteren. Het gebruik van floats is vooral cruciaal bij zeer precieze data, zoals financiële gegevens of sensormetingen.

# Convert a string to a float
decimal_string = "3.14"
converted_float = float(decimal_string)
print(converted_float)  # Output: 3.14

Problemen bij het converteren van strings naar numerieke waarden in Python

Bij het omzetten van strings naar getallen zijn er enkele valkuilen die tot fouten of onverwachte resultaten kunnen leiden.

Niet-numerieke strings converteren

Pogingen om een niet-numerieke string, zoals 'hello world', naar een getal te converteren, leiden tot een fout. Als je programmatisch strings wilt opvangen die niet naar integers kunnen worden geconverteerd, gebruik dan een try/except-blok om zulke gevallen netjes af te handelen.

try:
    invalid_number = int("hello world")
except ValueError:
    print("This is not a number.")

Float-strings naar integers converteren

Een string die een float voorstelt direct naar een integer converteren resulteert in een ValueError. Hoewel je een string die een integer voorstelt naar een float kunt converteren, geldt het omgekeerde niet. Hier is een voorbeeld van de fout die je kunt krijgen:

string_decimal = '13.5'
# Convert string_decimal into an integer
int(string_decimal) 
# Returns ValueError: invalid literal for int() with base 10: '13.5'

Strings met verschillende grondtallen

Als we het over "grondtallen" hebben bij getallen, bedoelen we het talstelsel waarin het getal is uitgedrukt. Het meest voorkomende grondtal is 10, ook wel het decimale stelsel, dat we in het dagelijks leven gebruiken. Het bestaat uit 10 cijfers, van 0 tot en met 9.

Er bestaan echter ook andere grondtallen die in verschillende domeinen worden gebruikt, met name in de informatica. Bijvoorbeeld:

  • Binair (grondtal 2): Gebruikt alleen 0 en 1. Het is de fundamentele taal van computers.
  • Octaal (grondtal 8): Gebruikt de cijfers 0 tot en met 7. Tegenwoordig minder gebruikelijk, maar gebruikt in oudere computersystemen.
  • Hexadecimaal (grondtal 16): Gebruikt de cijfers 0 tot en met 9 en de letters A tot en met F (waarbij A=10 en F=15). Breed gebruikt in de informatica, vooral voor kleurcodes in webdesign en geheugenadressen.

Als je een string hebt die een getal in een ander grondtal dan 10 voorstelt, moet je het grondtal opgeven zodat Python het correct kan interpreteren. Hier is een voorbeeld met een hexadecimaal getal:

# Convert a hexadecimal string to an integer
hex_string = "1A"  # In base 16, 1A represents the decimal number 26
converted_int = int(hex_string, 16)  # The '16' tells Python it's in base 16
print(converted_int)  # Output: 26

Conclusie

Werken met datatypen en conversies in Python is een basisvaardigheid voor programmeren. Door te begrijpen hoe je strings correct naar integers en floats converteert, voorkom je veelvoorkomende valkuilen en zorg je ervoor dat je datamanipulatie klopt. Wil je meer over Python, bekijk dan onze Python Cheat Sheet voor beginners, onze gids Hoe leer je Python en onze Python-cursussen.

Adel Nehme

Auteur

Adel Nehme

Adel is docent Data Science, spreker en VP Media bij DataCamp. Adel heeft diverse cursussen en live trainingen uitgebracht over data-analyse, machine learning en data engineering. Hij is gepassioneerd over het verspreiden van datavaardigheden en data-geletterdheid binnen organisaties en de wisselwerking tussen technologie en de samenleving. Hij heeft een MSc in Data Science and Business Analytics. In zijn vrije tijd vind je hem vaak met zijn kat Louis.

FAQs

Hoe controleer je of een string een integer is in Python?

Om te controleren of een string een integer voorstelt, kun je de methode str.isdigit() gebruiken als de string alleen uit cijfers bestaat en geen teken (+/-) of decimalen bevat:

string = "42"
if string.isdigit():
    print("The string is an integer.")
else:
    print("The string is not an integer.")

Voor strings die mogelijk een teken (+/-) bevatten, kun je een robuustere methode gebruiken:

string = "-42"
try:
    int(string)
    print("The string is an integer.")
except ValueError:
    print("The string is not an integer.")
Hoe zet je een integer om naar een string in Python?

Gebruik de functie str() om een integer naar een string te converteren. Bijvoorbeeld:

number = 42
string_number = str(number)
print(string_number)  # Output: "42"
Wat moet ik doen als de string een decimaal getal bevat en ik deze naar een integer wil converteren?

Zet de string eerst om naar een float met de functie float() en cast hem daarna naar een integer met int(). Bijvoorbeeld:

decimal_string = "13.5"
converted_integer = int(float(decimal_string))
print(converted_integer)  # Output: 13

Onderwerpen

Gerelateerd