前提・実現したいこと
ダメージ計算機を作ろうとしたが、enchantメソッドの操作によってはエラーが発生してしまう。
エラーメッセージ
TypeError: unsupported operand type(s) for +: 'float' and 'NoneType'
該当のソースコード
Python
1enchants=1 2 3def enchant(ench): 4 global enchants 5 flag=True 6 if not str(ench).isdigit(): 7 if ench=='sharpness': 8 n=int(input('level:'))*0.05 9 elif ench=='smite': 10 n=int(input('level:'))*0.08 11 elif ench=='bane of arthropods': 12 n=int(input('level:'))*0.08 13 elif ench=='cubism': 14 n=int(input('level:'))*0.1 15 elif ench=='giant killer': 16 HP=int(input('playerHP:')) 17 n=(int(input('enemyHP:'))-HP)/HP*int(input('level:'))*0.1 18 if n<0: 19 n=0 20 elif ench=='first strike': 21 n=int(input('level:'))*0.25 22 elif ench=='ender slayer': 23 n=int(input('level:'))*0.12 24 elif ench=='impaling': 25 n=int(input('level:'))*0.125 26 elif ench=='execute': 27 HP=int(input('maxHP:')) 28 n=(HP-int(input('curremtHP:')))/HP*int(input('level:'))*0.002 29 elif ench=='triple strke': 30 n=int(input('level:'))*0.1 31 elif ench=='prosecute': 32 n=int(input('curremtHP:'))/int(input('maxHP:'))*int(input('level:'))*0.001 33 elif ench=='titan killer': 34 n=int(input('enemyDEF:'))*int(input('level:'))*0.02 35 else: 36 flag=False 37 if flag: 38 enchants+=n 39 if ench!='end': 40 enchant(input('enchants:')) 41 else: 42 return float(enchants) 43 44def calc(damage,strength,critical,enchants,combat,armor,other): 45 initial=(5+damage)*(1+strength/100) 46 multiplier=1+(combat*0.04)+enchants+other 47 finaldamage=int(initial*multiplier*armor) 48 criticaldamage=int(finaldamage*(1+critical/100)) 49 print('final damage:',finaldamage) 50 print('final damage(critical)):',criticaldamage) 51 52calc(int(input('damage:')),int(input('strength:')),int(input('critical:')),enchant(input('enchants:')),int(input('combat:')),int(input('armor:')),int(input('other:'))) 53 54
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。