Nummer in einem bestimmten Bereich, wenn Loop-Python

  • Ich versuche, diesen einfachen Ausdruck in Python zu berechnen:

    wenn eine Zahl größer als -1.0 ist und kleiner als 1.0 etwas tut.

    Ich habe folgendes versucht:

     if x > '-1.0' and x < '1.0':
        DoSomething
     

    aber es stellt sich heraus es wertet nur den zweiten Teil aus (x & lt; '1.0'). Ich habe es auch versucht

     if '-1.0' < x < '1.0':
        DoSomething 
     

    aber seltsamerweise verstehe ich nicht, was ich will. Irgendeinen Vorschlag bitte ????

    22 November 2011
    eikonal
5 answers
  • Sie vergleichen mit Zeichenfolgen und nicht mit Zahlen.

     if x > -1.0 and x < 1.0:
        pass
     

    Führt den Vergleich mit Zahlen durch .

    22 November 2011
    Matthew Iselin
  • Sie möchten die Zahlen nicht in Anführungszeichen setzen - das führt zu einem Zeichenkettenvergleich und nicht zu einem Zahlenvergleich. Sie möchten

     if x > -1.0 and x < 1.0:
        DoSomething
     
    22 November 2011
    srgerg
  • Wie bereits in anderen Antworten erwähnt, müssen Sie die Anführungszeichen entfernen, sodass Sie eher mit Zahlen als mit Strings vergleichen.

    In keiner dieser Antworten wurde jedoch Pythons verwendet verkettete Vergleiche :

     if -1.0 < x < 1.0:
        DoSomething 
     

    Dies ist äquivalent zu if x > -1.0 and x < 1.0, jedoch effizienter, da x nur einmal ausgewertet wird.

    22 November 2011
    Andrew Clark
  • In diesem Code vergleichen Sie x mit dem Zeichenfolgenwert '-1.0' oder '1.0' und nicht mit dem Doppelwert. Versuchen Sie Folgendes:

     if x > -1.0 and x < 1.0:
     
    22 November 2011
    jrubins
  • Das funktioniert auch:

     if abs(x) < 1.0
     
    14 May 2013
    user2264607