【问题标题】:python .lower() is not working [duplicate]python .lower()不起作用[重复]
【发布时间】:2015-04-30 03:13:33
【问题描述】:

我不知道我做错了什么,但是我的python代码中的函数 .lower() 不起作用!

这是一个愚蠢的代码,但它不会降低单词的大小写:

score = {"a": 1, "c": 3, "b": 3, "e": 1, "d": 2, "g": 2, 
         "f": 4, "i": 1, "h": 4, "k": 5, "j": 8, "m": 3, 
         "l": 1, "o": 1, "n": 1, "q": 10, "p": 3, "s": 1, 
         "r": 1, "u": 1, "t": 1, "w": 4, "v": 4, "y": 4, 
         "x": 8, "z": 10}

def scrabble_score(word):
    word.lower()
    print word
    total =0
    for i in word:
        total += score[i]
    return total

print scrabble_score('Helix')    

有什么帮助吗?

【问题讨论】:

  • 试试word = word.lower()
  • 应该是word = word.lower()
  • word = word.lower() 因为字符串是不可变的。
  • 调用word.lower()后,在打印单词时看到的错误应该很明显了
  • 您在这里有很多答案,但没有一个能真正解释为什么会发生这种情况。这是因为 python 字符串是不可变的。这意味着您不能就地更改它们,只需对其进行更改副本并将其分配给其他变量或自身。 Python 有可变变量,即列表。

标签: python lowercase


【解决方案1】:

您必须将lower() 的结果分配回单词,因为字符串是immutable

In [152]:

score = {"a": 1, "c": 3, "b": 3, "e": 1, "d": 2, "g": 2, 
         "f": 4, "i": 1, "h": 4, "k": 5, "j": 8, "m": 3, 
         "l": 1, "o": 1, "n": 1, "q": 10, "p": 3, "s": 1, 
         "r": 1, "u": 1, "t": 1, "w": 4, "v": 4, "y": 4, 
         "x": 8, "z": 10}

def scrabble_score(word):
    word = word.lower() #<------ here assign back
    print(word)
    total =0
    for i in word:
        total += score[i]
    return total

print(scrabble_score('Helix'))

helix
15

查看相关:Why are Python strings immutable? Best practices for using them

【讨论】:

    【解决方案2】:

    做:

    word = word.lower()
    

    因为lower() 不会修改原始字符串

    【讨论】:

      【解决方案3】:

      这是因为您在将单词转换为小写后没有为其赋值。所以它仍然具有旧值“Helix”

      word = word.lower()
      

      【讨论】:

        猜你喜欢
        • 2018-12-22
        • 2015-08-19
        • 1970-01-01
        • 2015-09-24
        • 2013-06-11
        • 2015-04-12
        • 2011-04-25
        • 2016-06-08
        • 1970-01-01
        相关资源
        最近更新 更多