2012-11-26 35 views
0
Battery_Initial = raw_input("Enter Current Capacity:")) 

if Battery_Initial < 0: 
    print 'Battery Reading Malfunction' 

elif Battery_Initial > 80: 
    print 'Battery Reading Malfunction' 

這是我的計劃至今。我想知道是否有一種方法只允許0.5,1.0,1.5等輸入,基本上以0.5的間隔。小數絆倒計劃

回答

2

您需要使用float()而不是int(),因爲int()期望十進制輸入不會浮動。

Battery_Initial = float(raw_input("Enter Current Capacity:")) 

輸出:

$ python so27.py 
Enter Current Capacity:0.5 

$ python so27.py 
Enter Current Capacity:81.1 
Battery Reading Malfunction 

$ python so27.py 
Enter Current Capacity:-1.2 
Battery Reading Malfunction 

$ python so27.py 
Enter Current Capacity:-1 
Battery Reading Malfunction 

使用這樣的事情:

In [271]: [i/float(2) for i in range(1,10)] 
Out[271]: [0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5] 

用法:

if Battery_Initial in (i/float(2) for i in range(1,10)): 
     #do something here 

或按照@Joran Beasley的建議:

if Battery_Initial % 0.5 ==0: 
    #do something here 
+0

謝謝,但我想知道如何只允許0.5間隔輸入。 –

+0

例如0.5,1.0,1.5,但不允許1.7 –

+0

'打印1.5%0.5 == 0'只是使用浮點模? –