学习python并使用一些基本的字符串方法。
我有这个程序,它在字符串中找到第一个小写字符的索引:
def find_lower(word):
i = 0
while not isupper(word[i]):
i = i+1
return i
然而,当我运行此代码时,我收到错误
builtins.NameError: name 'isupper' is not defined
我是否需要为isupper()
导入模块或其他内容才能正常工作?
答案 0 :(得分:3)
isupper是一种字符串方法。所以,你应该在字符串上使用它
例如,
a = "Hello"
#You can check upper on this as follows
print(a.isupper())
在您的情况下,请更改以下内容
while not isupper(word[i]):
到
while not word[i].isupper():
print("Your x here")
答案 1 :(得分:2)
isupper
是一个字符串方法,应由该对象调用:word[i].isupper()
。
答案 2 :(得分:2)
您错误地使用了isupper
。它不是内置的独立功能。这是str
的一种方法。文档是here。
对于您不确定的任何功能,您可以参考python文档。它很好地被谷歌索引,因此当您想要了解如何使用某个功能时,谷歌搜索是一个很好的起点。
一旦完成此操作,您的find_lower
会遇到更多问题。它实际上是由于逻辑错误而找到第一个大写字母的索引。
while not word[i].isupper():
如果字符不是大写字母,则继续循环,如果字符大小则停止。因此,您需要删除not
。
def find_lower(word):
i = 0
while word[i].isupper():
i = i+1
return i
print(find_lower('ABcDE')) # prints 2
下一个错误是,如果没有小写字符,它会离开字符串的末尾并引发异常
>print(find_lower('ABCDE'))
Traceback (most recent call last):
File "./myisupper.py", line 11, in <module>
print(find_lower('ABCDE'))
File "./myisupper.py", line 5, in find_lower
while word[i].isupper():
IndexError: string index out of range
要解决此问题,您需要将迭代次数限制为字符串的长度,这是一个需要修复的练习。
答案 3 :(得分:1)
它应该像
def find_lower(word):
i = 0
while not word[i].isupper():
i = i+1
return i