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)

编辑:不要忘记更改lenx为整数(或根本不将其转换为字符串):

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

问题在于'{:'+lenx+'}{}'.format(myWord,pointValue)试图添加lenx+'}{}'.format(myWord,pointValue)到 sum的表达式'{:'+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 回答