如何在python中返回字符串中的空格索引?

时间:2015-10-16 08:18:06

标签: python

我正在为CS课程中的练习编写一个函数。 但我不知道为什么我会收到此错误: 相同的代码没有功能。我尝试搜索如何在字符串中找到“whitespace”的索引,但我找不到任何索引。练习的目的是返回用户输入的全名,从名字和姓氏中删除一个随机字母。 (这是“假设”用户输入的全名包含两部分) 感谢

Enter your Full name: Emily Watson
Traceback (most recent call last):
  File "cs_lec7_char_shuffle_ex.py", line 33, in <module>
    version1 = remove_two_letters(full_name)
  File "cs_lec7_char_shuffle_ex.py", line 16, in remove_two_letters
    gap_pos = full_name.find(" ")                    
AttributeError: 'NoneType' object has no attribute 'find'

***Repl Closed***

import random

def get_full_name():

    full_name = input("Enter your Full name: ")

def remove_two_letters(full_name):

    gap_pos = full_name.find(" ")                    
    name_length = len(full_name)                    

    first_name = full_name[0:gap_pos]               
    sur_name = full_name[gap_pos+1:name_length]

    first_random_pos = random.randrange(1,gap_pos)  
    sur_random_pos = random.randrange(gap_pos+1, name_length)

    first_name = first_name.replace(full_name[first_random_pos],"",1)    
    sur_name = sur_name.replace(full_name[sur_random_pos],"",1)         

    removed_name = first_name + " " + sur_name

    return removed_name

full_name = get_full_name()
version1 = remove_two_letters(full_name)

print(version1)

4 个答案:

答案 0 :(得分:3)

您已在full_name的本地名称空间内定义get_full_name(),如果您想在其他地方使用它,则需要将其返回:

def get_full_name():

    full_name = input("Enter your Full name: ")
    return  full_name

这就是你所拥有的AttributeError,因为你的函数返回None并且你将None传递给remove_two_letters

答案 1 :(得分:1)

from_omniauth

答案 2 :(得分:1)

让我们检查您收到的错误:

AttributeError: 'NoneType' object has no attribute 'find'

这意味着您尝试访问类型为find的对象上的属性None。让我们看一下产生错误的行,如stacktrace中所示:

gap_pos = full_name.find(" ")

full_name对象上调用find属性。因此,我们可以得出结论full_name对象的类型为None

如果我们通过调用代码追溯full_name变量,我们会看到它应该由函数get_full_name()设置,实际上由于没有显式而返回None return声明。

答案 3 :(得分:0)

下次如果你想知道什么是错的,你可以使用type()来发现你的第一个full_name和第二个full_name之间的类型不一样,所以你只需要返回你的变量。

我为你跑了测试,我有:

def get_full_name():

  full_name = input("Enter your Full name: ")
  print(type(full_name))


full_name = get_full_name()
print(type(full_name))

输出:

<class 'str'>
<class 'NoneType'>