QQ登录

只需一步,快速开始

登录 | 立即注册 | 找回密码

主题

帖子

荣誉

鱼友Ⅲ

Rank: 4Rank: 4

积分
427
查看: 318|回复: 5

[技术交流] Python:每日一题 100

[复制链接]
最佳答案
491 
累计签到:711 天
连续签到:10 天
冬雪雪冬 发表于 2017-9-13 08:05:05 3185 | 显示全部楼层 |阅读模式

马上注册加入鱼C,享用更多服务吧^_^

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

x
本帖最后由 冬雪雪冬 于 2017-9-15 16:51 编辑

首先我们的玩法做了一下改变:
1. 楼主不再提供答案。
2. 为了让大家独立思考,跟帖改为“回帖仅作者可见”。
3. 鼓励大家积极答题,奖励的期限为出题后24小时内。
4. 根据答案的质量给予1~3鱼币的奖励。


本次的题目是从小甲鱼的一个作业中演化来的,先看看小甲鱼的作业:

1.jpg

现在要求大家用程序统计出有多少BIF,另外这些内置函数中有些实际上是类,比如int,zip等,本题具体的要求是:
1.统计出总共的BIF数量。
2.统计出其中的类的数量和都有哪些。
3.统计出其他函数的数量和都有哪些。
注:copyright等可以统计在1中,但应该不属于2和3中。

本帖被以下淘专辑推荐:

1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
楼层
跳转到指定楼层
最佳答案
54 
累计签到:348 天
连续签到:2 天
jerryxjr1220 发表于 2017-9-13 12:00:41 | 显示全部楼层
每日一题100期了,恭喜越办越好!
  1. import re
  2. FUNCTION = []
  3. CLASS = []
  4. OTHERS = []
  5. for each in dir(__builtins__):
  6.         if re.match('.*builtin_function_or_method', str(type(eval(each)))):
  7.                 FUNCTION.append(each)
  8.         elif re.match("^<class '_.*", str(type(eval(each)))):
  9.                 OTHERS.append(each)
  10.         else:
  11.                 CLASS.append(each)
  12. print('Total BIF: %d including FUNCTION %d, CLASS %d and others %d' % (len(FUNCTION)+len(CLASS)+len(OTHERS), len(FUNCTION), len(CLASS), len(OTHERS)))
  13. print('FUNCTION:')
  14. print(FUNCTION)
  15. print('CLASS:')
  16. print(CLASS)
  17. print('OTHERS:')
  18. print(OTHERS)
复制代码

