Hoe te controleren of een variabele gelijk is aan één string of een andere string?

Dit werkt niet! Ik heb een variabele en ik heb het nodig om iets te doen wanneer het een van de waarden is, maar het zal de IF-verklaring niet invoeren. In Java if (var == "stringone" || "stringtwo")werkt. Hoe schrijf ik dit in Python?


Antwoord 1, Autoriteit 100%

Dit doet niet wat u verwacht:

if var is 'stringone' or 'stringtwo':
    dosomething()

Het is hetzelfde als:

if (var is 'stringone') or 'stringtwo':
    dosomething()

Dat is altijd waar, aangezien 'stringtwo'wordt beschouwd als een “echte” waarde.

Er zijn twee alternatieven:

if var in ('stringone', 'stringtwo'):
    dosomething()

of u kunt afzonderlijke gelijkheidstests schrijven,

if var == 'stringone' or var == 'stringtwo':
    dosomething()

Gebruik niet is, omdat isis vergelijkt object-identiteit. Je zou er soms mee kunnen wegkomen omdat Python-stagiairs veel snaren strijdt, net zoals je ermee zou kunnen wegkomen in Java omdat Java stagiairs veel snaren. Maar gebruik niet istenzij u echt een objectidentiteit wilt.

>>> 'a' + 'b' == 'ab'
True
>>> 'a' + 'b' is 'abc'[:2]
False # but could be True
>>> 'a' + 'b' is 'ab'
True  # but could be False

Antwoord 2, Autoriteit 15%

if var == 'stringone' or var == 'stringtwo':
    dosomething()

of meer pythonic,

if var in ['string one', 'string two']:
    do_something()

Antwoord 3, Autoriteit 3%

if var == 'stringone' or var == 'stringtwo':
    dosomething()

‘is’ wordt gebruikt om te controleren of de twee referenties worden verwezen naar hetzelfde object. Het vergelijkt het geheugenadres.
Blijkbaar zijn ‘stringon’ en ‘var’ verschillende objecten, ze bevatten gewoon dezelfde string, maar ze zijn twee verschillende gevallen van de klasse ‘Str’. Zodat ze natuurlijk twee verschillende geheugenadressen hebben, en het ‘is’ zal false retourneren.


Antwoord 4, Autoriteit 2%

Twee afzonderlijke cheques. Gebruik ook ==in plaats van isom te controleren op gelijkheid in plaats van identiteit.

if var=='stringone' or var=='stringtwo':
     dosomething()

Antwoord 5

for a in soup("p",{'id':'pagination'})[0]("a",{'href': True}):
        if createunicode(a.text) in ['<','<']:
            links.append(a.attrMap['href'])
        else:
            continue

het werkt voor mij.

Other episodes