一年一度的高考结束了,准大一的学子们今天起你们不用去深究何是“本手”何是“俗手”,放松起来去疯狂地玩吧! 特爱学编程的孩子们在高中三年里也根本挤不出时间学,这个假期先轻松放空一段时间后,来CSDN学编程吧!写代码也有本手、俗手之分的,规范中规中矩的代码就似本手;乱七八糟bug满天飞的即是俗手;而代码高手写的叫一个灵动飘逸,就似围棋高手在手谈中“妙手”不断、精妙绝伦也。我先声明我不是一个编程高手,只是段外的业余初学者,但也不乏寻找“神之一手”的勇气和努力!这里是CSDN博客频道,一个业余 pyer 在这里开始发现妙手之旅——


1. 一行代码实现素数判断,有以下二种方法:

def isprime(n):return not any(filter(lambda i:not n%i and i*i<=n,range(2,n))) if n>1 else FalseisPrime = lambda n:not any(not n%i for i in range(2,n) if i*i<=n) if n>1 else False

2. 列表索引代替多重 if-elif-elif-else 结构:

【实例】折扣与数量的关系:

if n==1:discount = 1.0
elif n==2:discount = 0.95
elif n==3:discount = 0.9
elif n==4:discount = 0.8
else:discount = 0.65

索引代替后:

n = int(input('购买数量:'))
price = 499.0
rates = [1.0,0.95,0.9,0.8,0.65]
discount = lambda n:rates[-1 if divmod(n,len(rates))[0] else divmod(n,len(rates))[1]-1]
total = n*price*discount(n)
print(f'折扣率:{discount(n)}\n实际消费金额:{total:.2f}')print('折扣率测试:')
for i in range(1,10):print(i,discount(i))

3. 单独引用某库某个函数: __import('库名')__.函数名()

【实例1】排列:

print(*(__import__('itertools').permutations(range(1,5),3)))
(1, 2, 3) (1, 2, 4) (1, 3, 2) (1, 3, 4) (1, 4, 2) (1, 4, 3) (2, 1, 3) (2, 1, 4)
(2, 3, 1) (2, 3, 4) (2, 4, 1) (2, 4, 3) (3, 1, 2) (3, 1, 4) (3, 2, 1) (3, 2, 4)
(3, 4, 1) (3, 4, 2) (4, 1, 2) (4, 1, 3) (4, 2, 1) (4, 2, 3) (4, 3, 1) (4, 3, 2)

【实例2】组合:

list(__import__('itertools').combinations(range(1,5),3))
[(1, 2, 3), (1, 2, 4), (1, 3, 4), (2, 3, 4)]

【实例3】三角函数:

__import__('math').sin(__import__('math').pi/6)
0.49999999999999994

4. functools.reduce()的运用:某区间内某些数的积

【实例1】阶乘公式:

fact = lambda n:__import__('functools').reduce(lambda x,y:x*y,range(1,n+1))

【实例2】10~n间,7的倍数的累积:

n = int(input())
print(__import__('functools').reduce(lambda x,y:x*y,filter(lambda x:x%7==0,range(10,n+1))))

【实例3】20以内所有素数之积:

isPrime = lambda n:not any(not n%i for i in range(2,n) if i*i<=n) if n>1 else False
print(__import__('functools').reduce(lambda x,y:x*y,filter(isPrime,range(20))))

【实例4】正整数的各位数字之积:

num = ''
while not num.isnumeric():num=input('请输入一个正整数:')
else:print('各位上的数字之积:',__import__('functools').reduce(lambda x,y:int(x)*int(y),num))

5. 判断对象obj是否可迭代: 可以使用next(obj)的

>>> from collections.abc import Iterator
>>> isinstance(map(len,[[],[1],[2,3]]), Iterator)
True
>>> isinstance(filter(len,[[],[1],[2,3]]), Iterator)
True
>>> isinstance(__import__('itertools').combinations(range(1,5),3), Iterator)
True
>>> isinstance((i for i in range(100)), Iterator)
True
>>> isinstance([i for i in range(100)], Iterator)
False
>>> isinstance({i for i in range(100)}, Iterator)
False
>>> isinstance({i:i*i for i in range(100)}, Iterator)
False

6. 元组或列表中出现次数最少的所有元素:

nums = eval(input())  # 题目要求输入用半角逗号分隔的,只要用eval()函数即可dic = {n:nums.count(n) for n in nums} # 以 数字:次数 为键值对组成字典count = min(dic.values())  # 最少出现次数print(*(k for k,v in dic.items() if v==count)) # 键值最小的所有键

7. 实例:有四个数能组成多少个互不相同且无重复数字的三位数,各是多少?

res = set()for i in range(1,5):for j in range(1,5):for k in range(1,5):if i!=j!=k!=i:res.add(i*100+j*10+k)print(len(res))
print(res)

或者:

res = set()for i in range(1,5):for j in range(1,5):for k in range(1,5):if len(set([i,j,k]))==3:res.add(i*100+j*10+k)print(len(res))
print(res)

或者:

from itertools import permutations as perm
lst = [i*100+j*10+k for i,j,k in perm([1,2,3,4],3)]
print(len(lst))
print(lst)

