首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >For循环内的if语句-逻辑错误

For循环内的if语句-逻辑错误
EN

Stack Overflow用户
提问于 2019-09-03 00:18:16
回答 4查看 48关注 0票数 1

谁能帮我弄清楚为什么‘Instachat:stuck_out_tongue_winking_eye:’和‘Docs To Go™Free Office Suite’的代码没有返回False?它们包含unicodes大于127的字符(分别为emoji和TM ),因此从技术上讲,这两个字符都应该返回False。

我不明白为什么else子句在这里不起作用。

代码语言:javascript
复制
# My Code (logic doesn't seem to work)

def is_english(string):

    for character in string:
       if ord(character) > 127:
       return False

       else:
       return True

print(is_english(‘Instagram’))

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

print(is_english(‘Docs To Go™ Free Office Suite’))

print(is_english(‘Instachat :stuck_out_tongue_winking_eye:’))

#Solution Code (works but I don't understand why)

def is_english(string):

    for character in string:
        if ord(character) > 127:
            return False

    return True

下面是我的代码的预期输出: True False

但是,实际输出是: True False True True

EN

回答 4

Stack Overflow用户

发布于 2019-09-03 00:26:33

因为您需要更改字母代码范围(例如,如next):

代码语言:javascript
复制
def is_english(s):
    for c in s.lower():
        if ord('a') > ord(c) or ord(c) > ord('z'):
            return False

    return True
票数 0
EN

Stack Overflow用户

发布于 2019-09-03 00:38:10

以下函数:

代码语言:javascript
复制
def is_english(string):
    for character in string:
        if ord(character) > 127:
            return False
        else:
            return True

没有按预期工作,因为您只根据string中的第一个character返回结果( TrueFalse)。您必须将return True语句移到for循环之外,就像您提供的第二种方法一样:

代码语言:javascript
复制
def is_english(string):
    for character in string:
        if ord(character) > 127:
            return False
    return True

这样,您可以根据给定的条件检查每个character,直到发现其中一个character不是英语的,或者直到检查完所有character为止。如果两者都不是英语,则可以返回True

票数 0
EN

Stack Overflow用户

发布于 2019-09-03 00:38:18

如果我理解你的问题,你必须这样试一试:

代码语言:javascript
复制
# The Code

def is_english(string):
    for character in string:
        if ord(character) > 127:
            return False #if character is major than 127
        else:
            return True #if character is minor than 127

print(is_english('Instagram'))

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

print(is_english('Docs To Go™ Free Office Suite'))

print(is_english('Instachat :stuck_out_tongue_winking_eye:'))

输出为: True False True True

缩进不正确,那么您的代码将无法工作。

我希望这能帮到你。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57760109

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档