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間隔で、0.5、1.0、1.5などの入力のみを許可する方法があるかどうか疑問に思っていました。

4

1 に答える 1

2

float ではなく 10 進数の入力が期待されるため、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
于 2012-11-26T21:47:51.280 に答える