鱼C论坛

 找回密码
 立即注册
查看: 328|回复: 1

if ..elif 的条件调换一下结果就不对了,why?

[复制链接]
发表于 2024-3-26 08:04:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 blackantt 于 2024-3-26 08:05 编辑
if [b]transcript_list.find_manually_created_transcript(['en'])[/b]:
        find_manually_created_transcript_en = transcript_list.find_manually_created_transcript(['en'])  
        print(find_manually_created_transcript_en, type(find_manually_created_transcript_en),'==========================type1')
elif [b]transcript_list.find_manually_created_transcript(['en-US'])[/b]:
        find_manually_created_transcript_en = transcript_list.find_manually_created_transcript(['en-US'])  
        print(find_manually_created_transcript_en, type(find_manually_created_transcript_en),'==========================type11')
elif transcript_list.find_generated_transcript(['en']):
        find_generated_transcript_en = transcript_list.find_generated_transcript(['en'])
        print(type(find_generated_transcript_en))
elif transcript_list.find_generated_transcript(['en-GB']):
        find_generated_transcript_en = transcript_list.find_generated_transcript(['en-GB'])
        print(type(find_generated_transcript_en))
        
else:
        print('-------------无字幕')
        continue
--------------------------------------------
ytbe_transcript_api._errors.NoTranscriptFound:
Could not retrieve a transcript for the video https://www.ye.com/watch?v=Qf6uZe4SDuY! This is most likely caused by:

No transcripts were found for any of the requested language codes: ['en']

For this video (Qf6uZe4SDuY) transcripts are available in the following languages:

(MANUALLY CREATED)
- en-US ("English (United States)")[TRANSLATABLE]

(GENERATED)
- en ("English (auto-generated)")[TRANSLATABLE]
-------------------------------------------------------
但把 transcript_list.find_manually_created_transcript(['en-US']) 放到if中, transcript_list.find_manually_created_transcript(['en']) 放到 elif 中就可以,为啥呢?

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-3-26 08:04:42 | 显示全部楼层
在if...elif...else语句中,条件是按顺序逐个判断的。当满足某个条件时,就会执行对应的代码块,并退出整个if...elif...else结构。

在你的代码中,如果将`transcript_list.find_manually_created_transcript()`放在if中,而`transcript_list.find_generated_transcript()`放在elif中,那么只要`transcript_list.find_manually_created_transcript()`返回True,就会执行if代码块,并跳过elif中的判断。同样地,如果将`transcript_list.find_generated_transcript()`放在if中,而`transcript_list.find_manually_created_transcript()`放在elif中,只要`transcript_list.find_generated_transcript()`返回True,就会执行if代码块,并跳过elif中的判断。

因此,如果你希望两个条件都被判断到并执行对应的代码,应该将它们分别放在不同的if语句中,或者将它们合并成一个if语句,可以使用逻辑运算符`and`来连接两个条件。

下面是修改后的代码示例:
if transcript_list.find_manually_created_transcript():
    find_manually_created_transcript_en = transcript_list.find_manually_created_transcript()  
    print(find_manually_created_transcript_en, type(find_manually_created_transcript_en),'==========================type1')

if transcript_list.find_generated_transcript():
    find_generated_transcript_en = transcript_list.find_generated_transcript()
    print(type(find_generated_transcript_en))

if not (transcript_list.find_manually_created_transcript() or transcript_list.find_generated_transcript()):
    print('-------------无字幕')
    continue

通过这样的修改,两个条件都会被判断到并执行对应的代码。另外,最后的else语句可以改为if not...来判断两个条件都不满足的情况。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-26 18:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表