2

所以我试图运行它,但它出错了,我需要帮助来理解问题所在。我非常感谢任何帮助,我正在将麻省理工学院开放课件介绍给编程:

words="GreatTimes"
words.lowercase

我得到这个错误:

AttributeError: 'str' object has no attribute 'lowercase'

问题是我正在尝试运行“如何像计算机科学家一样思考”中的示例代码,但它仍然给我错误。

def isLower(ch):
    return string.find(string.lowercase, ch) != -1

所以我无法弄清楚语法错误是什么。查看Python 文档页面,它说:

string.lowercase 包含所有被视为小写字母的字符的字符串。在大多数系统上,这是字符串“abcdefghijklmnopqrstuvwxyz”。具体值取决于语言环境,将在调用 locale.setlocale() 时更新。

想法?

编辑:啊,对不起,我应该更清楚。所以我正在尝试编写一段代码来告诉我字符串中的字符是否为小写。我的代码是我的实现。而示例代码是我用来检查我的语法是否错误的东西,这就是问题的根源。但是,示例代码也会产生错误。简而言之,为什么这段代码不起作用?看起来它应该从“GreatTimes”中吐出所有小写字母的字符串,如“reatimes”和/或你将如何使用 string.lowercase 来制作这个程序?

4

3 回答 3

8

我对你想要做的事情有点困惑。这似乎是一个相当做作的练习。

  • 如果只想使用实例方法,words.lower()将返回小写版本的字符串words

  • 如果你想实现一个你自己使用的小写函数string.lowercase(它只是一个设置为所有小写字母的字符串的常量),那么你需要确保你import string在调用它之前做了一个(例如在你的lower函数示例中)。

  • 如果你做了一个import string,你也可以使用string.lower('STRING with CAPS')

编辑:这是一些运行您的功能的代码,向您展示它的工作原理:

import string

def isLower(ch):
    return string.find(string.lowercase, ch) != -1


words = "GreatTimes"

lowercase_letters = ""
for ch in words:
    print ch, '->', isLower(ch)

    if isLower(ch):
        lowercase_letters += ch

print "Lowercase letters were:", lowercase_letters

输出:

G -> False
r -> True
e -> True
a -> True
t -> True
T -> False
i -> True
m -> True
e -> True
s -> True
Lowercase letters were: reatimes
于 2011-05-20T05:10:08.493 回答
0

小写是字符串模块中字符串的名称:

导入字符串 string.lowercase 'abcdefghijklmnopqrstuvwxyz'

但您不能通过字符串实例访问它:

word = 'this is a string' word.lowercase Traceback(最近一次调用最后一次):文件“”,第 1 行,在 AttributeError 中:'str' 对象没有属性'lowercase'

此外, find 方法并没有按照您的想法执行 - 检查文档。

艾伦

于 2011-05-20T23:50:07.820 回答
-2

尝试使用“ascii.lowercase”它可以工作

于 2017-04-20T14:18:24.427 回答