我正在编写一些代码,看看打印出一个单词列表,我可以用字母'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)
答案 0 :(得分:4)
'{:'+lenx+'}{}'.format(myWord,pointValue)
解释为
'{:' + lenx + '}{}'.format(myWord,pointValue)
将其更改为:
'{1:{0}}{2}'.format(lenx, myWord, pointValue)
编辑:不要忘记将lenx
更改为整数(或根本不将其转换为字符串):
lenx = len(myLetters) + 4
答案 1 :(得分:3)
问题在于'{:'+lenx+'}{}'.format(myWord,pointValue)
表达式尝试将lenx+'}{}'.format(myWord,pointValue)
添加到总和'{:'+lenx
。
这可以做我认为你想要的,并且在我看来更具可读性:
x = '{:{width}}{}'.format(myWord, pointValue, width=lenx)
编辑:另外,无论lenx
是整数还是字符串值,这都有效。
答案 2 :(得分:0)
格式字符串中遇到的“单个'}”错误是由于我们正在查看一些代码,如果没有一些包围,这些代码无效。
你写了
'{:'+lenx+'}{}'.format(myWord,pointValue)
但可能意味着
('{:'+lenx+'}{}').format(myWord,pointValue)
而python的解释是:
'{:'+lenx+('}{}'.format(myWord,pointValue))