2011-11-22 35 views
2

我想在Python中計算這個簡單的表達式:數字在給定的範圍內,如果循環python

如果一個數字大於-1.0,小於1.0做某事。

我嘗試這樣做:

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

但事實證明,它僅評估的第二部分(X < '1.0')。 我也試過

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

但奇怪的是我沒有得到我想要的東西。任何建議請?

+0

你得到什麼輸出?你有沒有嘗試刪除引號? – Stedy

+0

什麼也沒有。它應該寫一行,如果這是滿意的,無論如何我試圖刪除引號,但它並沒有幫助 – eikonal

+3

'x'的值是什麼?這是否也是一個字符串?如果是這樣,你可以用'float(x)'將它轉換爲浮點值。所以你的if語句是:'if -1.0 srgerg

回答

7

您正在比較字符串,而不是數字。

if x > -1.0 and x < 1.0: 
    pass 

將做數字比較。

+2

'if -1.0

+0

它不工作....實際上至少字符串正在做一些事情,只有數字我沒有得到任何錯誤,但它也沒有做任何事情。 – eikonal

+0

@eikonal:什麼類型是'x'?它是一個字符串還是一個數字?您可能需要首先將'x'轉換爲浮點數('float(x)'),然後才能對其進行數字比較。 –

2

您不希望將數字放在引號中 - 這會導致字符串比較,而不是數字比較。你想

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

你在做的是在比較x與字符串值'-1.0'或'1.0',而不是雙倍值。請嘗試以下操作:

if x > -1.0 and x < 1.0: 
2

正如其他答案所述,您需要刪除引號,以便與數字而不是字符串進行比較。

然而,使用沒有這些問題的答案Python的chained comparisons

if -1.0 < x < 1.0: 
    DoSomething 

這相當於if x > -1.0 and x < 1.0,但更有效,因爲x只計算一次。

+0

我嘗試過,但它看起來根本沒有評估。我的意思是我沒有得到任何錯誤,但任何結果或者... x是簡單的格式0.1或-0.3等等,在+/- 3之間的範圍 – eikonal

+0

嘗試'if -1.0