0

配列の [0][0] エントリが 1 または 2 に等しくない場合、プログラムがエラー メッセージを出力するという条件を作成しようとしています。私はそれを機能させることができません。それは、ロジックを正しくできないことが原因であることを知っています。

try:
    with open(input_script) as input_key:
        for line in input_key.readlines():
            x=[item for item in line.split()]
            InputKey.append(x)
    if InputKey[0][0] == 1 or 2:     #This is where my condition is being tested.
        print '.inp file succesfully imported' #This is where my success (or fail) print comes out.
    else:
        print 'failed'
except IOError:
    print '.inp file import unsuccessful. Check that your file-path is valid.'                                
4

2 に答える 2

2

あなたのif状態は次のように評価されます。

if (InputKey[0][0] == 1) or 2: 

これは次と同等です:

if (InputKey[0][0] == 1) or True: 

これは常に に評価されTrueます。


以下を使用する必要があります。

if InputKey[0][0] == 1 or InputKey[0][0] == 2:

また

if InputKey[0][0] in (1, 2):

InputKey[0][0]タイプが の場合、それをusingにstring変換できます。それ以外の場合はまたはと一致しません。intint(InputType[0][0])12

それとは別に、forループは次のように変更できます。

for line in input_key.readlines():         
    # You don't need list comprehension. `line.split()` itself gives a list
    InputKey.append(line.split())  
于 2013-07-21T07:35:30.877 に答える
2

if InputKey[0][0] == 1 or 2:以下と同じです:

(InputKey[0][0] == 1) or (2)

And2True( bool(2) is True) と見なされるため、この will ステートメントは常に True になります。

Python にこれを次のように解釈させます。

InputKey[0][0] == 1 or InputKey[0][0] == 2

あるいは:

InputKey[0][0] in [1, 2]
于 2013-07-21T07:36:14.380 に答える