鱼C论坛

 找回密码
 立即注册
查看: 1571|回复: 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、爬取完小说后,并部退出程序,而是返回上一步骤。(如果是在打印类别这一步,变再打印类别。如果在小说某类小说名录步骤,就打印相应小说名录。)

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

  14.         elif chooce in list(novel.keys()):
  15.             no += 1
  16.             print(novel[chooce])
  17.             nonvel_name = input('你要爬取哪部小说(输入quit,返回上一步):')
  18.             if nonvel_name == 'quit':
  19.                 no = 0
  20.                 continue
  21.             elif nonvel_name == 'exit':
  22.                 exit()
  23.             elif nonvel_name in novel[chooce]:
  24.                 begin(nonvel_name)
  25.                 print(no)
  26.             else:
  27.                 print('小说%s不存在'%chooce)

  28.         elif chooce in value:
  29.             begin(chooce)
  30.             no = 0
  31.         else:
  32.             print('小说%s不存在' % chooce)

  33.     if no == 1:
  34.         print(novel[chooce])
  35.         nonvel_name = input('你要爬取哪部小说(输入quit,返回上一步,输入exit退出):')
  36.         if nonvel_name == 'quit':
  37.             no = 0
  38.             continue
  39.         elif nonvel_name == 'exit':
  40.             exit()
  41.         elif nonvel_name in novel[chooce]:
  42.             begin(nonvel_name)
  43.         else:
  44.             print('小说%s不存在' % chooce)
复制代码


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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-13 07:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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