写代码也有本手俗手之分,而我们要善于发现妙手!
一年一度的高考结束了,准大一的学子们今天起你们不用去深究何是“本手”何是“俗手”,放松起来去疯狂地玩吧! 特爱学编程的孩子们在高中三年里也根本挤不出时间学,这个假期先轻松放空一段时间后,来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 在问答频道中刷题积累到的小技巧》连载之(四)
写代码也有本手俗手之分,而我们要善于发现妙手!相关推荐
- python写了代码_Python写代码的用法建议
1.Mutable and immutable types Python有两种内置或用户定义的类型 可变类型是允许就地修改内容的类型.典型的可变列表是列表和词典:所有列表都有变异方法,如 list.a ...
- java 8代码 改 java7_Java 8 到 Java 14,改变了哪些你写代码的方式?
前几天,JDK 14 正式发布了,这次发布的新版本一共包含了16个新的特性. 其实,从Java8 到 Java14 ,真正的改变了程序员写代码的方式的特性并不多,我们这篇文章就来看一下都有哪些. La ...
- Java 8 到 Java 14,改变了哪些你写代码的方式?
前几天,JDK 14 正式发布了,这次发布的新版本一共包含了16个新的特性. 其实,从Java8 到 Java14 ,真正的改变了程序员写代码的方式的特性并不多,我们这篇文章就来看一下都有哪些. La ...
- java update 8_版本任你发,我用Java 8!JDK的更新,改变了哪些你写代码的方式?...
前几天,JDK 14 正式发布了,这次发布的新版本一共包含了16个新的特性. 其实,从Java8 到 Java14 ,真正的改变了程序员写代码的方式的特性并不多,我们这篇文章就来看一下都有哪些. La ...
- 如果让 AI 来写高考作文,能得多少分?
大家好,我是树义. 不知不觉,这两天又是高考的时候.距离我高考已经过去了整整 12 个年头了,想想那时候智能手机也不怎么普及,不像现在那样人手一个智能机. 现在不仅信息技术发达,人工智能技术也是突飞猛 ...
- 写代码可能是成为软件工程师最容易的部分
当然,写代码是超级重要的,但是我认为它只是整个过程中的一小部分,且不一定是最难学的. 学习如何写代码要花些时间,但是只要有足够的训练(每天写代码,坚持数年),你就能真正擅长它. 你知道的,我相信在某种 ...
- 程序员在地铁写代码遭疯狂吐槽!网友:装什么装
01 作为了解程序员这个行业的人来说 程序员的工作真的很累 加班已经成为他们的标签 有的时候网站出事或者需求比较紧急的时候 可能路边也是他们的工作场地 所以这个时候对于程序员们的工作来说 也是不分场合 ...
- 熬夜写代码,不如换女装入GitHub获上千Star?
作者 | 琥珀 出品 | AI科技大本营(ID: rgznai100) 程序员如何以合规手段快速获得 GitHub 上千 Star? 新年刚过,GitHub Trending 上一个名为"D ...
- 清华博士接亲被要求现场写代码,网友:真是面向对象编程!
源 / 顶级程序员 因为结婚,程序员又上热搜了 但这次不是加班维护服务器 而是程序员接亲被要求现场写代码 01 清华计算机博士 接亲被要求现场写代码 陕西西安,一位清华计算机博士接亲,被新娘要求当场写 ...
最新文章
- 由于获得较好的处理机资源,因此将之前的数据整合到一起。
- 存储安全 系统的最后一道防线
- Gitlab+Jenkins学习之路(三)之gitlab权限管理--issue管理
- 皮一皮:有这样的妈妈挺有趣的...
- WPF实现仪表盘(刻度跟随)
- 微软认证学习资料大集合(软件+资料)
- Java零基础学习之路(十三)Java super
- redhat java配置
- windows找不到文件gpedit.msc_极简技术|电脑文件全搜索,没有找不到的东西
- 五大常用算法实例列举
- android大智慧安装目录,大智慧的文件目录结构
- 项目沟通管理 试题分析
- 一键跳转添加QQ好友 点击链接直接跳转到QQ好友页面如何实现
- 卡特兰数 Catalan number
- 推荐信息安全书籍27本(含电子书)
- kafka 延时消息处理
- Python实现自省的方法有哪些?
- 解决windows10 ping不通问题(请求超时)
- Iperf使用参数详解
- 蛋白质相互作用位点标签的获取方法
热门文章
- PHPWord案例整理
- 在项目推送到heroku时,执行命令heroku login出现press any key to open up the browser to login or q to exit这个,是怎么回事?
- [20190402]关于semtimedop函数调用2.txt
- C++讲义——第一节C++基础
- LVS-------------------------------
- Silverlight 2.5D RPG游戏技巧与特效处理:(五)HLSL渲染动画
- Qt关联信号与槽的四种方式
- 程序员的错觉:我能做管理
- 规则引擎drools【一】
- github克隆代码加速