Итеративные поплавки?

Я пытаюсь сделать игру, в которой игрок вычитается .5 из значения в ini-файле каждый раз, когда он играет. Однако я продолжаю ошибаться, и я не уверен, что делать. Это мой код. Не беспокойтесь о комментариях, это для меня, и я закрываю цикл while позже. Это всего лишь часть кода. Btw, код работает, просто не это. Благодарю.

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" 

Это ошибка:

  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 

3 Solutions collect form web for “Итеративные поплавки?”

Это должно решить вашу проблему:

 parser.get('money_value','Amount',True) 

конечно, вы также можете использовать:

 PlrMny = float(PlrMny) -.5 parser.set('money_value','Amount',str(PlrMny)) 

Проблема в том, что parser.get ожидает строковое значение, но читает float. Таким образом, у вас есть два варианта: сохранить значение в виде строки (это то, что делает второй вариант), или прочитать значение с помощью raw = True (это то, что делает первый вариант).

Я понятия не имею, что проблема может быть в строке 19. Как выглядит ваш конфиг, и вы пытались

  parser.getfloat('money_value','Amount') 

?

Итак, вы создаете парсер в одной функции

 def rerun(): import ConfigParser from ConfigParser import ConfigParser parser = ConfigParser() parser.read('Game.ini') 

и вы будете использовать его в другом.

 def gamble(): PlrMny = parser.get('money_value', 'Amount') 

это должно потерпеть неудачу, поскольку парсер является локальной переменной при повторном запуске и не объявляется в азартной игре.

  • Обновить файл INI без удаления комментариев
  • Python - ConfigParser - AttributeError: экземпляр ConfigParser не имеет атрибута '__getitem__'
  • Получение списка из файла конфигурации с помощью ConfigParser в Python
  • Как удалить пробелы во время записи в INI-файле - Python
  • Интерполяция Python ConfigParser из иностранного раздела
  •  
    Interesting Posts for Van-Lav
    Python - лучший язык программирования в мире.