python - ascii_lowercase - Flotas Iterables?
string ascii_lowercase python 3 (3)
Esto debería solucionar tu problema:
parser.get(''money_value'',''Amount'',True)
por supuesto, también puedes usar:
PlrMny = float(PlrMny) -.5
parser.set(''money_value'',''Amount'',str(PlrMny))
El problema es que parser.get espera un valor de cadena pero está leyendo un flotante. Entonces, las dos opciones que tiene es guardar el valor como una cadena (eso es lo que está haciendo la segunda opción), o leer el valor usando raw = True (eso es lo que está haciendo la primera opción).
Estoy tratando de hacer un juego donde el jugador se deduce .5 de un valor en un archivo ini cada vez que juega. Sin embargo, sigo recibiendo un error y no estoy seguro de qué hacer. Este es mi código No se preocupe por los comentarios, esos son para mí, y cierro el ciclo while más tarde. Esto es solo una parte del código. Por cierto, el código funciona, simplemente no esto. Gracias.
def rerun():
import ConfigParser
from ConfigParser import ConfigParser
parser = ConfigParser()
parser.read(''Game.ini'')
PlrMny = parser.get(''money_value'', ''Amount'')
#config = ConfigParser.ConfigParser()
configFile = open("C:/Python27/Game.ini", "w")
#config.read(configFile)
#valueamount = config.getfloat("section","starting_value")
print "You will be given a $10 starting amount. Each game costs $.50 to play and is
deducted when you input the first value."
print "/nGetting one match gives $1 and the output is multiplied by 2 for each extra
match."
print "/nCurrent Amount =",PlrMny,
def gamble():
PlrMny = parser.get(''money_value'', ''Amount'')
import random
import sys
number1 = random.randint (1, 20)
number2 = random.randint (1, 20)
number3 = random.randint (1, 20)
number4 = random.randint (1, 20)
number5 = random.randint (1, 20)
def input():
c = 0
print "/n/n/n/nTry guess what five numbers the computer will guess. Type ''100''
in any of the inputs to close program prematurely"
print "Money =",PlrMny,
#parser.set("money_value", "Amount",10000)
#parser.write (''Game.ini'')
while True:
try:
User11 = int(raw_input( "/n/nNumber 1 : "))
parser.set(''money_value'',''Amount'',float(PlrMny) - .5)
parser.write (configFile)
str(PlrMny)
if User11 < 1:
print "Error"
elif User11 == 100:
sys.exit()
elif User11 > 20:
print "Error"
else:
break
except ValueError:
print "Error"
Este es el error:
Traceback (most recent call last):
File "C:/Python27/Gamb Game.py", line 183, in <module>
rerun()
File "C:/Python27/Gamb Game.py", line 182, in rerun
gamble()
File "C:/Python27/Gamb Game.py", line 19, in gamble
PlrMny = parser.get(''money_value'', ''Amount'')
File "C:/Python27/lib/ConfigParser.py", line 623, in get
return self._interpolate(section, option, value, d)
File "C:/Python27/lib/ConfigParser.py", line 663, in _interpolate
if value and "%(" in value:
TypeError: argument of type ''float'' is not iterable
No tengo idea de cuál podría ser el problema en la línea 19. Cómo se ve tu configuración e intentaste
parser.getfloat(''money_value'',''Amount'')
?
Ok, creas un analizador en una función
def rerun():
import ConfigParser
from ConfigParser import ConfigParser
parser = ConfigParser()
parser.read(''Game.ini'')
y lo usarás en otro.
def gamble():
PlrMny = parser.get(''money_value'', ''Amount'')
esto debería fallar dado que el analizador es una variable local en la repetición y no declarado en la apuesta.