je la pièce suivante de code qui ne fonctionne pas la façon dont je pense à tout ...vraiment maladroit (apparemment simple) bug avec des comparaisons entières de python
current_frame = 15 # just for showcasing purposes
g_ch = 7
if (current_frame != int(row[0])) and (int(row[1]) != g_ch):
current_frame = int(row[0])
print "curious================================="
print current_frame
print row
print current_frame, " != ", int(row[0]), ", ", current_frame != int(row[0])
print "========================================"
qui imprime pour chaque cas particulier:
curious=================================
15
['15', '1', 'more data'] 15 != 15 , False
========================================
Cela ne doit évidemment jamais entrer dans l'instruction if, car l'égalité est fausse. Pourquoi cela arrive-t-il?
edit: J'ai aussi essayé ceci avec! = Au lieu de 'n'est pas', et j'ai obtenu les mêmes résultats.
L'égalité des valeurs ne doit pas être confondue avec l'identité. – recursive
Puisque vous dites que cela se produit avec '! =' Et non ', omettez 'current_frame = int (row [0])' et montrez 'print repr (current_frame)' et 'print repr (row [0]) ' – unutbu
belle prise unutbu. merci – ahhtwer