私はPythonには比較的新しいですが、プログラミングには比較的新しいです。 If条件が誤って処理しつつある、と「他」部分が印刷されていますPython条件が実行されない場合は、他の条件だけが処理されます。
if self.health_points <= -1 and self._foo__is_dead == False:
print("Enemy Terminated")
else:
print("Enemy is dead")
私は2つの変数をプリントアウトし、彼らは「14」の入力のための真の状態を作ります。それでも、なぜelse部分が実行されていますか? どうか私は間違っていますか?
class Enemy:
health_points = 5
_foo__is_dead = False
def set_hp(self,points_to_set):
if self._foo__is_dead == False:
self.health_points = points_to_set
else:
print("Enemy is already dead")
def attack(self):
print("Hit confirmed")
self.health_points -= 1
if self.health_points <= -1:
self._foo__is_dead = true
print(self._foo__is_dead)
print(self.health_points)
if (self.health_points <= -1 and self._foo__is_dead == False):
print("Enemy Terminated")
else:
print("Enemy is dead")
#Connected to pydev debugger (build 172.3968.37)
#Enter hit points for first enemy14
#Hit confirmed
#False
#13
def reveal_hp(self):
if self._foo__is_dead == False:
print(self.health_points, " health points remaining")
else:
print("Enemy is already dead")
first_enemy = Enemy()
try:
one_hp = int(input("Enter hit points for first enemy"))
except ValueError or one_hp > 100:
print("Enter only numerical values and less than 100")
exit(0)
first_enemy.set_hp(one_hp)
first_enemy.attack()
first_enemy.reveal_hp()
をのみ、他の実行されている場合は、あなたの状態は常にfalseであることを意味しています。あなたは '_foo__is_dead'があなたの考えだと確信していますか?また、別のフラグを立てて死を追跡することは、過度に複雑に思えます。ヘルス値に関して定義されている 'isDead'を定義する方が簡単です。 – Carcigenicate
ようこそStackOverflowへ。ヘルプドキュメントの投稿ガイドラインを読み、それに従ってください。 [最小、完全で検証可能な例](http://stackoverflow.com/help/mcve)がここに適用されます。 MCVEコードを投稿して問題を正確に記述するまでは、効果的にお手伝いすることはできません。 投稿したコードをテキストファイルに貼り付け、説明した問題を再現できるはずです。 – Prune
最初の句(負のHP)が偽(その時点でHP = 13)しているため、 'else'部分が実行されています。これは 'if'文がどのように動作するかです。あなたはどこで混乱していますか? – Prune