看板 Python 關於我們 聯絡資訊
import random class Witch: def __init__(self,name,level): self.name=name self.level=level def __repr__(self): return ('{}(lv{})'.format(self.name,self.level)) def witchcraft_attack(self): return random.randint(1,10)*self.level class FireWitch(Witch): def __init__(self,name,level,firestaff): super().__init__(name,level) self.firestaff=firestaff def witchcraft_attack(self): base_attack=super().witchcraft_attack() if self.firestaff== True: print("女巫噴火啦") return base_attack*2 else: return base_attack firewitch=FireWitch('火焰女巫',5,random.choice([False,True])) 目前想說 random ture * 2  false * 1 但執行 firewitch.witchcraft_attack() 女巫噴火啦 Out[139]: 100 firewitch.witchcraft_attack() 女巫噴火啦 Out[140]: 80 firewitch.witchcraft_attack() 女巫噴火啦 Out[141]: 50 女巫一直噴火 感覺random 一直跑ture 為啥不會跑false呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 117.56.227.246 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1569474575.A.19B.html ※ 編輯: gogogo123 (117.56.227.246 臺灣), 09/26/2019 13:10:23 ※ 編輯: gogogo123 (117.56.227.246 臺灣), 09/26/2019 13:29:32
MARGHT: 因為你只有在初始時候決定跑或不跑 09/26 13:46
TitanEric: Boolean比較建議用is不要用== 09/26 14:43
TitanEric: 或者是直接if bool_val 09/26 14:44
abr810416: 好奇為什麼用is比較好 09/27 20:55
sxy67230: Python 中的==是做值的比對,is是直接查詢位址,類似c 09/28 09:27
sxy67230: 的指針。雖然說效能上沒有明顯的差別,但是就是可讀性 09/28 09:27
sxy67230: 而已,一般你要做數值或是字串才建議用== 09/28 09:27