python - अस्थिर तैरता है?




parsing numbers (2)

मैं उस खेल को बनाने की कोशिश कर रहा हूं जहां खिलाड़ी को हर बार आईआईआई फ़ाइल में मूल्य से 5 काटा जाता है। हालांकि मुझे एक त्रुटि मिल रही है और मुझे यकीन नहीं है कि क्या करना है यह मेरा कोड है टिप्पणियों के बारे में चिंता न करें, ये मेरे लिए हैं, और मैं बाद में लूप को बंद करता हूं। यह कोड का सिर्फ एक हिस्सा है। बीटीडब्ल्यू, कोड काम करता है, बस यह नहीं। धन्यवाद।

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

इससे आपकी समस्या का समाधान हो जाना चाहिए:

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

बेशक, आप इसका उपयोग भी कर सकते हैं:

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

समस्या यह है कि parser.get एक स्ट्रिंग मान की अपेक्षा कर रहा है, लेकिन एक फ्लोट पढ़ रहा है। इसलिए आपके पास दो विकल्प हैं, मान को स्ट्रिंग के रूप में सहेजना (जो कि दूसरा विकल्प क्या कर रहा है), या raw = true का उपयोग करके मूल्य को पढ़ने के लिए (यह पहला विकल्प क्या कर रहा है)।


ठीक है, आप एक फ़ंक्शन में पार्सर बनाते हैं

def rerun():
    import ConfigParser
    from ConfigParser import ConfigParser

    parser = ConfigParser()
    parser.read('Game.ini')

और आप इसे दूसरे में इस्तेमाल करेंगे।

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

यह विफल होना चाहिए क्योंकि पार्सर फिर से चलने वाला एक स्थानीय चर है और जुआ में घोषित नहीं है।





configparser