jeudi 28 janvier 2021

Python if test condition fails when used with or

Greetings python experts. I had written an if condition as follows that fails to be false for objects that should be false. I am writing in python 3.8.5. Note instance_list in this example contains a list of resources that are in various states. I only want to append vm_instance_list with resources that are not in a TERMINATED or TERMINATING state.

instance_results = compute_client.list_instances(
    compartment_id = compartment_id).data
vm_instance_list = []
for instance in instance_results:
    if instance.lifecycle_state != "TERMINATED" or instance.lifecycle_state != "TERMINATING:
        vm_instance_list.append(instance)

The above code appends vm_instance_list with every object in the list instance_results, aka each condition is interpreted as True for objects that are in a TERMINATED or TERMINATING lifecycle state. I have had to re-write to nest the if conditions, which works.

for instance in instance_results:
    if instance.lifecycle_state != "TERMINATED:
        if instance.lifecycle_state != "TERMINATING":
            vm_instance_list.append(instance)

I have no idea what why I have had to nest the above if statements and would appreciate if anyone could share some insights.

Thanks so much,

  • Hank

Aucun commentaire:

Enregistrer un commentaire