• Productupdates

Hoe converteer je een string naar een integer in Python? (Stapsgewijze handleiding)

Hoe converteer je een string naar een integer in Python? (Stapsgewijze handleiding)

Inhoudsopgave

Het omzetten van strings naar integers in Python is essentieel voor het uitvoeren van berekeningen, het beheren van gebruikersinvoer en het efficiënt verwerken van gegevens. Er worden verschillende technieken gebruikt voor het omzetten van strings naar integers, waaronder het afhandelen van fouten en het valideren van invoer tijdens het proces.

Zo moeten numerieke gegevens in tekstvorm vaak worden omgezet naar integers voordat wiskundige bewerkingen kunnen worden uitgevoerd. Python biedt ingebouwde methoden om dergelijke conversies te vergemakkelijken.

Dit artikel onderzoekt de beschikbare methoden voor het converteren van strings naar integers in Python en legt uit hoe je deze effectief kunt gebruiken.

Int-datatype in Python

Integers, of het int-datatype, vertegenwoordigen hele getallen zonder fractionele componenten, zoals -5, 0 en +5. Ze worden in Python vaak gebruikt voor verschillende wiskundige bewerkingen, waaronder optellen, aftrekken, vermenigvuldigen, delen en vergelijken.

Hieronder volgt een voorbeeld van hoe gehele getallen worden weergegeven in Python.

number = 42
print(number)
print(type(number))

String-datatype in Python

