鱼C论坛

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

python关于循环的一个问题

[复制链接]
发表于 2021-10-17 19:20:31 | 显示全部楼层 |阅读模式

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

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

x
我在爬一个小说网站的时候,突然想到一个问题:

首先:
        小说网站里小说时分类的
        比如:仙侠、都市、言情
        然后:仙侠类里有:x1、x2、x3、x4、x5、x6等小说

然后:
        我已经把小说类和小说名爬取了,建了个字典
        novel ={'仙侠':['x1','x2','x3','x4','x5','x6'],'都市':['d1','d2','d3'],'言情':['y1','y2']}

目的:
        我是想在爬取小说的前提供一个选择:
                        1、首先打印类别供选择
                        2、输入类别后,打印该类下小说名录
                        3、然后执行爬取相应小说操作
                以上都简单
                        但为了提高体验:我想附加两个需求
                                第一:
                                        1、在第一步打印类别后,本是输入类别的时候,也可以直接输入小说名
                                        2、这样直接进行小说的爬取操作。
                                第二:
                                        1、爬取完小说后,并部退出程序,而是返回上一步骤。(如果是在打印类别这一步,变再打印类别。如果在小说某类小说名录步骤,就打印相应小说名录。)

以下是我想出的代码:
novel ={'仙侠':['x1','x2','x3','x4','x5','x6'],'都市':['d1','d2','d3'],'言情':['y1','y2']}
value = []
for i in novel.values():
    value.extend(i)
def begin(name):
    print('正在爬取小说:'+ name)
no = 0
while True:
    if no == 0:
        print(list(novel.keys()))
        chooce = input('你要哪类小说:(可直接输入小说名,输入exit退出):')
        if chooce == 'exit':
            exit()

        elif chooce in list(novel.keys()):
            no += 1
            print(novel[chooce])
            nonvel_name = input('你要爬取哪部小说(输入quit,返回上一步):')
            if nonvel_name == 'quit':
                no = 0
                continue
            elif nonvel_name == 'exit':
                exit()
            elif nonvel_name in novel[chooce]:
                begin(nonvel_name)
                print(no)
            else:
                print('小说%s不存在'%chooce)

        elif chooce in value:
            begin(chooce)
            no = 0
        else:
            print('小说%s不存在' % chooce)

    if no == 1:
        print(novel[chooce])
        nonvel_name = input('你要爬取哪部小说(输入quit,返回上一步,输入exit退出):')
        if nonvel_name == 'quit':
            no = 0
            continue
        elif nonvel_name == 'exit':
            exit()
        elif nonvel_name in novel[chooce]:
            begin(nonvel_name)
        else:
            print('小说%s不存在' % chooce)

但是我觉得上面代码太啰嗦了,不简洁,也不明了。请问下大神有么有更清晰简洁的代码,实现上面的需求?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-10-17 21:19:51 | 显示全部楼层
你这个需求那么多,怎么可能简单几句就可以实现呢,涉及到循环判断少不了的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-12 23:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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