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

2024-04-25 00:51:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为CS班的一个练习写一个函数。 但我不知道为什么我会犯这个错误: 相同的代码在没有函数的情况下工作。我试着搜索如何在字符串中找到“空白”的索引,但没有找到。练习的目的是返回由用户键入的全名,从名字和姓氏中删除一个随机字母。(这是“假设”用户键入的全名包含两部分) 谢谢

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)

Tags: 函数用户nameposrandomfindlengthremove
3条回答

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

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

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

gap_pos = full_name.find(" ")

正在对full_name对象调用find属性。因此,我们可以断定full_name对象是None类型。

如果我们通过调用代码跟踪full_name变量,我们会发现它应该是由函数get_full_name()设置的,实际上,由于没有显式的return语句,函数确实返回None

>>> string_1 = "That's it"
>>> string_1.index(" ")
6

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

def get_full_name():

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

这就是您得到的AttributeError,因为您的函数返回None,而您传递None给remove_two_letters

相关问题 更多 >