gpt4 book ai didi

python - 为什么我的函数检查英语应用程序对非英语应用程序返回 True?

转载 作者:行者123 更新时间:2023-12-01 00:48:48 25 4
gpt4 key购买 nike

我目前正在 Jupyter Notebook 中的 dataquest.io 指导项目中进行练习。我的目标是编写一个函数,检查给定字符串中每个字符的 ASCII 数字是否超过 127,如果字符串超过 3 个,则返回 False。

Github link to entire code - 有问题的函数位于单元格 20

我在 Jupyter Notebook 的内核中尝试过“重新启动”和“全部运行”,这在过去有助于调试,但这次不行。我还查看了本练习的解决方案,我的代码实际上是相同的。然而,对于明显非英语的应用程序名称,我的代码返回 True。

def is_english(string):
non_ascii = 0

for c in string:
char = ord(c)
if char > 127:
non_ascii += 1

if non_ascii > 3:
return False
else:
return True
print(is_english('爱奇艺PPS -《欢乐颂2》电视剧热播'))
print(is_english('Instachat 😜'))

输出:真的正确

预期结果是:错误的正确

我推测较大项目中的某些内容可能是一个问题,因为我的代码与 solution code 匹配。我只是无法理解正在发生的事情。初学者谢谢!

最佳答案

问题出在 if/else 上:两条路径都会返回,因此您总是在检查第一个字符后返回。

您可以通过在 for 循环之外返回 True 来解决此问题,因此循环会在返回 True 之前遍历每个字符:

def is_english(string):
non_ascii = 0

for c in string:
char = ord(c)
if char > 127:
non_ascii += 1

if non_ascii > 3:
return False

return True

print(is_english('爱奇艺PPS -《欢乐颂2》电视剧热播'))
print(is_english('Instachat 😜'))

链接的解决方案是正确的,除了缩进之外,与您的解决方案相匹配!如果您查看解决方案缩进,您可以看到它们的 if/else 在循环结束后完成。

关于python - 为什么我的函数检查英语应用程序对非英语应用程序返回 True?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56728464/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com