- 使用 Spring Initializr 创建 Spring Boot 应用程序
- 在Spring Boot中配置Cassandra
- 在 Spring Boot 上配置 Tomcat 连接池
- 将Camel消息路由到嵌入WildFly的Artemis上
一年一度的高考结束了,准大一的学子们今天起你们不用去深究何是“本手”何是“俗手”,放松起来去疯狂地玩吧! 特爱学编程的孩子们在高中三年里也根本挤不出时间学,这个假期先轻松放空一段时间后,来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 在问答频道中刷题积累到的小技巧》连载之(四)
在 firefox 中,链接手形光标显示正常,但在 IE7 中显示文本光标。 如何在所有浏览器的链接上获得相同的光标(手)? 我可以在 CSS 重置中添加一些内容,以便在所有浏览器中的链接上获取光标吗
我试图在表单元素上方显示我的表单标签,所以我在我的 CSS 中使用了 display:block。但是,我无法通过这种方式每行显示超过 1 个表单元素。 如何正确更新我的 CSS 以在表单元素上方显示
我想找到人手的宽度,但卡在手上的洞上。 我有一只手的图片并找到了它的二进制文件。手上有一个圆圈,其半径和中心已知(引用对象)。我想找到手的宽度,但它上面有一些补丁(孔),这阻碍了找到手的最佳宽度。 这
我尝试为一款游戏制作一个机器人,但他们有很酷的反像素机器人技术。 所以我想,“如果我可以制作一个机器人,只检查光标是否变为手形然后单击,它就会起作用,”因为我需要收集奖金盒,当你将光标指向它时,它变为
我尝试为一款游戏制作一个机器人,但他们有很酷的反像素机器人技术。 所以我想,“如果我可以制作一个机器人,只检查光标是否变为手形然后单击,它就会起作用,”因为我需要收集奖金盒,当你将光标指向它时,它变为
所以我有一副牌的代码,但我不知道如何让另一个类来处理 4 手牌,每手 10 张牌。另一类应在屏幕上以文字形式打印 4 手 10 张随机卡片。有人可以向我展示如何完成此任务的代码吗?我也使用 blueJ
我正在尝试通过在开放正方形内插入图标来使用 fontawesome 创建图标。悬停时,我想更改正方形内背景的颜色,以及正方形的实际颜色和图标颜色。 我在这里举了一个例子:http://jsfiddle
当我手动启 Action 业时,我正在寻找设置变量的正确方法。 我试过 : stages: - test my_job: stage: test script: - echo "H
我必须添加以下代码: a {cursor:pointer;} 在 angular-ui-bootstrap 中将光标更改为标签、分页、下拉切换等链接上的指针/手。 为什么默认不改为指针?这是故意的吗?
我是一名优秀的程序员,十分优秀!