8. 实例:多项式求和 Sn=1-2!/3+3!/5-....+(-1)^(n+1)*n!/(2n-1)

m = int(input("输入正整数:"))f,s,t = -1.0,0,1for n in range(1,m+1):t *= nf *= -1s += f*t/(2*n-1)print(f'总和为{s:.3f}')

本集完,也即《Python 在问答频道中刷题积累到的小技巧》连载之(四)

写代码也有本手俗手之分,而我们要善于发现妙手!相关推荐

  1. python写了代码_Python写代码的用法建议

    1.Mutable and immutable types Python有两种内置或用户定义的类型 可变类型是允许就地修改内容的类型.典型的可变列表是列表和词典:所有列表都有变异方法,如 list.a ...

  2. java 8代码 改 java7_Java 8 到 Java 14,改变了哪些你写代码的方式?

    前几天,JDK 14 正式发布了,这次发布的新版本一共包含了16个新的特性. 其实,从Java8 到 Java14 ,真正的改变了程序员写代码的方式的特性并不多,我们这篇文章就来看一下都有哪些. La ...

  3. Java 8 到 Java 14,改变了哪些你写代码的方式?

    前几天,JDK 14 正式发布了,这次发布的新版本一共包含了16个新的特性. 其实,从Java8 到 Java14 ,真正的改变了程序员写代码的方式的特性并不多,我们这篇文章就来看一下都有哪些. La ...

  4. java update 8_版本任你发,我用Java 8!JDK的更新,改变了哪些你写代码的方式?...

    前几天,JDK 14 正式发布了,这次发布的新版本一共包含了16个新的特性. 其实,从Java8 到 Java14 ,真正的改变了程序员写代码的方式的特性并不多,我们这篇文章就来看一下都有哪些. La ...

  5. 如果让 AI 来写高考作文,能得多少分?

    大家好,我是树义. 不知不觉,这两天又是高考的时候.距离我高考已经过去了整整 12 个年头了,想想那时候智能手机也不怎么普及,不像现在那样人手一个智能机. 现在不仅信息技术发达,人工智能技术也是突飞猛 ...

  6. 写代码可能是成为软件工程师最容易的部分

    当然,写代码是超级重要的,但是我认为它只是整个过程中的一小部分,且不一定是最难学的. 学习如何写代码要花些时间,但是只要有足够的训练(每天写代码,坚持数年),你就能真正擅长它. 你知道的,我相信在某种 ...

  7. 程序员在地铁写代码遭疯狂吐槽!网友:装什么装

    01 作为了解程序员这个行业的人来说 程序员的工作真的很累 加班已经成为他们的标签 有的时候网站出事或者需求比较紧急的时候 可能路边也是他们的工作场地 所以这个时候对于程序员们的工作来说 也是不分场合 ...

  8. 熬夜写代码,不如换女装入GitHub获上千Star?

    作者 | 琥珀 出品 | AI科技大本营(ID: rgznai100) 程序员如何以合规手段快速获得 GitHub 上千 Star? 新年刚过,GitHub Trending 上一个名为"D ...

  9. 清华博士接亲被要求现场写代码,网友:真是面向对象编程!

    源 / 顶级程序员 因为结婚,程序员又上热搜了 但这次不是加班维护服务器 而是程序员接亲被要求现场写代码 01 清华计算机博士 接亲被要求现场写代码 陕西西安,一位清华计算机博士接亲,被新娘要求当场写 ...

最新文章

  1. 由于获得较好的处理机资源,因此将之前的数据整合到一起。
  2. 存储安全 系统的最后一道防线
  3. Gitlab+Jenkins学习之路(三)之gitlab权限管理--issue管理
  4. 皮一皮:有这样的妈妈挺有趣的...
  5. WPF实现仪表盘(刻度跟随)
  6. 微软认证学习资料大集合(软件+资料)
  7. Java零基础学习之路(十三)Java super
  8. redhat java配置
  9. windows找不到文件gpedit.msc_极简技术|电脑文件全搜索,没有找不到的东西
  10. 五大常用算法实例列举
  11. android大智慧安装目录,大智慧的文件目录结构
  12. 项目沟通管理 试题分析
  13. 一键跳转添加QQ好友 点击链接直接跳转到QQ好友页面如何实现
  14. 卡特兰数 Catalan number
  15. 推荐信息安全书籍27本(含电子书)
  16. kafka 延时消息处理
  17. Python实现自省的方法有哪些?
  18. 解决windows10 ping不通问题(请求超时)
  19. Iperf使用参数详解
  20. 蛋白质相互作用位点标签的获取方法

热门文章

  1. PHPWord案例整理
  2. 在项目推送到heroku时,执行命令heroku login出现press any key to open up the browser to login or q to exit这个,是怎么回事?
  3. [20190402]关于semtimedop函数调用2.txt
  4. C++讲义——第一节C++基础
  5. LVS-------------------------------
  6. Silverlight 2.5D RPG游戏技巧与特效处理:(五)HLSL渲染动画
  7. Qt关联信号与槽的四种方式
  8. 程序员的错觉:我能做管理
  9. 规则引擎drools【一】
  10. github克隆代码加速