IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 写代码也有本手俗手之分,而我们要善于发现妙手! -> 正文阅读

[Python知识库]写代码也有本手俗手之分,而我们要善于发现妙手!


一年一度的高考结束了,准大一的学子们今天起你们不用去深究何是“本手”何是“俗手”,放松起来去疯狂地玩吧!?特爱学编程的孩子们在高中三年里也根本挤不出时间学,这个假期先轻松放空一段时间后,来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 False

isPrime = 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,1

for n in range(1,m+1):
    t *= n
    f *= -1
    s += f*t/(2*n-1)

print(f'总和为{s:.3f}')

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

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-06-14 22:33:54  更:2022-06-14 22:34:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 13:48:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码