TypeError: tipo (s) de operando no compatibles para /: ‘str’ e ‘int’

En Python 2.7:

a=80 b=100 def status(hp, maxhp): print "You are at %r percent health." % hp*100/maxhp status(a,b) 

Devoluciones:

TypeError: tipo (s) de operando no compatibles para /: ‘str’ e ‘int’

Ya he intentado poner int () alrededor de cada variable y cada combinación de variables.

% operador % tiene mayor prioridad que * o / .

Lo que quisiste decir es:

 "You are at %r percent health." % (hp * 100 / maxhp) 

Lo que tienes es:

 ("You are at %r percent health." % hp) * 100 / maxhp 

Edición: en realidad, estoy equivocado. Tienen la misma prioridad y, por lo tanto, se aplican de izquierda a derecha.

Docs: precedencia del operador

debe ajustar los paréntesis alrededor de la expresión, para que se evalúe por completo antes de intentar que el resultado se sustituya en la cadena.

algo como:

 print "my string with this '%d' value" % (hp * 100 / maxhp)