0

コードは次のとおりです。

import pickle
import random

guessesTaken = 0

print('Hello! What is your name?')
name = raw_input()

number = random.randint(1, 20)
print('Well, ' + name + ', I am thinking of a number between 1 and 20.')

while guessesTaken < 6:
    print('Take a guess.') # There are four spaces in front of print.
    guess = raw_input()
    guess = int(guess)

    guessesTaken = guessesTaken + 1

    if guess < number:
        print('Your guess is too low.') # There are eight spaces in front of print.

    if guess > number:
        print('Your guess is too high.')

    if guess == number:
        break

if guess == number:
    guessesTaken = str(guessesTaken)
    print('Good job, ' + name + '! You guessed my number in ' + guessesTaken + ' guesses!')

if guess != number:
    number = str(number)
    print('Nope. The number I was thinking of was ' + number)
clasament= 'clasament.data'
f=open(clasament, 'wb')
pickle.dump(name, f)

私は次のようなトップレベルを作りたいです:
nameguessesTaken nameguessesTaken ...
名前 だけを表示させ、ゲームをもう一度プレイすると名前が更新されます。


私はこのエラーを取得します.Traceback (最新の呼び出しは最後): File "/home/catalin/guessnumber.py", line 44, in for name, guesses in dct.items(): AttributeError: 'str' object has no attribute 'アイテム

4

1 に答える 1

0

It looks like you're trying to keep high (low) scores. This seems like a job for a dictionary which pickle (or json) can handle quite nicely.

try:
    with open('clasament.data') as f:
       dct = pickle.load(f)
except IOError:  #file doesn't exist, no high-scores registered.
    dct = {}

if dct:
    print "Low scores so far!"

    #you may want `sorted(dct.items()) to have a nice order...
    for name,guesses in dct.items(): 
        print(name,guesses)

#<snip>
#play game here
#</snip>

#keep low scores :-)
if name in dict and dct[name] > guessesTaken:
    dct[name] = guessesTaken

with open('clasament.data','w') as f:
    dct = pickle.dump(dct,f)
于 2012-08-22T15:11:39.880 に答える