Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python For循环中的if语句-逻辑错误_Python_For Loop_If Statement_Logic - Fatal编程技术网

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

Python For循环中的if语句-逻辑错误,python,for-loop,if-statement,logic,Python,For Loop,If Statement,Logic,有人能帮我找出为什么Instachat:Stick\u out\u舌头\u winking\u eye:'和'Docs To Go'的代码没有返回False吗™ 免费办公套房'?它们包含Unicode大于127的字符(分别为emoji和TM),因此从技术上讲,这两个字符都应该返回False 我不明白为什么else条款在这里不起作用 # My Code (logic doesn't seem to work) def is_english(string): for character

有人能帮我找出为什么Instachat:Stick\u out\u舌头\u winking\u eye:'和'Docs To Go'的代码没有返回False吗™ 免费办公套房'?它们包含Unicode大于127的字符(分别为emoji和TM),因此从技术上讲,这两个字符都应该返回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
以下应该是我的代码的预期输出: 真的 假的 假的 假的

然而,实际产出是: 真的 假的 真的
True

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


因为您需要更改字母代码范围(例如,如“下一步”):


以下功能:

def is_english(string):
    for character in string:
        if ord(character) > 127:
            return False
        else:
            return True
由于仅基于
字符串中的第一个
字符
返回结果(无论是
True
还是
False
),因此无法按预期工作。您必须将
return True
语句移到
for
循环之外,就像您提供的第二种方法一样:

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

通过这种方式,您可以根据给定条件检查每个
字符
,直到发现其中一个
字符
s为非英语字符,或者直到检查完所有
字符
s为止。如果两者都不是非英语,则可以返回以下函数:

def is_english(string):
    for character in string:
        if ord(character) > 127:
            return False
        else:
            return True
由于仅基于
字符串中的第一个
字符
返回结果(无论是
True
还是
False
),因此无法按预期工作。您必须将
return True
语句移到
for
循环之外,就像您提供的第二种方法一样:

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

通过这种方式,您可以根据给定条件检查每个
字符
,直到发现其中一个
字符
s为非英语字符,或者直到检查完所有
字符
s为止。如果两者都不是非英语的,那么您可以返回
True

如果我理解了您的问题,您必须这样尝试:

# 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

缩进不正确,那么代码就无法工作


我希望这能有所帮助。

如果我理解了你的问题,你必须这样做:

# 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

缩进不正确,那么代码就无法工作


我希望这能有所帮助。

您的代码只检查第一个字母并返回trye/false。

您的代码只检查第一个字母并返回trye/false。

您似乎有一些缩进错误。您在循环的第一次迭代后返回,而从不查看字符串的其余部分。您似乎有一些缩进错误缩进错误。在循环的第一次迭代后返回,并且从不查看字符串的其余部分。是!你说得对。非常感谢你,杰萨莫尔!!非常感谢是的!你说得对。非常感谢你,杰萨莫尔!!非常感谢