鱼C论坛

 找回密码
 立即注册
查看: 2667|回复: 7

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

[复制链接]
发表于 2017-9-13 08:05:05 | 显示全部楼层 |阅读模式

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

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

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中。

本帖被以下淘专辑推荐:

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

使用道具 举报

发表于 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

查看全部评分

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

使用道具 举报

发表于 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

查看全部评分

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

使用道具 举报

发表于 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

查看全部评分

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

使用道具 举报

发表于 2017-9-13 17:25:28 | 显示全部楼层
以前每次看版主的答案和牛人的答案,真的可以学到很多东西,所以强烈请求停止奖励后可以公布答案,并公开其他人回帖的答案。答题时间也建议调整长一些,比如48或72小时,毕竟会有学习工作比较忙的时间。鱼币的奖励减少,多少会打击用户的参与热情,小小建议可以调整为3,4,5或2,4,6
----一条刚刚学习了一个月,感觉每日一题对自己帮助很大的小小鱼
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 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

查看全部评分

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

使用道具 举报

发表于 2017-12-1 15:18:46 | 显示全部楼层
import re
FUNCTION = []
CLASS = []
OTHERS = []
for each in dir(__builtins__):
        if re.match('.*builtin_function_or_method', str(type(eval(each)))):
                FUNCTION.append(each)
        elif re.match("^<class '_.*", str(type(eval(each)))):
                OTHERS.append(each)
        else:
                CLASS.append(each)
print('Total BIF: %d including FUNCTION %d, CLASS %d and others %d' % (len(FUNCTION)+len(CLASS)+len(OTHERS), len(FUNCTION), len(CLASS), len(OTHERS)))
print('FUNCTION:')
print(FUNCTION)
print('CLASS:')
print(CLASS)
print('OTHERS:')
print(OTHERS)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-26 07:19:03 | 显示全部楼层
def fun():
    list1 = dir(__builtins__)
    list_type = []
    list_func = []
    for i in list1:
        if i[0].isupper() or i[:2] == "__":
            continue
        if "type" in str(type(eval(i))):
            list_type.append(i)
        elif "builtin_function_or_method" in str(type(eval(i))):
            #print(type(i))
            list_func.append(i)
    print("len(__builtins__)", len(list1))
    print(len(list_type), list_type)
    print(len(list_func), list_func)
    pass
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 16:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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