我目前在10年级,并且正在创建一个程序,该程序告诉用户是否可以从他们输入的文章中创建赎金记录。我输入的某些输入出现错误:TypeError:无法将'NoneType'对象隐式转换为str
这似乎起初是可行的,但随后我输入“ hello”作为赎金记录,并输入“ hell”作为我的文章,但上面出现了错误。我认为可能是因为文章短于注释,但是我尝试了其他输入方式,但这似乎不是问题。如果可能与该函数有关,我已将其包括在内。抱歉,我的代码有点混乱或效率低下。
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))
can_I_ransom函数:
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"
我期望输出为“可以制作赎金”或“无法制作赎金票据”,而没有其他输出。如果可以的话,请帮忙:)
答案 0 :(得分:0)
问题是,当无法支付赎金时,您什么也不会退回,所以它不知道如何处理None
,这是您中断而实际上没有得到的结果“您可以勒索”的输出。例如,如果第一个if语句为true,但第二个if语句为true,会发生什么呢?或者,如果第一个if语句为false,第二个为false?这就是为什么它仅在 some 输入中发生的原因-它仅在那些通过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))
只需将“内容”更改为适当的响应即可。