2017-04-08 69 views
0

我试图创建一个拼字游戏函数,它需要一串字母并根据字母返回分数。 这是我到目前为止的代码:创建python拼字游戏函数

def scrabble_score(rack): 
    count = 0 
    for letter in rack: 
     if letter == "EAIONRTLSU": 
      count += 1 
      return count 
     elif letter == "DG": 
      count += 2 
      return count 
     elif letter == "BCMP": 
      count += 3 
      return count   
     elif letter == "FHVWY": 
      count += 4 
      return count 
     elif letter == "K": 
      count += 5 
      return count 
     elif letter == "JX": 
      count += 8 
      return count 
     else: 
      letter == "QZ" 
      count += 10 
      return count 

然而,当我试图调用该函数

scrabble_score("AABBWOL") 

返回10时,它应该返回14?

+0

你做一个字符串比较,以检查是否存在信。改用正则表达式。看看[this](http://stackoverflow.com/questions/5188792/how-to-check-a-string-for-specific-characters) – Dana

+0

^扩展@Dana,字符串比较('== ')为每个if都返回False,所以它返回到最后一个语句else返回10. – vincentmajor

回答

0

的代码有两个问题:

  • return声明只能调用一次,for迭代结束,因此它可以概括所有的字母的数值
  • 每个if声明应该检查如果字母是,则为中的字符串,如果它不等于具有特定值的字母列表。

然后,它会是什么样子:

def scrabble_score(rack): 
    count = 0 
    for letter in rack: 
     print letter 
     if letter in "EAIONRTLSU": 
      count += 1 
     elif letter in "DG": 
      count += 2 
     elif letter in "BCMP": 
      count += 3 
     elif letter in "FHVWY": 
      count += 4 
     elif letter in "K": 
      count += 5 
     elif letter in "JX": 
      count += 8 
     else: 
      count += 10 
    return count 

返回:14

+1

在QZ中''字母'实际上并没有对if - 并且可以完全删除 –