【Python】Python 100题 分类入门练习题 - 新手友好
Python 100题 分类入门练习题 - 新手友好篇 - 整合篇
- 一、数学问题
- 题目1:组合数字
- 题目2:利润计算
- 题目3:完全平方数
- 题目4:日期天数计算
- 题目11:兔子繁殖问题
- 题目18:数列求和
- 题目19:完数判断
- 题目21:猴子吃桃
- 题目24:分数序列求和
- 题目25:阶乘累加
- 题目26:阶乘递归
- 题目28:年龄推理
- 题目80:猴子分桃问题
- 题目83:奇数组合数
- 题目85:9的倍数验证
- 题目81:数学等式验证
- 二、字符串操作
- 题目13:水仙花数
- 题目17:字符统计
- 题目33:列表转字符串
- 题目62:子串查找
- 题目89:加密算法
- 题目96:子串计数
- 题目98:大小写转换
- 题目60:字符串长度
- 题目86:字符串连接
- 题目31:星期判断
- 三、列表与字典操作
- 题目5:三数排序
- 题目38:矩阵对角线
- 题目44:矩阵相加
- 题目68:数组循环移位
- 题目69:约瑟夫环问题
- 题目72:创建链表
- 题目73:反向链表
- 题目100:列表转字典
- 题目39:数组插入排序
- 题目67:数组极值交换
- 题目79:字符串排序
- 题目66:数组逆序输出
- 题目40:数组逆序
- 四、文件操作
- 题目97:写入文件
- 题目98:文件保存
- 题目99:文件合并排序
- 五、日期时间处理
- 题目10:格式化时间
- 题目16:日期输出
- 题目95:日期解析
- 题目91:时间函数示例1
- 题目92:时间函数示例2
- 题目93:时间函数示例3
- 题目94:反应速度测试
- 六、图形绘制
- 题目56:圆形绘制
- 题目57:直线绘制
- 题目58:方形绘制
- 题目59:综合图形
- 题目63:椭圆绘制
- 题目64:图形组合
- 题目65:艺术图案
- 题目23:菱形打印
- 七、算法与数据结构
- 题目6:斐波那契数列
- 题目12:素数筛选
- 题目20:小球弹跳计算
- 题目22:比赛名单排列
- 题目61:杨辉三角生成
- 题目76:分段函数计算
- 题目77:循环输出列表
- 题目78:最大年龄查找
- 题目84:列表极值交换
- 题目8:九九乘法表
- 题目9:延时输出
- 题目14:质因数分解
- 题目15:成绩分级
- 八、位运算
- 题目51:按位与
- 题目52:按位或
- 题目53:按位异或
- 题目54:位截取
- 题目55:按位取反
- 题目82:八进制转十进制
- 九、其他编程问题
- 题目27:递归逆序
- 题目29:数字拆分统计
- 题目30:回文数判断
- 题目32:列表逆序输出
- 题目34:三次输出函数
- 题目35:文本颜色设置
- 题目36:素数筛选
- 题目37:十数排序
- 题目41:静态变量
- 题目42:自动变量
- 题目43:静态变量案例
- 题目45:数字累加
- 题目46:平方阈值判断
- 题目47:变量交换
- 题目48:数字比较
- 题目49:匿名函数
- 题目50:随机数生成
- 题目71:学生数据IO
- 题目87:结构体变量传递
- 题目88:星号打印
一、数学问题
题目1:组合数字
题目1: 有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?
# 正常
num =[]
for a in range(1,5):for b in range(1,5):for c in range(1,5):if (a != b and a!= c and b!=c) : # if a != b != c 只判断了a不等于b,b不等于c,没有判断a和c的关系 num.append(a*100 + b*10 + c)
print(num) # 简写:
x = [1,2,3,4]
num = [i*100 + j*10 + k for i in x for j in x for k in x if (j != i and k != j and k != i)]# itertools ,结果需处理
import itertools
num = []
x=[1,2,3,4]
for i in itertools.permutations(x,3):num.append(i)
print(num)
题目2:利润计算
题目2:企业发放的奖金根据利润提成。
利润(I)低于或等于10万元时,奖金可提10%;
利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;
20万到40万之间时,高于20万元的部分,可提成5%;
40万到60万之间时高于40万元的部分,可提成3%;
60万到100万之间时,高于60万元的部分,可提成1.5%,
高于100万元时,超过100万元的部分按1%提成,
从键盘输入当月利润I,求应发放奖金总数?
"""
# 比较简单,直接上答案
def get_bonus(profit):bonus = 0if profit <= 100000:bonus = profit*0.1 # 不能写百分数7.5%,需转化为小数点elif 100000 < profit <= 200000:bonus = get_bonus(100000) + (profit-100000)*0.075 elif 200000 < profit <= 400000:bonus = get_bonus(200000) + (profit-200000)*0.05elif 400000 < profit <= 600000:bonus = get_bonus(400000) + (profit-400000)*0.03elif 600000 < profit <= 1000000:bonus = get_bonus(600000) + (profit-600000)*0.015else :bonus = get_bonus(1000000) + (profit-1000000)*0.01return bonusget_bonus(1000000)
题目3:完全平方数
题目3:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
"""
分析:
a + 100 = b**2 + 168 = c**2
168 = c**2 - b**2
因为b小于c,且b,c都属于168,所以b∈c for c in range(1,168):for b in range(1,c): if c**2-b**2 == 168:a = b**2 - 100print(a)"""
题目4:日期天数计算
题目4:输入某年某月某日,判断这一天是这一年的第几天?
"""
分析:
1. 月份 + 日 = 天数;
2. 1,4,9,11月 固定30天,3,5,6,8,10,12月 固定31天, 2月闰年28天,非润29天;
3. 考虑系统语言计算差会存在1天误差,所以起始天数为1;
def get_days(year,month,day):days = [31,28,31,30,31,60,31,31,30,31,30,31] sum = 1 # 不能是0,日期从1开始算if year % 400 == 0 or (year % 4 == 0 and year % 100 != 0) :days[2] = days[2]+1else:days[2] = days[2]for i in range(month-1):sum += days[i]return sum get_days(2021,3,1)
题目11:兔子繁殖问题
题目11:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
"""
分析:
每一对新兔子的第3个月会数量裂变,所以这一对兔子第n月生的兔子数为: sum = 2+(n-2)*2; 第二个兔子对也遵循这个逻辑;
month = [1,2,3,4,5,6,7,8...]
rab_1 = [2,2,2,2,2,2,2,2...]
rab_2 = [0,0,2,2,4,6,8,10...]
rab_3 = [0,0,0,2,2,4,6,8...]
rab_4 = [0,0,0,0,2,2,4,6...]
rab_5 = [0,0,0,0,0,2,2,4]
rab_6 = [0,0,0,0,0,0,2,2]
rab_7 = [0,0,0,0,0,0,0,2]
...
汇总 = [2,2,4,6,10,16,26,42...]
从汇总可得,符合斐波那契数列的变式, 从官网看得理解题目和答案不匹配,一对=2 而不是1; def rabbits(n):if n==1 or n==2:return 2return rabbits(n-1)+rabbits(n-2)rabbits(7)
题目18:数列求和
题目18:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制.
"""
分析:
传入2个参数
1.总的几个数相加即最长的长度: len = 5
2.传入的n 是什么: 如 2 22 222 2222 22222
找规律:
2 = 2*10**0 n = 2 幂 = (len-1)
22 = 2*10**1+2
222 = 2*10**2 + 22
2222 = 2*10**3 + 222
得公式: tmp = n*10**(len-1) + tmp def get_sum(n,len):sum = 0 # 输出和 tmp = 0 # 分解的值 for a in range(1,len+1): # a 浮标 = 幂 tmp = n*10**(a-1) + tmp sum += tmp return sum
get_sum(2,5)
题目19:完数判断
题目19:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。
"""
分析: 同14先找因子 然后 n = sum(因子和)for a in range(1, 1000):sum = 0for b in range(1, a):if a % b == 0:sum += bif sum == a:print(a)
题目21:猴子吃桃
题目21:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个.第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
"""
分析: 每次1/2+1,倒推即最后剩下的(n+1)*2 = n 前一天的即1 1534/2-1 = 7662 766/2-1 = 382 3 382/2-1 = 1904 190/2-1 = 945 94/2 -1 = 46 6 46/2 -1 = 22 7 22/2 -1 = 10 8 10/2 -1 = 4 9 4/2 -1 = 1
def peach(rest):rest = 1for a in range(1,11): # 第10天剩1个,实际是第九天吃完后还剩1个 a = 循环天数if a <= 9: rest = (rest+1)*2a = a + 1else:break return rest
peach(10)
题目24:分数序列求和
题目24:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
"""
分析:
2 3 5 8 13 21
1 2 3 5 8 13
前20项之和首先得得到第20个数是什么,然后每个数相加 def add_sum(n): # n第几个数a = 1 # 分母 b = 1 # 分子sum = 0 for i in range(1,n+1):a,b = b,a+bsum += b/a return sum
add_sum(20)
题目25:阶乘累加
题目25:求1+2!+3!+...+20!的和。
"""
分析:24题是累加的概念,这里是累乘 def mul_sum(n): # n第几个数sum = 0tmp = 1for x in range(1,n+1): tmp *= xsum += tmp return sum
mul_sum(3)
题目26:阶乘递归
题目26:利用递归方法求5!。
"""
分析:25题是累乘,26是简单化了
def mul_sum(n): # n第几个数tmp = 1for x in range(1,n+1): tmp *= xreturn tmp
mul_sum(5)
题目28:年龄推理
题目28:有5个人坐在一起.问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第3个人,又说比第2人大2岁。问第2个人,说比第1个人大2岁。最后问第一个人,他说是10岁。请问第五个人多大?
"""
分析:
递归思想 每前1个人+2岁即可;
age = 10
for i in range(1,5):if i <=4:age += 2else: age
print(age)
题目80:猴子分桃问题
题目80:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份. 第三、第四、第五只猴子都是这样做的. 问海滩上原来最少有多少个桃子?
"""
分析: 同21题相似 每5份多1剩4份,连续5次,此外,要考虑分摊除尽的问题,桃子没法分成小于1个;
def monekys(n):if n==num:return(4*x) #最后剩的桃子的数目else:return(monekys(n+1)*5/4+1)
x=1
while 1:count=0for i in range(1,num):if monekys(i)%4==0 :count=count+1if count==num-1:print("海滩上原来最少有%d个桃子" % int(monekys(0)))breakelse:x=x+1
题目83:奇数组合数
题目83:求0—7所能组成的奇数个数。
"""
分析:
0-7 共8个数,个位奇数为1,3,5,7,2位数及以上首位不可以为0;
则: 组成1位数是4个组成2位数是7*4个组成3位数是7*8*4个组成4位数是7*8*8*4个.... 依次类推 L = []
sum = 0
for i in range(1,9): # i等于位数 if i == 1 :num = 4 sum += numif i >=2:num = 4*7*8**(i-2) sum += num
print(sum)
题目85:9的倍数验证
题目85:输入一个奇数,然后判断最少几个 9 除于该数的结果为整数。
"""
i = int(input('输入奇数: '))
sum = 9
while sum % i != 0:sum = sum * 10 + 9 # 循环赋值 print(sum)
题目81:数学等式验证
题目81:809*??=800*??+9*?? 其中??代表的两位数, 809*??为四位数,8*??的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??后的结果。
"""
分析: 809*ab 四位数 得到ab<=128*ab 两位数 得到ab<=129*ab 三位数 得到ab>11所以ab = 12
for i in range(10,101):if 809 * i == 800 * i + 9 * i:if 8 * i < 100 :if 9 * i > 100 and 9 * i < 1000:print(i ,809 * i)
二、字符串操作
题目13:水仙花数
题目13:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
"""
// 取整 % 取余
num = []
for n in range(100,1000):a = n//100b = n//10%10 c = n%10 if n == a**3 + b**3 + c**3 :num.append(n)
print(num)
题目17:字符统计
题目17:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
"""
考察string包的用法, 举个例子: "kobe 8&24"
英文:4 数字:3 空格:1 其他字符:1
要自己写的话,逻辑写入0-9/大小写一致a-z/" "空格/其他 先定义; import string
def get_str(n):letters = 0space = 0digit = 0others = 0for a in n:if a.isalpha(): # 是否字母 letters += 1elif a.isspace(): # 是否空格space += 1elif a.isdigit(): # 是否数字digit += 1else: others += 1 print ('char = %d,space = %d,digit = %d,others = %d' % (letters,space,digit,others))
get_str("Kobe 8&24")
题目33:列表转字符串
题目33:按逗号分隔列表。
"""
L = [1,2,3,4,5]a = ','.join(str(i) for i in L )
print (a)L = repr(L)[1:-1]
print(L)
题目62:子串查找
题目62:查找字符串。
"""
分析: 基础运用
str_1 = 'abcdefg'
str_2 = 'cde'
print(str_1.find(str_2))
题目89:加密算法
题目89:某个公司采用公用电话传递数据,数据是四位的整数. 在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。
"""
分析: 即不断赋值和替换的过程。
n = 1234
加5: 6789
和/10: 6789 # 题目表达不清
交换: 9876
n = str(input())
a = []
for i in range(4):a.append((int(n[i])+5)%10)
a[0],a[3] = a[3],a[0]
a[1],a[2] = a[2],a[1]
print("".join('%s' %s for s in a))
题目96:子串计数
题目96:计算字符串中子串出现的次数。
"""
str1 = input("请输入一个字符串:")
str2 = input("请输入一个子字符串: ")
print(str1.count(str2))
题目98:大小写转换
题目98:从键盘输入一个字符串,将小写字母全部转换成大写字母,然后输出到一个磁盘文件"test"中保存。
"""
import sys
str = input('请输入一个字符串:\n')
with open('test1.txt','w') as f:f.write(str.upper())
题目60:字符串长度
题目60:计算字符串长度。
"""
str = 'abc'
print(len(str))
题目86:字符串连接
题目86:两个字符串连接程序。
"""
a = "Kobe"
b = "24"
c = a + b
print(c)
题目31:星期判断
题目31:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。
"""
分析:
week=['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday']
特殊情况即首字母为T 和S的情况,简单判断即可;
fir = input("第1个字母:")
if fir == 'M':print("周一")
elif fir == 'W':print("周三")
elif fir == 'F':print("周五")
elif fir == 'T':s = input("第2个字母:")if s == 'u':print("周二")elif s == 'h':print("周四")
elif fir == 'S':s = input("第2个字母:")if s == 'a':print("周六")elif s == 'u':print("周日")
else :print("输入错误")
三、列表与字典操作
题目5:三数排序
题目5:输入三个整数x,y,z,请把这三个数由小到大输出。
"""
def px_3(a,b,c):num = [a,b,c]num.sort()return numpx_3(1,8,2)
题目38:矩阵对角线
题目38:求一个3*3矩阵主对角线元素之和。
"""
分析:
1.主对角线元素之和 ---> 知道定义很重要 在一个n阶方阵(或是n阶行列式)中,从左上角到右下角这一斜线方向上的n个元素所在的对角线,叫做n阶方阵(或行列式)的主对角线。
2.设置一个双重for循环控制输入二维数组,再将n[i][j]累加后输出.# 未知矩阵
if __name__ == '__main__':a = []sum = 0.0for i in range(3):a.append([])for j in range(3):a[i].append(float(input("input num:\n")))for i in range(3):sum += a[i][i]print (sum)# 已知矩阵
m = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
sum = 0
for i in range(0, 3):sum += m[i][i]
print(sum)
题目44:矩阵相加
题目44:两个 3 行 3 列的矩阵,实现其对应位置的数据相加,并返回一个新矩阵:
"""
X = [[12,7,3],[4 ,5,6],[7 ,8,9]]
Y = [[5,8,1],[6,7,3],[4,5,9]]分析: 同38一样;
z = []
for i in range(3):z.append([])
for i in range(3):for j in range(3):z[i].append(x[i][j]+y[i][j])
print(z)
题目68:数组循环移位
题目68:有 n 个整数,使其前面各数顺序向后移 m 个位置,最后 m 个数变成最前面的 m 个数
"""
分析: 因为总长度不变,即最后一项变为第一个,最后第二个变为整数第二个即a[i] = a[i+m] , a[len(a)-1] = a[i]
逻辑和方法对了,其实就很简单了
a = [1,2,3,4,5,6,7] # 测试列表
m = 5 # 设置向后移动 3 位
for i in range(m):a.insert(0, a.pop()) # pop 剔除默认最后一位,insert加入指定位置指定数;
print(a)
题目69:约瑟夫环问题
题目69:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
"""
n = [i+1 for i in range(20)]
i = 1
while len(n) > 1:if i % 3 == 0:n.pop(0)else:n.insert(len(n),n.pop(0)) # 同68 考验逻辑i += 1
print(n)
题目72:创建链表
题目72:创建一个链表。
"""
l=[ input("please input a number:\n") for i in range(5)]
print(l)
题目73:反向链表
题目73:反向输出一个链表。
"""
l=[ input("please input a number:\n") for i in range(5)]
l.reverse()
print(l)
题目100:列表转字典
题目100:列表转换为字典。
"""
# 从列表创建字典
i = ['a','b','c']
l = [1,2,3]
b=dict(zip(i,l))
print(b)
题目39:数组插入排序
题目39:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
"""
分析: 题目其实说的不太明确,所以要挖掘隐藏条件: 已经排好序则代表按顺序大小排, 新输入的数,也需要从小到大排;所以思路整体上就是循环比大小;
a = [1,2,3,5,6,7]
插入数字 4
a.append(4)
sorted(a)但显然题目考察的是希望自己能写这个逻辑,纯循环遇上数字较多的效率会比较低,所以可以折半选取再循环;
a = [1,2,3,5,6,7]
b = 4
for i in range(len(a)-1):if b >= a[i] and b <= a[i+1]:a.insert(i+1, b)breakelif i == (len(a)-2):a.append(b)break
print(a)
题目67:数组极值交换
题目67:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
"""
分析: 利用下标和max,min即可; a = [1,2,3,4,5]
for i in range(len(a)):if a[i] == max(a):a[0],a[i]=a[i],a[0] # 不可分开写,否则会变成[6, 3, 4, 5, 6] 先后赋值;if a[i] == min(a):a[len(a)-1],a[i]=a[i],a[len(a)-1]
print(a) # 法2
a = [1,3,4,5,6]
print(a)
# 最小的放到最后
min = min(a)
a.remove(min)
a.append(min)
# 最大的放到最前面
max = max(a)
a.remove(max)
a.insert(0,max)
print(a)
题目79:字符串排序
题目79:字符串排序。
"""
# 字符串输入寄了
L = []
L.sort()
print(L)
题目66:数组逆序输出
题目66:输入3个数a,b,c,按大小顺序输出。
"""
分析: 也没懂这个题顺序是怎么来的,感觉一堆乱...
前面太多一样的,这里就不写了..
题目40:数组逆序
题目40:将一个数组逆序输出。
"""
分析: 和29,32一样,python3中直接可输出;
a = ["x","y","z"]
b = a[::-1]
四、文件操作
题目97:写入文件
题目97:从键盘输入一些字符,逐个把它们写到磁盘文件上,直到输入一个 # 为止。
"""
filename = input('输入文件名:\n')
fp = open(filename , "w+")
ch = ''
while '#' not in ch:fp.write(ch)ch = input('输入字符串:\n')
fp.close()
题目98:文件保存
题目98:从键盘输入一个字符串,将小写字母全部转换成大写字母,然后输出到一个磁盘文件"test"中保存。
"""
import sys
str = input('请输入一个字符串:\n')
with open('test1.txt','w') as f:f.write(str.upper())
题目99:文件合并排序
题目99:有两个磁盘文件A和B,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列), 输出到一个新文件C中。
"""
with open('test1.txt') as f1, open('test2.txt') as f2, open('2.txt', 'w') as f3:for a in f1:b = f2.read()c = list(a + b)c.sort()d = ''d = d.join(c)f3.write(d)
五、日期时间处理
题目10:格式化时间
题目10:暂停一秒输出,并格式化当前时间。
"""
# 主要考察time的使用 2个函数
# 获取当前时间: time.localtime(time.time())
# 格式化时间: time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) import time
time.sleep(1)
print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
题目16:日期输出
题目16:输出指定格式的日期。
"""
和第10题一样,考验datetime包的用法
import datetime
print(datetime.date.today())
print(datetime.date.today().strftime('%d/%m/%Y'))
print(datetime.date(1941,1,5))
题目95:日期解析
题目95:字符串日期转换为易读的日期格式。
"""
from dateutil import parser
dt = parser.parse("Aug 24 2022 12:00AM")
print(dt)
题目91:时间函数示例1
题目91:时间函数举例1。
"""
import time
print time.ctime(time.time())
print time.asctime(time.localtime(time.time()))
print time.asctime(time.gmtime(time.time()))
题目92:时间函数示例2
题目92:时间函数举例2。
"""
import time
start = time.time()
for i in range(3000):print(i)
end = time.time()
print (end - start)
题目93:时间函数示例3
题目93:时间函数举例3。
"""
if __name__ == '__main__':import timestart = time.clock()for i in range(100):print(i)end = time.clock()print('different is %6.3f' % (end - start))
题目94:反应速度测试
题目94:时间函数举例4,一个猜数游戏,判断一个人反应快慢。 别看代码长,其实不难
"""
if __name__ == '__main__':import timeimport randomplay_it = input('do you want to play it.(\'y\' or \'n\')')while play_it == 'y':c = input('input a character:\n')i = random.randint(0,2**32) % 100print ('please input number you guess:\n')start = time.clock()a = time.time()guess = int(input('input your guess:\n'))while guess != i:if guess > i:print('please input a little smaller')guess = int(input('input your guess:\n'))else:print('please input a little bigger')guess = int(input('input your guess:\n'))end = time.clock()b = time.time()var = (end - start) / 18.2print (var)# print 'It took you %6.3 seconds' % time.difftime(b,a))if var < 15:print ('you are very clever!')elif var < 25:print ('you are normal!')else:print ('you are stupid!')print ('Congradulations')print ('The number you guess is %d' % i)play_it = input('do you want to play it.')
六、图形绘制
题目56:圆形绘制
题目56:画图,学用circle画圆形。
"""
分析: 主要为turtle包的使用
import turtle
turtle.title("打开画图软件")
turtle.setup(800,600,0,0)
pen=turtle.Turtle()
pen.color("blue")
pen.width(5)
pen.shape("turtle")
pen.speed(10)
pen.circle(100)
题目57:直线绘制
题目57:画图,学用line画直线。
"""
分析: 主要为turtle包的使用
import turtle
def drawline(n):t=turtle.Pen()t.color(0.3,0.8,0.6) #设置颜色,在0--1之间t.begin_fill() #开始填充颜色for i in range(n): #任意边形t.forward(50)t.left(360/n)t.end_fill() #结束填充颜色
drawline(4)
题目58:方形绘制
题目58:画图,学用rectangle画方形。
"""
分析: 考察tkinter包的使用
from tkinter import *
root = Tk()
root.title('Canvas')
canvas = Canvas(root,width = 400,height = 400,bg = 'yellow')
x0 = 263
y0 = 263
y1 = 275
x1 = 275
for i in range(19):canvas.create_rectangle(x0,y0,x1,y1)x0 -= 5y0 -= 5x1 += 5y1 += 5
canvas.pack()
root.mainloop()
题目59:综合图形
题目59:画图,综合例子。
"""
分析: 考察tkinter包的使用
if __name__ == '__main__':from Tkinter import *canvas = Canvas(width = 300,height = 300,bg = 'green')canvas.pack(expand = YES,fill = BOTH)x0 = 150y0 = 100canvas.create_oval(x0 - 10,y0 - 10,x0 + 10,y0 + 10)canvas.create_oval(x0 - 20,y0 - 20,x0 + 20,y0 + 20)canvas.create_oval(x0 - 50,y0 - 50,x0 + 50,y0 + 50)import mathB = 0.809for i in range(16):a = 2 * math.pi / 16 * ix = math.ceil(x0 + 48 * math.cos(a))y = math.ceil(y0 + 48 * math.sin(a) * B)canvas.create_line(x0,y0,x,y,fill = 'red')canvas.create_oval(x0 - 60,y0 - 60,x0 + 60,y0 + 60)for k in range(501):for i in range(17):a = (2 * math.pi / 16) * i + (2 * math.pi / 180) * kx = math.ceil(x0 + 48 * math.cos(a))y = math.ceil(y0 + 48 + math.sin(a) * B)canvas.create_line(x0,y0,x,y,fill = 'red')for j in range(51):a = (2 * math.pi / 16) * i + (2* math.pi / 180) * k - 1x = math.ceil(x0 + 48 * math.cos(a))y = math.ceil(y0 + 48 * math.sin(a) * B)canvas.create_line(x0,y0,x,y,fill = 'red')mainloop()
题目63:椭圆绘制
题目63:画椭圆。
"""
分析: 考察tkinter包的使用
if __name__ == '__main__':from Tkinter import *x = 360y = 160top = y - 30bottom = y - 30canvas = Canvas(width = 400,height = 600,bg = 'white')for i in range(20):canvas.create_oval(250 - top,250 - bottom,250 + top,250 + bottom)top -= 5bottom += 5canvas.pack()mainloop()
题目64:图形组合
"""
题目64:利用ellipse 和 rectangle 画图。。
"""
if __name__ == '__main__':from Tkinter import *canvas = Canvas(width = 400,height = 600,bg = 'white')left = 20right = 50top = 50num = 15for i in range(num):canvas.create_oval(250 - right,250 - left,250 + right,250 + left)canvas.create_oval(250 - 20,250 - top,250 + 20,250 + top)canvas.create_rectangle(20 - 2 * i,20 - 2 * i,10 * (i + 2),10 * ( i + 2))right += 5left += 5top += 10canvas.pack()mainloop()
题目65:艺术图案
题目65:一个最优美的图案。
"""
import math
class PTS:def __init__(self):self.x = 0self.y = 0
points = []def LineToDemo():from Tkinter import *screenx = 400screeny = 400canvas = Canvas(width = screenx,height = screeny,bg = 'white')AspectRatio = 0.85MAXPTS = 15h = screenyw = screenxxcenter = w / 2ycenter = h / 2radius = (h - 30) / (AspectRatio * 2) - 20step = 360 / MAXPTSangle = 0.0for i in range(MAXPTS):rads = angle * math.pi / 180.0p = PTS()p.x = xcenter + int(math.cos(rads) * radius)p.y = ycenter - int(math.sin(rads) * radius * AspectRatio)angle += steppoints.append(p)canvas.create_oval(xcenter - radius,ycenter - radius,xcenter + radius,ycenter + radius)for i in range(MAXPTS):for j in range(i,MAXPTS):canvas.create_line(points[i].x,points[i].y,points[j].x,points[j].y)canvas.pack()mainloop()if __name__ == '__main__':LineToDemo()
题目23:菱形打印
题目23:打印出如下图案(菱形):*********
****************
"""
def pic(n):for i in range(0,n):a = abs(i - int(n/2))b = n - abs(i - int(n/2))print(" "*a+"*"*(b-a))
pic(7)
七、算法与数据结构
题目6:斐波那契数列
题目6:斐波那契数列(Fibonacci sequence),又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……。
"""
从第3个数起,每一个数等于前2个数的和;
num = f(n-1)+f(n-2) (n>=2)def Fibonacci_sequence(n):a, b = 0, 1while n>0:a, b, n = b, a + b, n - 1print(a)
Fibonacci_sequence(10)
题目12:素数筛选
题目12:判断101-200之间有多少个素数,并输出所有素数。
"""
分析:
判断素数x方法: 从2-->(x-1)之间能有一个数被整除 则非素数; num = []
for a in range(101,200):for b in range(2,a-1):if a%b == 0 :break else: # 这里位置不能写错,不然容易陷入无限循环; num.append(a)
print(num)
题目20:小球弹跳计算
题目20:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
""" 落下高度 返回高度 落地时经过距离
第一次 100 50 100
第二次 50 25 100 + 100 = 200
第三次 25 12.5 50 + 100 + 100 = 250
第四次 12.5 6.25 25 + 100 + 100 +50 = 275
可以看到规律
第n次 分析找出规律即可 def fall(n):height = 100far = 100for i in range(2, n+1):far = far + heightheight = height / 2return far,height/2
fall(10)
题目22:比赛名单排列
题目22:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。
"""
分析: 直接可以得出答案,c和y, a和z,b和x ,用变成实现则将判断逻辑写下即可;
for a in ['x','y','z']:for b in ['x', 'y', 'z']:for c in ['x', 'y', 'z']:if(a!=b)and(b!=c)and(c!=a) and (a!='x') and (c!='x') and (c!='z'):print('a和%s比赛,b和%s比赛,c和%s比赛' %(a,b,c))法2:
m=['a','b','c']
n=['x','y','z']
L=[]
for i in range(0,3):for j in range(0,3):L.append(m[i]+n[j])
L.remove('ax')
L.remove('ay')
L.remove('by')
L.remove('bz')
L.remove('cx')
L.remove('cz')
print(L)
题目61:杨辉三角生成
题目61:打印出杨辉三角形(要求打印出10行如下图)。
"""
分析: 首先要理解什么是杨辉三角,这是非常经典的一个题目;
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
杨辉三角的特性:
1.第n行的m个数可表示为 C(n-1,m-1),即为从n-1个不同元素中取m-1个元素的组合数。
2.每个数字等于上一行的左右两个数字之和。可用此性质写出整个杨辉三角。即第n+1行的第i个数等于第n行的第i-1个数和第i个数之和,这也是组合数的性质之一。即 C(n+1,i)=C(n,i)+C(n,i-1)。def Yh_triangles():L = [1]while True:yield LL = [sum(i) for i in zip([0]+L, L+[0])]def Yh_triangles(num = 10):L = [[1]]for i in range(1,num):L.append([(0 if j== 0 else L[i-1][j-1])+ (0 if j ==len(L[i-1]) else L[i-1][j]) for j in range(i+1)])return L
题目76:分段函数计算
题目76:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n
"""
# 比较简单,直接上代码
def num(n):sum = 0if n%2 == 0 :for i in range(1,int(n/2)+1):sum += 1/(2*i)return sum if n%2 != 0 :for i in range(1,int((n+1)/2)+1): sum += 1/(2*i-1) return sum
num(5) # 同理,应用range()的步长会更高效;
def num(n):sum_tmp = [1/i for i in range(n,0,-2)]return sum(sum_tmp)
num(4)
题目77:循环输出列表
题目77:循环输出列表
"""
ls = ['Kobe','24','8']
for i in range(len(ls)):print(ls[i])
题目78:最大年龄查找
题目78:找到年龄最大的人,并输出。请找出程序中有什么问题。
"""
person_age = {"li":18,"wang":50,"zhang":20,"sun":22}
def get_max(dict):max_age = 0for key, value in dict.items():if value > max_age:max_age = valuename = keyprint(name)print(max_age)
get_max(person_age)
题目84:列表极值交换
题目84:连接字符串。
"""
list1 = ['Kobe','8','24']
list2 = ['Iverson','3']
print(list1 + list2)
题目8:九九乘法表
题目8:输出 9*9 乘法口诀表。
"""
1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9
4*1=4 4*2=8 4*3=12 4*4=16
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81for a in range(1,10):for b in range(1,10):print( str(a),"*",str(b),"=",a*b )
题目9:延时输出
题目9:暂停一秒输出。
程序分析:使用 time 模块的 sleep() 函数。
"""
# 没有具体要求,能实现延迟即可;
import time id = [1,2,3]
for i in range(len(id)):print(i)time.sleep(2)
题目14:质因数分解
题目14:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
"""
分析:
要找出全部因数比较容易,第一次写输出的是[2,3,5],没有考虑到重复因子的情况,所以要加while判断的逻辑;def get_factor(n):print ('{} = '.format(n), end=" ")if not isinstance(n, int) or n <= 0 : # 判断变量是否是已知字段类型, 字符串可迭代 print ('请输入一个正确的数字 !')exit(0) elif n in [1] :print ('{}'.format(n))while n not in [1] : # 循环保证递归for a in range(2, n + 1) : if n % a == 0: n //= a if n == 1: # 这步很重要,判断关键 print (a)else : # index 一定是素数print ('{} *'.format(a), end=" ")break
get_factor(10)
题目15:成绩分级
题目15:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
"""
def score(n):if n>=90:print("A")elif 60<n<=89:print("B")else:print("C")
score(90)
八、位运算
题目51:按位与
题目51-53:学习使用按位与&, 按位或 |, 按位异或 ^
"""
按位与: & 双目运算符.其功能是参与运算的两数各对应的二进位相与.只有对应的两个二进位都为1时,结果位才为1.参与运算的两个数均以补码出现.
按位或: | 双目运算符.只有对应的两个二进位都为1时,结果位才为1
按位异或: 如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。
取反 : ~ 在补码表示中,最高位为符号位,正数的符号位为0,负数为1
右移 : >>
左移 : << 分析: 0&0=0; 0&1=0; 1&0=0; 1&1=1
分析: 0|0=0; 0|1=1; 1|0=1; 1|1=1
分析: 0^0=0; 0^1=1; 1^0=1; 1^1=0
题目52:按位或
同上
题目53:按位异或
同上
题目54:位截取
题目54:取一个整数a从右端开始的4〜7位。
"""
分析:
首先这个整数得满足>=7位,然后取右端开始的4-7位, 考核截取字符串; num = input("输入整数: ")
num = list(num)[-7:-3]举一反三:
str = '0123456789'
print(str[:]) # 截取字符串的全部字符
print(str[0:3]) # 截取第1位到第3位的字符
print(str[6:]) # 截取第7个字符到结尾
print(str[:-3]) # 截取从头开始到倒数第3个字符之前
print(str[2]) # 截取第3个字符
print(str[-1]) # 截取倒数第1个字符
print(str[::-1]) # 创造1个与原字符串顺序相反的字符串
print(str[-3:-1]) # 截取倒数第3位到倒数第1位之前的字符
print(str[-3:]) # 截取倒数第3位到结尾
print(str[:-5:-2]) # 逆序截取==> 先截取,再进行逆序.逆序为下标 https://blog.csdn.net/weixin_41613094/article/details/122325983?spm=1001.2014.3001.5501
value:
012
0123456789
6789
0123456
2
9
9876543210
78
789
97逆袭截取解释:
str = 'abcdefghijklmn'
位置编号: 012345678910111213
对应编号: -14-13-12-11-10-9-8-7-6-5-4-3-2-1# 官方方法
分析:
(1)先使a右移4位。
(2)设置一个低4位全为1,其余全为0的数。可用~(~0<<4)
(3)将上面二者进行&运算。
a = int(input('输入一个数字: '))
b = 0 # 0
b = ~b # 1
b = b<<4 # 10000
b = ~b # 1111
c = a>>4
d = c&b
print('a:',bin(a))
print('b:',bin(b))
print('c:',bin(c))
print('d:',bin(d))
题目55:按位取反
题目55:学习使用按位取反~。
"""
二进制数在内存中以补码的形式存储。
按位取反:二进制每一位取反,0 变 1,1 变 0。
最高位为符号位,正数的符号位为 0,负数为 1。
对正数来说,最高位为 0,其余各位代表数值本身(以二进制表示),如 +42 的补码为 00101010。
对负数而言,把该数绝对值的补码按位取反,然后对整个数加 1,即得该数的补码。如 -42 的补码为 11010110(00101010 按位取反
11010101+1 即 11010110)。
~9 的计算步骤:
转二进制:0 1001
计算补码:0 1001
按位取反:1 0110
转为源码:
按位取反:1 1001
末位加 1:1 1010
符号位为 1 是负数,即 -10a = 7
b = ~a # -8
c = -7
d = ~c # 6
print ('变量 a 取反结果为: %d' % b)
print ('变量 c 取反结果为: %d' % d)
题目82:八进制转十进制
题目82:八进制转换为十进制
"""
n = 0
p = input('input a octal number:\n')
for i in range(len(p)):n = n * 8 + ord(p[i]) - ord('0')
print(n)
九、其他编程问题
题目27:递归逆序
题目27:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
"""
分析: 相反顺序,加个负号即可解决;
def desc_string(s):if(len(s) > 0):print(s[-1]) desc_string(s[0:-1])
desc_string("abcde")
题目29:数字拆分统计
题目29:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
"""
分析: 本质考察如何拆解字符串
# 最简单写法
tmp = input("输入一个数字")
len(tmp)
list(tmp)[::-1] # list可拆解字符串
str(tmp)[::-1] # str 不拆解# 普通写法
n = int(input("请输入一个数:\n"))
a = n%10000 # 万位
b = (n/1000)%10 # 千位
c = (n/100)%10 # 百位
d = (n/10)%10 # 十位
e = (n/1)%10 # 个位
if a != 0:print ("5 位数:",e,d,c,b,a)
elif b != 0:print ("4 位数:",e,d,c,b)
elif c != 0:print ("3 位数:",e,d,c)
elif d != 0:print ("2 位数:",e,d)
else:print ("1 位数:",e)
题目30:回文数判断
题目30:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
"""
分析: 同29题
def is_hw(tmp):tmp = list(tmp)if tmp[0] == tmp[4] and tmp[1] == tmp[3]:print("是")else :print("不是")
is_hw("12321")
题目32:列表逆序输出
题目32:按相反的顺序输出列表的值。
"""
分析: 同样的考察字符串处理;
a = ["x","y","z"]
b = a[::-1]
题目34:三次输出函数
题目34:使用函数,输出三次 RUNOOB 字符串。
"""
分析: 考察def的写法:
def reo_3():for i in range(1,4):print("RUNOOB")
reo_3()
题目35:文本颜色设置
题目35:文本颜色设置。
"""
分析: 这个不会了...啊,好吧.. 系统设定颜色
class bcolors:HEADER = '\033[95m'OKBLUE = '\033[94m'OKGREEN = '\033[92m'WARNING = '\033[93m'FAIL = '\033[91m'ENDC = '\033[0m'BOLD = '\033[1m'UNDERLINE = '\033[4m'
print (bcolors.WARNING + "警告的颜色字体?" + bcolors.ENDC)
题目36:素数筛选
题目36:求100之内的素数。
"""
分析: 第12题做过如何判断素数,一模一样;
num = []
for a in range(1,100):for b in range(2,a-1):if a%b == 0 :break else: # 这里位置不能写错,不然容易陷入无限循环; num.append(a)
print(num)
题目37:十数排序
题目37:对10个数进行排序。
"""
分析: 和第五题一样
依次输入10个数字;
def px_3(a,b,c....):num = [a,b,c]num.sort()return num同样方法:
num=[]
for i in range(1,11):a=int(input('int%d: '%(i)))num.append(a)
num.sort()
题目41:静态变量
题目41:模仿静态变量的用法。
"""
分析: 官方写法参考
def varfunc():var = 0print ('var = %d' % var)var += 1
if __name__ == '__main__':for i in range(3):varfunc()# 类的属性
# 作为类的一个属性吧
class Static:StaticVar = 5def varfunc(self):self.StaticVar += 1print (self.StaticVar)print (Static.StaticVar)
a = Static()
for i in range(3):a.varfunc()
题目42:自动变量
题目42:学习使用auto定义变量的用法。
"""
分析: 官方写法参考
num = 2
def autofunc():num = 1print ('internal block num = %d' % num)num += 1
for i in range(3):print ('The num = %d' % num)num += 1autofunc()
题目43:静态变量案例
题目43:模仿静态变量(static)另一案例。
"""
分析: 同41
class Num:nNum = 1def inc(self):self.nNum += 1print ('nNum = %d' % self.nNum)if __name__ == '__main__':nNum = 2inst = Num()for i in range(3):nNum += 1print ('The num = %d' % nNum)inst.inc()
题目45:数字累加
题目45:统计 1 到 100 之和。
"""
a = 100
b = 1
sum = (a+b)*50
题目46:平方阈值判断
题目46:求输入数字的平方,如果平方运算后小于 50 则退出。
"""
while True:x = int(input('input a num :'))x *= xprint('结果为:{}'.format(x))if x > 50:breakdef is_50(n):if 判断即可;
题目47:变量交换
题目47:两个变量值互换。
"""
def exchange(a,b):a,b = b,areturn a,b
题目48:数字比较
题目48:数字比较。
"""
分析: 简单比较3种情况即可
def compare(a,b):if a>b:...简单比较即可
compare(2,2)
题目49:匿名函数
题目49:使用lambda来创建匿名函数。
"""
分析: 没规定函数内容,任意都可,主要了解lambda(即λ)是啥; lambda x,y:x+y # 参数x,y : 后跟函数
https://www.runoob.com/python/python-functions.html
S = lambda x,y:x+y
S(10,20)
题目50:随机数生成
题目50:输出一个随机数。
"""
分析: https://www.runoob.com/python/func-number-random.html
import random
print (random.uniform(10, 20)) #生成 10 到 20 之间的随机数
random.uniform(10, 20)
题目71:学生数据IO
略
题目87:结构体变量传递
题目87:回答结果(结构体变量传递)。
"""
if __name__ == '__main__':class student:x = 0c = 0def f(stu):stu.x = 20stu.c = 'c'a= student()a.x = 3a.c = 'a'f(a)print a.x,a.c
题目88:星号打印
题目88:读取7个数(1—50)的整数值,每读取一个值,程序打印出该值个数的*。
"""
分析: 值为多少,取多少个*即可;
for i in range(3):print('*'*int(input('input a number: ')))
相关文章:
【Python】Python 100题 分类入门练习题 - 新手友好
Python 100题 分类入门练习题 - 新手友好篇 - 整合篇 一、数学问题题目1:组合数字题目2:利润计算题目3:完全平方数题目4:日期天数计算题目11:兔子繁殖问题题目18:数列求和题目19:完数判断题目21…...
Three.js 系列专题 7:性能优化与最佳实践
内容概述 随着 3D 场景复杂度的增加,性能优化变得至关重要。Three.js 项目可能因几何体数量、纹理大小或渲染设置而变慢。本专题将介绍减少 draw call、优化纹理和使用调试工具的最佳实践。 学习目标 学会减少 draw call 和几何体复杂度。掌握纹理压缩与内存管理。使用 Stat…...
特权FPGA之Johnson移位
完整代码: module johnson(clk,rst_n,led,sw1_n,sw2_n,sw3_n);input clk; //时钟信号,50MHz input rst_n; //复位信号,低电平有效 output[3:0] led; //LED控制,1--灭…...
聊聊 CSS
先补充一些概念 C/S(客户端/服务器):要下载到本地才能用 需要安装、偶尔更新、不跨平台 B/S(浏览器/服务器):在浏览器输入网址就可以使用 无需安装、无需更新、可跨平台 [!NOTE] B/S 架构优点如此之多&am…...
域名系统DNS
一 概述 域名系统DNS是互联网使用的命名系统,用来把便于人们使用的机器名称转换为IP地址,比如我们熟知的www.baidu.com,www.sina.com,这些域名的背后都对应着一个又一个的IP地址。由域名转换为IP的过程我们称为解析,解析的过程大…...
大模型ui设计SVG输出
你是一位资深 SVG 绘画设计师,现需根据以下产品需求创建SVG方案: 产品需求 约拍app 画板尺寸: 宽度:375px(基于提供的HTML移动设计)高度:812px(iPhone X/XS 尺寸) 配…...
利用securecrt的tftp服务器功能传递文件
日常经常能用到需要调测一些openwrt设备,要互相拷贝文件,没有开启ftp功能时,这时可以用到crt的tftp内置服务器功能,利用tftp功能传递文件。 配置方法: 打开设置→全局配置→终端→tftp配置设置c上内置tftp服务器时&a…...
基于STM32、HAL库的IP2736U快充协议芯片简介及驱动程序设计
一、简介: IP2736U是一款高性能的USB Type-C和Power Delivery(PD)控制器芯片,支持最新的USB PD 3.0规范。它具有以下特点: 支持USB Type-C和PD 3.0协议 内置MCU,可编程配置 支持多种供电角色(Source/Sink/DRP) 支持PPS可编程电源 支持多种快充协议(PD/QC/AFC/FCP/SCP等) I…...
SQL学习笔记七
第九章用正则表达式进行搜索 9.1正则表达式介绍 正则表达式是用来匹配文本的特殊的串(字符集合)。如果你想从一个文本文件中提取电话号码,可以使用正则表达式。如果你需要查找名字中间有数字的所有文件,可以 使用一个正则表达式…...
MicroPython 开发ESP32应用教程 之 Timer、GPIO中断
随着我们课程的递进,大家会发现,我们之前课程中的例子,虽然功能都能实现,但总觉得体验感不够好,比如按键控制GRB灯珠的时候,很容易出现按键后,灯珠没有反应,还有蓝牙发送指令控制灯珠…...
【区块链安全 | 第三十七篇】合约审计之获取私有数据(一)
文章目录 私有数据访问私有数据实例存储槽Solidity 中的数据存储方式1. storage(持久化存储)定长数组变长数组 2. memory(临时内存)3. calldata 可见性关键字私有数据存储风险安全措施 私有数据 私有数据(Private Dat…...
20250408在荣品的PRO-RK3566开发板使用Rockchip原厂的buildroot系统时拿掉经常出现的list-iodomain.sh警告信息
rootrk3566-buildroot:/usr/bin# vi list-iodomain.sh rootrk3566-buildroot:/usr/bin# sync 【最后】 #chk_env #get_chip_id $1 #echo_msg "Get CHIP ID: $CHIP_ID" #get_iodomain_val 20250408在荣品的PRO-RK3566开发板使用Rockchip原厂的buildroot系统时拿掉经常…...
上下拉电阻详解
一、基本定义 上拉电阻:连接信号线与电源(VCC),确保信号在无驱动时保持高电平。 下拉电阻:连接信号线与地(GND),确保信号在无驱动时保持低电平。 二、核心作用 电平稳定 防止悬空引…...
特权FPGA之数码管
case语句的用法: 计数器不断的计数,每一个num对应数码管一种数据的输出。实例通俗易懂,一目了然。 timescale 1ns / 1ps// Company: // Engineer: // // Create Date: // Design Name: // Module Name: // Project Name: //…...
PyTorch 学习笔记
环境:python3.8 PyTorch2.4.1cpu PyCharm 参考链接: 快速入门 — PyTorch 教程 2.6.0cu124 文档 PyTorch 文档 — PyTorch 2.4 文档 快速入门 导入库 import torch from torch import nn from torch.utils.data import DataLoader from torchvision …...
MCP基础学习计划:从MCP入门到项目构建的全面指南
文章简介 ai生成的学计划有的连接是无效的,想着边学习边找输出文章,后续会继续链接更新 在人工智能和大语言模型(LLM)的快速发展下,掌握Model Context Protocol(MCP)成为提升AI应用能力的关键。…...
NO.77十六届蓝桥杯备战|数据结构-单调队列|质量检测(C++)
什么是单调队列? 单调队列,顾名思义,就是存储的元素要么单调递增要么单调递减的队列。注意,这⾥的队列和普通的队列不⼀样,是⼀个双端队列。单调队列解决的问题 ⼀般⽤于解决滑动窗⼝内最⼤值最⼩值问题,以…...
【有啥问啥】深入浅出讲解 Teacher Forcing 技术
深入浅出讲解 Teacher Forcing 技术 在序列生成任务(例如机器翻译、文本摘要、图像字幕生成等)中,循环神经网络(RNN)以及基于 Transformer 的模型通常采用自回归(autoregressive)的方式生成输出…...
redis数据迁移之通过redis-dump镜像
这里写目录标题 一、redis-dump 镜像打包1.1 安装windows docker1.2 idea项目创建1.3 idea镜像打包 二、redis数据迁移2.1 数据导出2.2 数据导入 一、redis-dump 镜像打包 没有找到可用的redis-dump镜像,需要自己打包一下,这里我是在idea直接打包的 1.…...
Redis哨兵模式下执行sentinel failover mymaster命令可能导致什么风险,如何避免
在 Redis 哨兵模式下执行 SENTINEL FAILOVER mymaster 命令会强制触发主节点切换(手动故障转移),虽然这是合法的管理操作,但可能带来以下风险及规避方法: 一、潜在风险 数据丢失风险 原因:主节点可能在故障…...
软考案例分析实例答题模板
案例分析(全部为主观问答题, 总 5 大题, 第一题必选, 剩下 4 选 2, 每题 25 分, 共75分) 第一题: 案例分析——某企业信息架构优化项目 案例材料: 某企业是一家从事电子商务的大型企业, 随着业务规模的不断扩大, 现有的信息架 构已无法满足企业快速发展的需求。 企业…...
Docker+Jenkins+Gitee自动化项目部署
前置条件 docker安装成功 按照下面配置加速 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-EOF {"registry-mirrors": ["https://register.librax.org"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker一、…...
olib开源图书
8.olib开源图书 该软件作者已开源,开源地址:开源地址:https://github.com/shiyi-0x7f/o-lib 点击该软件,使用管理员权限打开,进入界面可以搜索图书并下载pdf文件。 蓝奏云下载:https://wwph.lanzout.com/…...
react: styled-components实现原理 标签模版
styled-components是针对react中一个前端广泛使用的css-in-js样式库B站 利用标签模版 利用ES6中的 标签模版文档标签模板其实不是模板,而是函数调用的一种特殊形式。“标签”指的就是函数,紧跟在后面的模板字符串就是它的参数。 let a 5; let b 10;…...
AI大模型从0到1记录学习 day15
14.3.5 互斥锁 1)线程安全问题 线程之间共享数据会存在线程安全的问题。 比如下面这段代码,3个线程,每个线程都将g_num 1 十次: import time import threading def func(): global g_num for _ in range(10): tmp g_num 1 # ti…...
macbook pro查询并修改命令提示符的格式
环境 MacBook Pro 描述 我的命令提示符总是: # 前面总是多了(base) (base) yutaoyutaodeMacBook-Pro ~ % vim .zshrc (base) yutaoyutaodeMacBook-Pro ~ % source .zshrc # 期望改成下面这样: yutaoyutaodeMacBook-Pro ~ % 找…...
Baumer工业相机堡盟工业相机如何处理偶发十万分之一或百万分之一几率出现的黑图现象(C#)
Baumer工业相机堡盟工业相机如何处理偶发十万分之一或百万分之一几率出现的黑图现象(C#) Baumer工业相机Baumer工业相机出现黑图的技术背景硬件层面软件层面环境因素 实际案例演示:BaumerVCXG-53M.I.XT 防护相机项目使用环境项目反馈问题项目…...
基于Resemblyzer 声纹识别门禁系统设计
一、整体结构与思路 这份程序的核心目的是: 用麦克风录音 ➜ 识别说话人是谁 ➜ 图形化展示 ➜ 语音播报反馈 它主要由 4 个部分组成: 全局配置和依赖加载 语音采集和声纹提取逻辑 图形界面与交互(PyQt5) 语音播报反馈系统 …...
分布式数据库LSM树
LSM树的核心结构与操作流程 Log-Structured Merge Tree,日志 结构化 合并 树。 追加写:永远不改,就算是update操作,也是追加写,一直新生成文件。 刷盘触发:追加到一定程序,比如到了几M…...
2143 最少刷题数
2143 最少刷题数 ⭐️难度:中等 🌟考点:2022、前缀和、省赛、二分 📖 📚 import java.util.Scanner; import java.util.Arrays;public class Main2 {public static void main(String[] args) {Scanner sc new Sca…...
Ansible:playbook 使用when和ith_items
文章目录 playbook使用 whenplaybook 使用迭代 with_items迭代嵌套子变量 if 和 for在template中使用了,在playbook中加以区分,因此使用when进行条件判断,with_items进行循环迭代 playbook使用 when when语句,可以实现条件测试。…...
python爬取1688.item_search_best-查询榜单列表返回数据说明
在当今数字化时代,电商平台的数据蕴含着巨大的商业价值。1688作为国内领先的B2B电商平台,其商品搜索榜单数据能够为供应商、采购商以及市场研究人员提供诸多洞察。本文将详细介绍如何使用Python爬取1688的商品搜索榜单数据,并对返回数据进行说…...
数据结构(一)KMP+滑动窗口+链表+栈+队列
数据结构-链表 单链表 #include<iostream> using namespace std; const int N 100010; int head,e[N],ne[N],idx; void init() {head -1;idx 0; } void add_to_head(int x) {e[idx] x;ne[idx] head;head idx;idx; } void add(int k,int x) {e[idx] x;ne[id…...
C语言 数据结构 【队列】动态模拟实现
引言 用动态方式模拟实现队列的各个接口 一、队列的结构与概念 概念:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(First In First Out) 入队列:进行插入操作的一端称为队尾 出队列…...
Python | 第十三章 | 多态 | 魔术方法 | 静态方法 | 抽象类
P130 多态练习题(1)2025/2/21 一、isinstance函数 基本说明: isinstance()用于判断对象是否为某个类或其子类的对象基本语法:isinstance(object,classinfo)解读形参: object:对象 classinfo:可以是类名、基本类型或者由它们组成…...
线程安全问题的原因与解决方案总结
目录 一 什么是线程安全? 二 线程安全问题的实例 三 线程安全问题的原因 1.多个线程修改共享数据 2.抢占式执行 3.修改操作不是原子的 4.内存可见性问题 5.指令重排序 四 解决方案 1.同步代码块 2.同步方法 3.加锁lock解决问题 一 什么是线程安全&…...
设计模式-模版方法
目录 什么是模版方法? 怎么理解抽象类的算法骨架? Burn功能骨架 战士类 法师类 什么是模版方法? 借助抽象类定义算法的骨架,再由具体子类实现算法的特定步骤。这种设计模式让算法的整体结构得以固定,同时又能让不…...
c# 运用策略模式与模板方法模式实例
策略模式 策略模式的核心在于定义一系列算法,把它们封装起来,并且让它们能够相互替换。策略模式让算法的变化独立于使用算法的客户端。在这个方法里,策略模式的体现如下: convertFunc 参数:这是一个委托类型的参数&a…...
基于51单片机的3路温度报警器proteus仿真
地址: https://pan.baidu.com/s/1qrCpGuzZRbeFVVjaGMffQA 提取码:1234 仿真图: 芯片/模块的特点: AT89C52/AT89C51简介: AT89C51 是一款常用的 8 位单片机,由 Atmel 公司(现已被 Microchip 收…...
llama-factory微调qwen2.5-vl
本文不生产技术,只做技术的搬运工!!! 前言 目前大模型百花齐放,微调方法复杂多样,且教程复杂,工程端想要进行垂域模型适配困难重重,本篇博客详细介绍了qwen2.5-vl的全流程微调过程,包括环境配置、数据集制作、模型训练、模型导出、模型部署、模型推理等过程,希望对工…...
淘宝历史价格采集合规指南:官方 API + 轻量爬虫混合方案
在电商数据分析领域,获取淘宝商品的历史价格数据对于企业制定价格策略、进行竞品分析以及消费者洞察市场价格波动趋势都具有重要意义。然而,由于淘宝平台对数据安全和合规性的严格要求,历史价格采集工作需要在合法合规的框架内进行。本文将详…...
文档控件DevExpress Office File API v24.2亮点:不再支持非Windows系统
DevExpress Office File API是一个专为C#, VB.NET 和 ASP.NET等开发人员提供的非可视化.NET库。有了这个库,不用安装Microsoft Office,就可以完全自动处理Excel、Word等文档。开发人员使用一个非常易于操作的API就可以生成XLS, XLSx, DOC, DOCx, RTF, CS…...
TDengine.C/C++ 连接器
简介 C/C 开发人员可以使用 TDengine 的客户端驱动,即 C/C 连接器(以下都用 TDengine 客户端驱动表示),开发自己的应用来连接 TDengine 集群完成数据存储、查询以及其他功能。TDengine 客户端驱动的 API 类似于 MySQL 的 C API。…...
什么是混合搜索Hybrid Search?
🧠 向所有学习者致敬! “学习不是装满一桶水,而是点燃一把火。” —— 叶芝 我的博客主页: https://lizheng.blog.csdn.net 🌐 欢迎点击加入AI人工智能社区! 🚀 让我们一起努力,共创AI未来! 🚀 混合搜索通常指一种结合多种搜索方法或技术的搜索策略,旨在提供更…...
滤波器:模拟滤波器和数字滤波器的区别
滤波器是一种用于从信号中去除不需要的频率成分,只保留所需频率成分的电子设备或算法。根据实现方式的不同,滤波器主要分为模拟滤波器和数字滤波器两大类。以下是对这两种滤波器的详细比较: 一、实现方式与原理 模拟滤波器 实现方式…...
AudioRecord 录制pcm转wav
pcm转wav PCM 格式校验pcm 添加 wav 头信息WAVWAV 格式检验小端序? 参考地址 PCM 格式校验 /*** 专业PCM文件验证(支持动态参数与多格式)* param silenceThreshold 静音检测阈值(0.0~1.0),默认90%零值为静…...
625SJBH网上便利店的设计与实现
1前 言 目前,网络正以一种前所未有的冲击力在影响着人类的活动,包括人类的生产和日常生活。网络的诞生和发展,颠覆了传统的信息传播方式,冲破了存在于传统交流方式中时间和空间的种种壁垒,极大地改变了人类从物质到精…...
如何开发英语在线训练小程序:从0到1的详细步骤
在数字化学习的浪潮下,英语在线训练小程序凭借便捷、高效的学习模式,成为众多英语学习者的得力助手。如果你也想开发一款独具特色的英语在线训练小程序,不妨参考以下步骤,开启你的小程序开发之旅。 一、前期规划 (…...
java设计模式-装饰者模式
装饰者模式(Decorator) 定义 1、动态的将新功能附加到对象上,在对象功能扩展方面,他比继承更有弹性,也体现了开闭原则(OCP) 2、这里提到的动态的将新功能附加到对象和OCP原则,在后面应用实际上会以代码的形式体现。 //饮料 // 饮…...
我提了一个 Androidx IssueTracker
问题 在运行 gradle plugin 插件的 transform R8 阶段出现了报错 Caused by: com.android.tools.r8.internal.xk: java.lang.NullPointerException: Cannot invoke “String.length()” because “” is null 报错日志 FAILURE: Build failed with an exception.* What went w…...