if coin == 25 | 10 | 5:

If I replace the ‘|’ with ‘or’ the code runs just fine. I’m not sure why I can’t use ‘|’ in the same statement.

Doing the following doesn’t work either:

if coin == 25 | coin == 10 | coin == 5:

I know bitwise operators can only be used with integers, but other then that is there another difference from logical operators?

  • solrize@lemmy.world
    link
    fedilink
    arrow-up
    6
    ·
    1 day ago

    You want the keyword “or” rather than the bitwise operator. Alternatively, use “if coin in {25, 10, 5}”. The curly braces denote a set, which is implemented as a hash table, so the lookup will be fast even when the number of choices is large.

    • sugar_in_your_tea@sh.itjust.works
      link
      fedilink
      arrow-up
      2
      ·
      edit-2
      20 hours ago

      Consider using a tuple instead for potentially lower runtime cost on initialization and no accidental mutation:

      if coin in (25, 10, 5):
      

      If the list is long and used frequently, I’d go with the set.