python - For循环中的if语句-逻辑错误

原文 标签 python for-loop if-statement logic

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

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

# 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


以下应该是“我的代码”的预期输出:
真正




但是,实际输出为:
真正

真正
真正

最佳答案

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

def is_english(s):
    for c in s.lower():
        if ord('a') > ord(c) or ord(c) > ord('z'):
            return False

    return True

关于python - For循环中的if语句-逻辑错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57760109/

相关文章:

python - 使用zipfile压缩文件集中的文件

python - 在python中裁剪视频

bash脚本循环多个变量

java - 当我删除System.out.println时,while循环似乎不起作用

python - 如何附加索引

python - 递归复制进度文件

python - 在pandas列中的连续非NaN细胞中聚集字符串,但不在整个列中聚集

java - 使用for循环缩放输出

batch-file - 循环遍历子目录批处理文件中的文件

python - 如何使用 lambda 实现计数器?