Python Ikke alle argumenter som er konvertert under strengformatering

Python Ikke alle argumenter som er konvertert under strengformatering

Strengformatering er teknikken for å lage/lage en streng ved å erstatte plassholdere i en streng med verdier. Mens du utfører operasjoner på strenger, oppstår forskjellige feil i Python. Feilmeldingen “Ikke alle argumenter konvertert under strengformatering”Vises mens du prøver å formatere de gitte strengene ved å bruke den upassende syntaksen, eller ved å bruke modulo -operatøren”%”Med strenger og tall.

I denne Python -bloggen vil vi utforske forskjellige årsaker og løsninger på den gitte spesifiserte feilen. La oss starte med følgende innhold:

    • Hva er årsakene til denne feilen?
    • Løsninger for å fikse denne feilen

Hva er årsakene til feilen "ikke alle argumenter som er konvertert under strengformatering" -feil?

Den diskuterte feilen kan oppstå på grunn av flere årsaker, inkludert følgende:

Årsak 1: Bruke feil syntaks

Denne feilen kan oppstå når feil syntaks for modulooperatøren “%”Brukes til å påkalle og legge til de initialiserte verdiene. La oss se på eksemplet nedenfor:

name = "Joseph"
Alder = 23
output = "Mitt navn er og jeg er år gammel"%(navn, alder)
Print (Output)


I koden ovenfor, den feil syntaks for modulo -operatøren “%”Brukes til å plassere verdien av“Navn”Og“alder”Inne i strengen uten å bruke passende plassholdere, jeg.e., “%s”Og“%d" etc. mot datatypene.

Produksjon


Som et resultat blir den uttalte begrensningen møtt på grunn av de savnede plassholderne mot de påkalte verdiene.

Årsak 2: Bruke modulooperatør “%” med heltall og streng

Den andre årsaken til denne feilen kan være ved å bruke den diskuterte operatøren med heltall og streng. La oss for eksempel se på eksemplet nedenfor:

name = "45"
Alder = 23
utgang = navn % alder
Print (Output)


I ovennevnte kodebit, Modulo -operatøren “%”Er plassert mellom strengvariabelen“Navn”Og heltallvariabel”alder”For å returnere den tilsvarende resten.

Produksjon


Siden begge verdiene omfatter motstridende datatyper, kan ikke beregningen utføres, og den uttalte feilen blir møtt.

Løsninger for å fikse feilen “Ikke alle argumenter som er konvertert under strengformatering” -feil

Følgende er noen løsninger for å fikse den uttalte begrensningen i Python:

Løsning 1: Rett syntaksen ved å plassere passende plassholdere

For å fikse denne feilen, må vi påkalle de initialisere strengverdiene ved å plassere den tilsvarende plassholderen, i.e., “%s", følgende:

Navn = "John"
alder = "30"
output = "Mitt navn er %s og jeg er %s år gammel" %(navn, alder)
Print (Output)


I koden ovenfor, plassholderen “%s”Brukes i stedet for de krøllete seler””For å påkalle de initialiserte strengverdiene på riktig måte.

Produksjon


Som sett er de initialiserte strengverdiene tilgang til og vedlagt deretter.

Løsning 2: Bruke metoden “Format ()”

format()”Metodeformat den gitte/spesifiserte verdien i henhold til formatspesifikasjonen. Denne metoden kan også brukes til å formatere de påkalte verdiene direkte uten å bruke plassholdere.

Syntaks

Format (val, format)


I syntaks ovenfor:

    • Val”Tilsvarer verdien som må formateres.
    • format”Refererer til spesifikasjonen av hvordan verdien skal formateres.

Eksempel

La oss oversikt Følgende kode:

Navn = "John"
alder = "30"
output = "Mitt navn er og jeg er år gammel".Format (navn, alder)
Print (Output)


I kodeblokken ovenfor, "format()”Metoden brukes til å inneholde de påkalte strengverdiene som argumenter, og dermed returnerer og legger til verdiene på riktig måte.

Produksjon


Denne utgangen innebærer at strengverdiene blir hentet på riktig måte.

Løsning 3: Støping av datatypen

Feilen kan også løses ved å konvertere "streng" til "int Datatype via støping, som følger:

name = "45"
Alder = 23
utgang = int (navn) % alder
Print (Output)


I koden ovenfor er den initialiserte strengverdien støpt til “int”Og så modulo -operatøren”%”Brukes mellom standard og støpt heltall for å hente den tilsvarende resten.

Produksjon


Som sett blir resten hentet på riktig måte jeg.e., 45/23 = “22”.

Konklusjon

Ikke alle argumenter konvertert under strengformatering”Feil kan løses ved å korrigere syntaksen til modulo -operatøren”%”Via plassering av passende plassholdere, eller bruke“format()”Metode i stedet for % operatør, eller konvertere“streng”Inn i“int”Via Casting the Datatype. Denne Python -guiden diskuterte flere årsaker og løsninger for å løse den diskuterte begrensningen.