非凡 发表于 2021-10-17 19:20:31

python关于循环的一个问题

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

首先:
        小说网站里小说时分类的
        比如:仙侠、都市、言情
        然后:仙侠类里有: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)
            nonvel_name = input('你要爬取哪部小说(输入quit,返回上一步):')
            if nonvel_name == 'quit':
                no = 0
                continue
            elif nonvel_name == 'exit':
                exit()
            elif nonvel_name in novel:
                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)
      nonvel_name = input('你要爬取哪部小说(输入quit,返回上一步,输入exit退出):')
      if nonvel_name == 'quit':
            no = 0
            continue
      elif nonvel_name == 'exit':
            exit()
      elif nonvel_name in novel:
            begin(nonvel_name)
      else:
            print('小说%s不存在' % chooce)


但是我觉得上面代码太啰嗦了,不简洁,也不明了。请问下大神有么有更清晰简洁的代码,实现上面的需求?

不能懒 发表于 2021-10-17 21:19:51

你这个需求那么多,怎么可能简单几句就可以实现呢,涉及到循环判断少不了的
页: [1]
查看完整版本: python关于循环的一个问题