1

文字列「myLetters」で作成できる単語のリストを出力するコードを書いていますが、何らかの理由で書式設定が機能しません。myLetters + 4の長さと同じ数のスペースが値との間にある単語のリストとして出力されるはずです

def scrabbleWords(myLetters):
        letterPoints = {'a':1,'b':3,'c':3,'d':2, 'e':1,'f':4,'g':2,'h':4,\
    'i':1,'j':8,'k':5,'l':1,'m':3,'n':1,'o':1,'p':3,'q':10,'r':1,'s':1,\
    't':1,'u':1,'v':4,'w':4,'x':8,'y':4}
        wordList = createWordList('wordlist.txt')
        myWords = []
        for myWord in wordList:
            x = canWeMakeIt(myWord,myLetters)
            if x == True:
                myWords.append(myWord)


        pointWordList = []
        for myWord in myWords:
            t = getWordPoints(myWord,letterPoints)
            pointWordList.append((t,myWord))
        pointWordList.sort(reverse=True)


        lenx = str(len(myLetters)+4)
        for pointValue, myWord in pointWordList:
            x = '{:'+lenx+'}{}'.format(myWord,pointValue)
            print(x)
4

3 に答える 3

4
'{:'+lenx+'}{}'.format(myWord,pointValue)

と解釈します

'{:'     +     lenx     +     '}{}'.format(myWord,pointValue)

次のように変更します。

'{1:{0}}{2}'.format(lenx, myWord, pointValue)

EDITlenx :整数に変更することを忘れないでください(または文字列に変換しないでください):

lenx = len(myLetters) + 4
于 2012-11-13T12:02:22.580 に答える
3

問題は、合計'{:'+lenx+'}{}'.format(myWord,pointValue)に加算しようとする式にあります。lenx+'}{}'.format(myWord,pointValue)'{:'+lenx

これは私があなたが望むと思うことを行い、私の意見ではもう少し読みやすくなります:

x = '{:{width}}{}'.format(myWord, pointValue, width=lenx)

編集:さらに、これlenxは整数値か文字列値かに関係なく機能します。

于 2012-11-13T12:11:37.910 に答える
0

「フォーマット文字列で単一の '}' が検出されました」というエラーは、一部のブラケットがないと機能しないコードを見ていることが原因です。

あなたが書いた

'{:'+lenx+'}{}'.format(myWord,pointValue)

しかし、おそらく意味

('{:'+lenx+'}{}').format(myWord,pointValue)

一方、pythonの解釈は次のとおりです。

'{:'+lenx+('}{}'.format(myWord,pointValue))
于 2012-11-13T12:38:37.863 に答える