Total BIF: 152 including FUNCTION 42, CLASS 103 and others 7
FUNCTION:
['__build_class__', '__import__', 'abs', 'all', 'any', 'ascii', 'bin', 'callable', 'chr', 'compile', 'delattr', 'dir', 'divmod', 'eval', 'exec', 'format', 'getattr', 'globals', 'hasattr', 'hash', 'hex', 'id', 'input', 'isinstance', 'issubclass', 'iter', 'len', 'locals', 'max', 'min', 'next', 'oct', 'open', 'ord', 'pow', 'print', 'repr', 'round', 'setattr', 'sorted', 'sum', 'vars']
CLASS:
['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BlockingIOError', 'BrokenPipeError', 'BufferError', 'BytesWarning', 'ChildProcessError', 'ConnectionAbortedError', 'ConnectionError', 'ConnectionRefusedError', 'ConnectionResetError', 'DeprecationWarning', 'EOFError', 'Ellipsis', 'EnvironmentError', 'Exception', 'False', 'FileExistsError', 'FileNotFoundError', 'FloatingPointError', 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError', 'ImportWarning', 'IndentationError', 'IndexError', 'InterruptedError', 'IsADirectoryError', 'KeyError', 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'ModuleNotFoundError', 'NameError', 'None', 'NotADirectoryError', 'NotImplemented', 'NotImplementedError', 'OSError', 'OverflowError', 'PendingDeprecationWarning', 'PermissionError', 'ProcessLookupError', 'RecursionError', 'ReferenceError', 'ResourceWarning', 'RuntimeError', 'RuntimeWarning', 'StopAsyncIteration', 'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'TimeoutError', 'True', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning', 'ValueError', 'Warning', 'WindowsError', 'ZeroDivisionError', '__debug__', '__doc__', '__name__', '__package__', '__spec__', 'bool', 'bytearray', 'bytes', 'classmethod', 'complex', 'dict', 'enumerate', 'filter', 'float', 'frozenset', 'int', 'list', 'map', 'memoryview', 'object', 'property', 'range', 'reversed', 'set', 'slice', 'staticmethod', 'str', 'super', 'tuple', 'type', 'zip']
OTHERS:
['__loader__', 'copyright', 'credits', 'exit', 'help', 'license', 'quit']

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
10 
累计签到:10 天
连续签到:1 天
bush牛 发表于 2017-9-13 15:38:20 | 显示全部楼层
  1. import inspect as ins
  2. import builtins

  3. def check_class():
  4.     c = ins.getmembers(builtins, ins.isclass)
  5.     cs = []
  6.     f = ins.getmembers(builtins, ins.isbuiltin)
  7.     fs = []
  8.     for i in range(len(c)):
  9.         cs.append(c[i][0])
  10.     for i in range(len(f)):
  11.         fs.append(f[i][0])
  12.     al = ins.getmembers(builtins)
  13.     als = []
  14.     for i in range(len(al)):
  15.         als.append(al[i][0])

  16.     print("总共BIF数量:" + str(len(als)))
  17.     print("类的数量:" + str(len(c)) + "\n分别是:")
  18.     print(cs)
  19.     print("函数的数量:" + str(len(f)) + "\n分别是:")
  20.     print(fs)
  21.     print("两者都不是的:")
  22.     print(set(als) - set(cs) - set(fs))
  23. check_class()
复制代码


我在交互环境直接len(dir(builtins))会出现153. 知道为什么告诉我一下~

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
0 
累计签到:54 天
连续签到:1 天
wc365 发表于 2017-9-13 17:12:38 | 显示全部楼层
  1. bif_type,  class_type,  fun_type   = [],[],[]
  2. bif_number,class_number,fun_number =  0, 0, 0
  3. bif_type = [x for x in dir(__builtins__) if x.islower() and x.isalpha()]
  4. bif_number = len(bif_type)
  5. class_type = [x for x in bif_type if type(eval(x)) == type(int)]
  6. class_number = len(class_type)
  7. fun_type = [x for x in bif_type if type(eval(x)) == type(len)]
  8. fun_number = len(fun_type)
  9. print('总共%d个BIF' % bif_number)
  10. print('其中类的数量是%d,包括:%s' % (class_number,class_type))
  11. print('其他函数的数量是%d,包括:%s' % (fun_number,fun_type))
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
0 
累计签到:54 天
连续签到:1 天
wc365 发表于 2017-9-13 17:25:28 | 显示全部楼层
以前每次看版主的答案和牛人的答案,真的可以学到很多东西,所以强烈请求停止奖励后可以公布答案,并公开其他人回帖的答案。答题时间也建议调整长一些,比如48或72小时,毕竟会有学习工作比较忙的时间。鱼币的奖励减少,多少会打击用户的参与热情,小小建议可以调整为3,4,5或2,4,6
----一条刚刚学习了一个月,感觉每日一题对自己帮助很大的小小鱼
1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
最佳答案
1 
累计签到:276 天
连续签到:1 天
solomonxian 发表于 2017-9-13 21:21:53 | 显示全部楼层
按 type 分吗??
  1. def count2():
  2.     lst = [[],[],[]]
  3.     for i in dir(__builtins__):
  4.         if 'builtin_function_or_method' in str(type(eval(i))):
  5.             lst[0].append(i)
  6.         elif "class 'type'" in str(type(eval(i))):
  7.             lst[1].append(i)
  8.         else:
  9.             lst[2].append(i)
  10.     return [(len(i),i) for i in lst]
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!

发表回复

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

本版积分规则

关闭

小甲鱼强烈推荐 上一条 /3 下一条

    移动客户端下载(未启用)
    微信公众号

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备11014136号

Copyright 2018 鱼C论坛 版权所有 All Rights Reserved.

Powered by Discuz! X3.1 Copyright
© 2001-2018 Comsenz Inc.    All Rights Reserved.

小黑屋|手机版|Archiver|鱼C工作室 ( 粤公网安备 44051102000370号 | 粤ICP备11014136号

GMT+8, 2017-11-21 23:32

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