Hur man konverterar sträng till int i python

Lösningsförhandsvisning: Konvertera en numerisk sträng medint(). För icke -decimala ingångar (binär, hex) passerar en bas. Lägg till felhantering eller förvalidering för att hantera ogiltig inmatning.

Metod 1: Konvertera en decimal numerisk sträng med int ()

Steg 1:Förvara eller läs den numeriska strängen.

s = "42"

Steg 2:Konvertera strängen till ett heltal.

n = int(s)

Steg 3:Använd heltalet i beräkningar eller skriv ut den.

print(n * 2)  # 84

Dricks:int()ignorerar ledande/släpande Whitespace och stöder valfria tecken som"+17"eller" -3 ".

Metod 2: Analyssträngar i andra baser (binär, hex, oktal)

Steg 1:Identifiera basen för din sträng (2 för binär, 8 för Octal, 16 för hex).

Föreslagen läsning:

Steg 2:Passera basen som det andra argumentet tillint().

# Binary
b = "1010"
n = int(b, 2)   # 10

# Hexadecimal
h = "1A"
m = int(h, 16)  # 26

Obs: Du kan använda valfri bas mellan 2 och 36.

Metod 3: Hantera ogiltig ingång på ett säkert sätt (försök/utom eller förkontroll)

Steg 1:Förpacka konverteringen i ett försök/utom block för att fånga dåliga input.

s = "abc"
try:
    n = int(s)
    print(n)
except ValueError:
    print("Invalid input: cannot convert to integer")

Steg 2:Valfritt valfritt valfritt medstr.isdigit()för siffriga ingångar.

s = "12345"
if s.isdigit():
    print(int(s))
else:
    print("Not a pure digit string")

Kontrollera:str.isdigit()accepterar inte tecken ("-5") eller decimaler ("12.3"). Använd försöket/utom sökvägen för dessa fall.

Metod 4: Konvertera flottörliknande strängar till Int

Steg 1:Konvertera strängen till en flottör och sedan till en int.

s = "88.8"
n = int(float(s))  # 88 (truncates toward zero)

Obs: Detta trunkerar den fraktionella delen. Om du behöver avrundas, konvertera tillfloatoch ansökaround()föreint().

Metod 5: Konvertera en lista över numeriska strängar

Steg 1:Kartlägga varje element genomintatt bygga en ny lista.

xs = ["1", "2", "3"]
nums = list(map(int, xs))  # [1, 2, 3]

Steg 2:Alternativt använder du en listförståelse.

nums = [int(x) for x in xs]

Tips: Om objekt kan vara ogiltiga, linda in konverteringen i en funktion som använder försök/utom och tillämpa den medmapeller en förståelse.

Vanliga fallgropar

  • Passerar icke-numerisk text (till exempel"hello") höjerValueError. Använd försök/förutom att hålla ditt program igång.
  • Analysera en flottörsträng (till exempel"12.5") medint()misslyckas; konvertera tillfloatFörst om trunkering är acceptabel.
  • Parsing basspecifika strängar utan rätt bas ger felaktiga resultat eller fel. Passera alltid basen när strängen inte är decimal.

Medint()För direkt parsing, ett basargument för icke-decimala strängar och enkel validering, kan du konvertera ingångar säkert och hålla din kod robust.

Related Posts