Strings in Python worden weergegeven met behulp van het str-datatype. Het zijn reeksen tekens die zijn omsloten door enkele aanhalingstekens (') of dubbele aanhalingstekens ("). Strings zijn onveranderlijk, wat betekent dat hun inhoud niet kan worden gewijzigd nadat ze zijn aangemaakt.

Hieronder volgt een voorbeeld van hoe strings in Python worden weergegeven en gebruikt:

begroeting = ‘Welkom bij Python’
taal = “Python leren is leuk”
print(begroeting)
print(taal)

Wanneer moet u strings omzetten naar gehele getallen in Python?

Als programmeur zijn er veel scenario's waarin het omzetten van strings naar gehele getallen essentieel is. Hier zijn enkele veelvoorkomende situaties:

  • Verwerken van gebruikersinvoer: Wanneer gebruikers numerieke invoer als tekst verstrekken, is het omzetten van deze strings naar gehele getallen noodzakelijk voor berekeningen of validatie.
  • Gegevens uit bestanden lezen: Numerieke gegevens die als tekst in bestanden zijn opgeslagen, moeten vaak worden geconverteerd naar gehele getallen voor verdere analyse of berekening.
  • Sorteren en vergelijken: Het converteren van strings naar gehele getallen zorgt voor nauwkeurige numerieke vergelijkingen en sortering, omdat hierdoor wordt voorkomen dat getallen als tekst worden behandeld.
  • Databasebewerkingen: Bij het werken met databases is het converteren van stringgegevens naar gehele getallen belangrijk voor het correct indexeren, filteren en uitvoeren van wiskundige bewerkingen op numerieke velden.

Hoe converteer je int naar string Python?

Voor de conversie van int naar string Python kun je de str()-functie gebruiken. Deze methode gedraagt zich op dezelfde manier als andere conversiefuncties, maar geeft het resultaat weer als een string.

De str()-functie detecteert automatisch de basis van de invoer als een relevant voorvoegsel wordt opgegeven, en converteert deze naar het juiste decimale formaat.

Hier is een voorbeeld:

integer_val = 256
print(str(integer_val)) # Converteert int naar string python
print(type(str(integer_val)))
negative_integer = -512
print(str(negative_integer)) # Converteert negatief geheel getal naar string
print(type(str(negative_integer))) # Controleert of het type string is
large_number = 1234567890
print(str(large_number)) # Converteert groot geheel getal naar string
print(type(str(large_number))) # Controleert of het type string is
binary_num = 0b10101
print(str(binary_num)) # Converteert binair naar string
print(type(str(binary_num))) # Controleert of het type string is

Hoe converteer je een string naar int in Python?

Je kunt drie methoden gebruiken om een string naar int te converteren in Python:

  • int() constructor
  • eval() functie
  • ast.literal_eval() functie

Methode 1: String naar int converteren in Python met behulp van int() constructor

De int() constructor is een van de meest voorkomende en eenvoudige methoden om strings naar integers te converteren in Python. Het maakt deel uit van de ingebouwde int-klasse en creëert een nieuw integer-object wanneer het wordt aangeroepen.

De basissyntaxis voor de constructor int() is als volgt:

int(y, base=10)

Hier is y de string of het getal dat moet worden geconverteerd, en het argument base specificeert het getallenstelsel (de standaardwaarde is 10 voor decimaal).

U kunt een string eenvoudig als volgt converteren naar een geheel getal:

num = int(‘20’)
print(“String naar positief geheel getal -”, num)
num = int(“-25”)
print(“String met negatief geheel getal -”, num)

U kunt ook drijvende-kommagetallen omzetten naar gehele getallen door een float door te geven aan int():

num = int(25.76)
print(“Float naar int -”, num)

Wanneer u echter een niet-decimale geheel getalstring probeert om te zetten zonder de basis te specificeren, zal dit een foutmelding opleveren.

int(“G5”)

Standaard gaat de functie int() ervan uit dat de basis 10 (decimaal) is. Als je een string moet converteren die een getal in een andere basis vertegenwoordigt, moet je de basis specificeren:

hex_value = ‘7F’
print(“Hexadecimaal naar decimaal -”, int(hex_value, base=16))

Een veelvoorkomende logische fout treedt op wanneer u een string doorgeeft die een getal in een niet-decimale basis vertegenwoordigt, maar vergeet de basis op te geven. In dit geval behandelt int() de string standaard als een decimaal getal:

binary_value = “1101011”
print(“Beoogd binair naar decimaal resultaat -”, int(binary_value))

In dit geval interpreteert de functie de binaire string ten onrechte als een decimaal getal. Om dit te voorkomen, moet u altijd de juiste basis specificeren:

binary_value = “1101011”
print(“Binair naar decimaal resultaat -”, int(binary_value, base=2))
octal_value = “157”
print(“Octaal naar decimaal resultaat -”, int(octaal_waarde, basis=8))
hex_waarde = ‘2A’
print(“Hexadecimaal naar decimaal resultaat -”, int(hex_waarde, basis=16))

Een van de meest voorkomende uitzonderingen bij het gebruik van int() is de ValueError. Als int() een tekenreeks ontvangt die niet naar een geheel getal kan worden geconverteerd, wordt deze uitzondering gegenereerd. Om dit te voorkomen, is het een goede gewoonte om de invoer te valideren of een try-except-blok te gebruiken.

try:

 num = int(“12.34”)

except ValueError:

 num = 0
 print(“Ongeldige invoer, standaardwaarde toewijzen:”, num)

Dit betekent dat bij het gebruik van de int()-constructor, het belangrijk is om gevallen te behandelen waarin de string mogelijk geen geldig geheel getal is en om de juiste basis voor niet-decimale getallen te specificeren om logische fouten en uitzonderingen te voorkomen.

Invoer valideren met isdigit()

U kunt de methode isdigit() gebruiken om te controleren of een string alleen uit cijfers bestaat. Dit is handig wanneer u moet valideren of de invoerstring kan worden geconverteerd naar een geheel getal met behulp van de functie int().

Hier is een voorbeeld van hoe u dit kunt doen:

user_input = input(“Geef een getal op: ”)

if user_input.isdigit():

 number = int(user_input)
 print(“Het getal is:”, number)

else:

 print(“Ongeldige invoer, voer een geldig getal in.”)

In dit geval zorgt isdigit() ervoor dat de invoer alleen cijfers bevat en veilig kan worden omgezet naar een geheel getal.

Uitzonderingen afhandelen met try-except

Een alternatieve aanpak is het gebruik van een try-except-blok om uitzonderingen af te handelen die optreden bij het omzetten van een string naar een geheel getal. Dit is handig wanneer u niet zeker bent van het formaat van de invoer en fouten op een elegante manier wilt afhandelen. Hier is een voorbeeld:

user_input = input(“Voer een getal in: ”)

try:

 number = int(user_input)
 print(“Het getal is:”, number)

except ValueError:

 print(“Oeps! Dat lijkt geen geldig getal te zijn. Probeer het nog eens.”)

In dit voorbeeld probeert het programma de invoer om te zetten naar een geheel getal. Als de invoer geen geldig getal is (zoals letters of symbolen), wordt er een ValueError gegenereerd en geeft het programma een foutmelding weer zonder te crashen.

Methode 2: String omzetten naar int in Python met behulp van de functie eval()

Met de ingebouwde functie eval() kunt u willekeurige Python-expressies evalueren op basis van string- of gecompileerde code-invoer. Dit is handig wanneer u Python-expressies dynamisch moet evalueren.

Wanneer u een stringargument doorgeeft aan eval(), compileert het dit tot bytecode en evalueert het als een Python-expressie, waardoor u strings kunt converteren naar gehele getallen. Hieronder vindt u enkele voorbeelden:

print(“5 - ”, eval(‘5’))
print(“4 * 7 - ”, eval(“4 * 7”))
print(“3 ** 4 - ”, eval(“3 ** 4”))
print(“20 + 30 - ”, eval(“20 + 30”))
print(“som van 4, 5 en 6 - ”, eval(“sum([4, 5, 6])”))
value = 50
print(“(50 + 10) * 2 - ”, eval(“(value + 10) * 2”))

Net als int() kan eval() worden gebruikt om niet-decimale strings om te zetten in gehele getallen. Bijvoorbeeld:

hex_string = “0x1A”
oct_string = “0o12”
binary_string = “0b1101”
hex_value = eval(hex_string)
oct_value = eval(oct_string)
binary_value = eval(binary_string)
print(hex_value)
print(oct_value)
print(binary_value)
print(type(hex_value))
print(type(oct_value))
print(type(binary_value))

U kunt eval() ook gebruiken om uitdrukkingen met variabelen te evalueren, iets wat int() niet kan. Bijvoorbeeld:

a = 15
b = eval(“a * 3”)
print(b)
print(type(b))

Het belangrijkste probleem bij het gebruik van eval() is dat het willekeurige code uitvoert, wat tot onbedoelde gevolgen kan leiden als het niet correct wordt afgehandeld. Van de drie methoden is eval() de minst veilige optie vanwege de mogelijkheid om schadelijke code uit te voeren.

Desondanks biedt het meer flexibiliteit en kracht dan de andere methoden. Om veiligheidsrisico's te beperken, is het cruciaal om eval() te gebruiken met zorgvuldige invoervalidatie. Dit omvat het controleren van invoerformaten, het controleren of de gegevenstypen correct zijn, het beperken van de invoerlengte en het verifiëren van de invoer aan de hand van patronen of bereiken om misbruik te voorkomen.

Methode 3: String converteren naar int in Python met behulp van de functie ast.literal_eval()

De functie literal_eval() maakt deel uit van de Python-module ast, wat staat voor Abstract Syntax Tree. Deze module helpt bij het verwerken van Python-syntaxisstructuren door hun abstracte grammatica te interpreteren.

De functie literal_eval() evalueert uitdrukkingen die beperkt zijn tot veilige Python-gegevenstypen, zoals strings, getallen, tuples, lijsten, woordenboeken, sets, booleans en None. Hoewel dit niet de meest aanbevolen aanpak is voor het converteren van strings naar integers, kan literal_eval() onder bepaalde omstandigheden toch voor dergelijke conversies worden gebruikt.

Om de functie literal_eval() te gebruiken, moeten we deze eerst importeren. Hier is een voorbeeld:

from ast import literal_eval
number = literal_eval(“1234”)
print(number)
print(type(number))

Naast het converteren van strings naar gehele getallen, kan literal_eval() ook worden gebruikt voor het converteren van andere geldige Python-literals, zoals booleans, lijsten, woordenboeken en tuples. Bijvoorbeeld:

from ast import literal_eval
string = ‘{“name”: “John”, ‘age’: 30}’
dict_data = literal_eval(string)
print(dict_data)

In tegenstelling tot eval() kan literal_eval() echter geen wiskundige uitdrukkingen met operatoren evalueren, zoals “5 + 6”. Als u dit probeert, wordt een ValueError-uitzondering gegenereerd. Laten we een voorbeeld nemen:

from ast import literal_eval
expression = “5 + 6”
result = literal_eval(expression)
print(result)

Om deze situatie op te lossen, kunt u een try-except-blok gebruiken, zoals hieronder weergegeven:

from ast import literal_eval
expression = “5 + 6”

try:

 result = literal_eval(expression)

except ValueError:

 result = 0

print(result)

In dit geval wordt 0 toegewezen aan het resultaat als literal_eval() een ValueError genereert.

Het belangrijkste voordeel van literal_eval() ten opzichte van andere methoden, zoals eval(), is de veiligheid. In tegenstelling tot eval() evalueert literal_eval() alleen letterlijke waarden en voert het geen potentieel schadelijke of willekeurige code uit. Bovendien biedt het een betere foutafhandeling, waarbij specifieke uitzonderingen worden gegenereerd in plaats van algemene uitzonderingen zoals TypeError.

Met welke factoren moet u rekening houden bij het converteren van strings naar gehele getallen in Python?

Bij het converteren van strings naar gehele getallen zijn er verschillende belangrijke factoren waarmee u rekening moet houden:

  • Valideer de invoer: Zorg ervoor dat de string een geldig geheel getal vertegenwoordigt voordat u de conversie uitvoert.
  • Behandel uitzonderingen: Strings die niet-numerieke tekens bevatten of leeg zijn, kunnen fouten veroorzaken. Gebruik try-except-blokken om deze uitzonderingen op een elegante manier af te handelen.
  • Witruimte verwijderen: verwijder onnodige spaties aan het begin of einde met de methode strip() om conversiefouten te voorkomen.
  • Numerieke basis controleren: controleer of de string de juiste numerieke basis heeft, zoals binair, octaal, decimaal of hexadecimaal, om onjuiste conversies te voorkomen.
  • Tekens beheren: houd rekening met positieve en negatieve tekens in de stringweergave om onverwachte resultaten te voorkomen.
  • Gebruik van bronnen: Hoewel Python zeer grote gehele getallen ondersteunt, kan het werken met extreem grote getallen veel bronnen vergen en de prestaties beïnvloeden.

Door deze aspecten aan te pakken, kunt u veelvoorkomende valkuilen vermijden en zorgen voor een soepel conversieproces van string naar geheel getal.

Conclusie

Het converteren van strings naar gehele getallen is een essentiële vaardigheid voor Python-ontwikkelaars. Dit artikel behandelt drie veelgebruikte methoden voor het converteren van string naar int in Python, waarbij de voordelen en beperkingen ervan worden belicht. We bespreken ook mogelijke fouten en bieden strategieën om deze op te lossen. Door met deze methoden te experimenteren, kunt u verschillende scenario's aanpakken en uw probleemoplossende vaardigheden verbeteren.

Heeft u meer vermogen nodig dan een VPS? Upgrade naar de dedicated server van BlueServers voor onovertroffen prestaties, schaalbaarheid en aanpasbaarheid met onbeperkt verkeer.

Share

Over de auteurs


scale 1
Ready to scale?

Start for free and unlock high-performance infrastructure with instant setup.

Get started arrow button

Help ons verbeteren — deel je feedback

Jouw mening helpt ons een betere service te bouwen.