如何修复某些输入出现的“TypeError”

2024-04-18 22:05:44 发布

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

我目前在第10年,我正在创建一个程序,告诉用户,如果他们的赎金笔记可以从他们输入的文章创建。我输入的一些输入出现了错误:TypeError:无法隐式地将'NoneType'对象转换为str

它似乎在一开始工作,但后来我键入“你好”作为我的赎金笔记和“地狱”作为我的文章,它出现了上述错误。我想可能是因为文章比笔记要短,但我尝试了其他输入,这似乎不是问题。我已经包含了这个函数,以防可能与它有关。抱歉,如果我的代码有点混乱或效率低下

elif choice == "2" :

    user_note = input("\nPlease enter your ransom note: ")

    user_article = input("Please enter your article: ")

    print("\n" + can_I_ransom(user_article, user_note))

赎金功能:

def can_I_ransom(newspaper_text, ransom_text):
    article_list = list(newspaper_text)
    article_copy = list(newspaper_text)

    for i in range(len(ransom_text)):
        for j in range(len(article_list)):
            if ransom_text[i] == article_list[j]:
                del article_list[j]
                if len(article_copy)-len(ransom_text) == len(article_list):
                    return "Ransom can be made"
                break

        else:
            if j == len(article_list)-1:
                return "Ransom note cannot be made"

我希望输出要么是“赎金可以作出”或“赎金笔记不能作出”和别的什么。如果可以,请帮助:)


Tags: textinputlenif错误article文章can
1条回答
网友
1楼 · 发布于 2024-04-18 22:05:44

问题是,当赎金无法兑现时,你没有归还任何东西,因此它不知道如何处理一个None,这就是当你在没有实际得到“你可以赎金”输出的情况下仅仅中断时所得到的结果。例如,如果第一个if语句是真的,而第二个不是真的,会发生什么?或者如果第一个if语句是错误的,第二个if语句是错误的?这就是为什么它只发生在一些输入上-它只发生在那些从if语句的裂缝中滑出的输入上。另外,我不太确定你的缩进是否适合你的else语句。尝试运行以下命令:

def can_I_ransom(newspaper_text, ransom_text):
    article_list = list(newspaper_text)
    article_copy = list(newspaper_text)

    for i in range(len(ransom_text)):
        for j in range(len(article_list)):
            if ransom_text[i] == article_list[j]:
                del article_list[j]
                if len(article_copy)-len(ransom_text) == len(article_list):
                    return "Ransom can be made"
                else:
                    return "something"

            else:
                if j == len(article_list)-1:
                    return "Ransom note cannot be made"
                else:
                    return "something"
choice = "2"
if choice == "2" :

    user_note = input("\nPlease enter your ransom note: ")

    user_article = input("Please enter your article: ")

    print("\n" + can_I_ransom(user_article, user_note))

把“某物”改成适当的反应

相关问题 更多 >