Sammenligning af Strenge
Strengsammenligninger i Python er som standard store- og småbogstavsfølsomme. Hvis brugerinput kan variere i brugen af store og små bogstaver eller indeholde ekstra mellemrum, bør normalisering foretages før sammenligning. En enkel og pålidelig metode er at fjerne unødvendige mellemrum og standardisere bogstavstørrelse før ligheds- eller præfiks-/suffixkontrol.
Store- og småbogstavsfølsomhed vs. ufølsomhed
Som standard er "Apple" == "apple" False. For at ignorere forskel i bogstavstørrelse, normaliser begge sider.
123a = "Hello" b = "heLLo" print(a.lower() == b.lower()) # True
casefold() er en stærkere, internationalt venlig variant af lower() og er et bedre standardvalg til sammenligninger uden hensyn til store og små bogstaver.
123s1 = "straße" s2 = "STRASSE" print(s1.casefold() == s2.casefold()) # True
Trim og sammenlign
Brugere tilføjer ofte mellemrum ved en fejl. Fjern indledende og afsluttende mellemrum før sammenligning.
123raw = " admin " role = "ADMIN" print(raw.strip().casefold() == role.casefold()) # True
Kontrol af præfiks og suffiks
Brug startswith og endswith. For store- og småbogstavs-uafhængige kontroller, normaliser først.
1234fname = "Report_Final.PDF" print(fname.lower().endswith(".pdf")) # True prefix = "rep" print(fname.strip().casefold().startswith(prefix.casefold())) # True
Konsistent normaliseringspipeline
Vælg en simpel, gentagelig rækkefølge:
- Fjern ydre mellemrum med
.strip(); - Standardiser store/små bogstaver med
.casefold()(eller.lower()hvis du foretrækker det); - Brug derefter
==,in,startswith,endswitheller andre tjek.
1. Hvilken linje udfører et case-insensitive lighedstjek korrekt?
2. Givet s = " Hello ", hvilket udtryk returnerer True for et case-insensitive lighedstjek med "hello", hvor der ses bort fra omkringliggende mellemrum?
3. Hvilken påstand er mest præcis for robust sammenligning uden hensyn til store og små bogstaver?
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
Can you explain the difference between `lower()` and `casefold()` in more detail?
Are there any situations where `casefold()` might not be appropriate?
Can you show more examples of normalizing user input before comparison?
Awesome!
Completion rate improved to 5
Sammenligning af Strenge
Stryg for at vise menuen
Strengsammenligninger i Python er som standard store- og småbogstavsfølsomme. Hvis brugerinput kan variere i brugen af store og små bogstaver eller indeholde ekstra mellemrum, bør normalisering foretages før sammenligning. En enkel og pålidelig metode er at fjerne unødvendige mellemrum og standardisere bogstavstørrelse før ligheds- eller præfiks-/suffixkontrol.
Store- og småbogstavsfølsomhed vs. ufølsomhed
Som standard er "Apple" == "apple" False. For at ignorere forskel i bogstavstørrelse, normaliser begge sider.
123a = "Hello" b = "heLLo" print(a.lower() == b.lower()) # True
casefold() er en stærkere, internationalt venlig variant af lower() og er et bedre standardvalg til sammenligninger uden hensyn til store og små bogstaver.
123s1 = "straße" s2 = "STRASSE" print(s1.casefold() == s2.casefold()) # True
Trim og sammenlign
Brugere tilføjer ofte mellemrum ved en fejl. Fjern indledende og afsluttende mellemrum før sammenligning.
123raw = " admin " role = "ADMIN" print(raw.strip().casefold() == role.casefold()) # True
Kontrol af præfiks og suffiks
Brug startswith og endswith. For store- og småbogstavs-uafhængige kontroller, normaliser først.
1234fname = "Report_Final.PDF" print(fname.lower().endswith(".pdf")) # True prefix = "rep" print(fname.strip().casefold().startswith(prefix.casefold())) # True
Konsistent normaliseringspipeline
Vælg en simpel, gentagelig rækkefølge:
- Fjern ydre mellemrum med
.strip(); - Standardiser store/små bogstaver med
.casefold()(eller.lower()hvis du foretrækker det); - Brug derefter
==,in,startswith,endswitheller andre tjek.
1. Hvilken linje udfører et case-insensitive lighedstjek korrekt?
2. Givet s = " Hello ", hvilket udtryk returnerer True for et case-insensitive lighedstjek med "hello", hvor der ses bort fra omkringliggende mellemrum?
3. Hvilken påstand er mest præcis for robust sammenligning uden hensyn til store og små bogstaver?
Tak for dine kommentarer!