【问题标题】:Function to create lower case words (convert upper to lower letters) doesn't work as expected创建小写单词(将大写字母转换为小写字母)的功能无法按预期工作
【发布时间】:2015-02-09 06:54:18
【问题描述】:

我不明白为什么下面的 Python 代码会打印出一个包含大写字母的句子...请解释一下! :)

def lower(text):
    text = text.lower()

example = "This sentence has BIG LETTERS."
lower(example)
print(example)

输出将是:

This sentence has BIG LETTERS.

【问题讨论】:

  • 为什么需要自定义函数而不是 example.lower()?
  • 因为你不返回任何东西,虽然你可以使用text.lower()但是如果你确实想使用该功能,你需要return text
  • 这是一个最小(非)工作示例。我有意在文本中加入更多操作。

标签: python case letter


【解决方案1】:

你的函数没有返回任何东西,你需要return这个词:

def lower(text):
    text = text.lower()
    return text

演示:

>>> example = "This sentence has BIG LETTERS."
>>> lower(example)
'this sentence has big letters.'

如果您的意思是为什么以下内容不起作用:

lower(example)
print(example)

您需要知道函数内的变量具有局部范围,并且调用 lower(example)example 不会全局更改!

【讨论】:

  • @keyx:那是因为你从不将lower() 函数的结果分配给任何东西。
  • 好的,我看到你的方式会用小写字母返回我的句子。作品。但我只是想将字符串示例更改为该字符串的较低版本(example.lower())。这样做的方法是什么?您的代码也将导致示例未更改(检查打印(示例))!
  • @keyx 你想在函数内部全局更改它吗?
  • @Kasra:是的,我想你刚刚发现了我的问题。我想永远改变它。与功能。这似乎是不可行/不可能/违反规则? :D
  • @keyx,字符串是不可变的,因此您无法全局更改字符串,您必须将示例重新分配给 lower 的输出
【解决方案2】:

直接使用内置函数:

print example.lower()

不要包装或重新发明它!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-04
    • 2015-07-28
    • 1970-01-01
    • 1970-01-01
    • 2015-08-07
    • 1970-01-01
    • 2013-07-26
    • 2015-07-18
    相关资源
    最近更新 更多