自学python中,此文章目的为记录练习过程,同时督促自己每天练习一道python题目,题目来源于网络,代码由自己书写,初学者,仅为记录,大佬不喜勿喷,尽量书写注释,如有错误,欢迎指正,如果有推荐的题目可以评论

目前感觉对python的基础编程掌握的好一点了,我并不是做代码开发的,所以并不需要过多深入学习语言,所以主要就更新这么多了,不定期会做一两道题巩固语言

第一天(2022.12.5)

企业发放的奖金根据利润提成。利润(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,求应发放奖金总数?

原题目链接第二题Python 100道基础入门练习题(附答案)_小熊猫爱恰饭的博客-CSDN博客_python基础训练题https://blog.csdn.net/m0_67575344/article/details/123744565

money=float(input("请输入当月利润(单位:万):"))
money1=[100,60,40,20,10,0]
# 提成档位
raters=[0.01,0.015,0.03,0.05,0.075,0.1]
# 提成比例
money2=0
# 提成总金额
for i in range(len(money1)):if money-money1[i]<0:# 计算是否达到档位,达到进行计算,未到达则跳过该档位continueelse:money2=(money-money1[i])*raters[i]+money2# 计算提成金额并且和之前计算的提成金额相加money=money-(money-money1[i])# 计算剩余金额,以便后续档位计算
print(f"应发奖金总数为{money2}万元")

运行结果如下:

第二天(2022.12.6)

输出 9*9 乘法口诀表

原题目链接第九题Python 100道基础入门练习题(附答案)_小熊猫爱恰饭的博客-CSDN博客_python基础训练题https://blog.csdn.net/m0_67575344/article/details/123744565

for i in range(1,10):# 设定一个1到9的for循环,步长不写默认为1print()# 换行for j in range(1,i+1):# 以当前循环的i为界限设定第二个循环print(f"{i}*{j}={i*j}\t",end='')# 输出结果

运行结果如下:

第三天(2022.12.7)

打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。

原题目链接第十三题

Python 100道基础入门练习题(附答案)_小熊猫爱恰饭的博客-CSDN博客_python基础训练题https://blog.csdn.net/m0_67575344/article/details/123744565

for i in range(100, 1000):s = str(i)# 将i转化成字符串类型以便使用函数if int(s[-1]) ** 3 + int(s[-2]) ** 3 + int(s[-3]) ** 3 == i:print(i)else:continue

PS:这道题没有想到特别好的思路,想到的几个都比原作者的占用资源,所以我就把原作者的进行了一下改进,节省一点地址空间(一丢丢)

第四天(2022.12.8)

将一个整数分解质因数。例如:输入90,打印出90=233*5

原题目链接第十四题Python 100道基础入门练习题(附答案)_小熊猫爱恰饭的博客-CSDN博客_python基础训练题https://blog.csdn.net/m0_67575344/article/details/123744565

num = int(input('请输入需要分解的整数\n'))
list1 = []
# 创建一个列表储存分解出来的质因数
while True:# 不确定有几个质因数,所以创建无限循环并且设置出口for i in range(2, num + 1):# 从2到当前值判断质因数if num % i == 0:# 判断当前值是否为因数if num // i == 1:# 判断当前值是否是本身,是则不改变值,不是则计算出除因数后的值num = numelse:num = num // ilist1.append(i)# 将判断出的因数加入列表breakif num == i:# 如果当前循环值等于本身则可以退出大循环break
print(list1)
# 打印列表

运行结果如下:

PS:虽然写了注释,但是思路这个东西不是一句两句可以说清楚的,想弄明白最好自己打个断点多走几遍(大佬就当没看见这句话)

第五天 (2022.12.9)

一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?(我稍微做了一下修改,高度和次数由用户手动输入)

原题目链接第二十题

Python 100道基础入门练习题(附答案)_小熊猫爱恰饭的博客-CSDN博客_python基础训练题https://blog.csdn.net/m0_67575344/article/details/123744565

high=float(input('请输入高度'))
count=int(input('请输入弹跳次数'))
length=0
for i in range(1,count+1):if i!=count:# 只计算到最后一次落地时走过的路程,弹起后不算length=high*1.5+lengthelif i==count:length=high+lengthhigh=high/2
print(f"最后的高度是{high},走过的路程是{length}")

运行结果如下:

第六天(2022.12.10)

猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。

PS:这道题如果像作者一样用for循环做会很简单,不过就有点浪费这道题了,这是一道很经典的递归问题,所以我打算使用递归思想来做,并且让用户输入天数

原题目链接第二十一题

Python 100道基础入门练习题(附答案)【这期完结】_小熊猫爱恰饭的博客-CSDN博客_小熊猫100题pythonhttps://blog.csdn.net/m0_67575344/article/details/127703314?spm=1001.2014.3001.5502

def monkey(day):if day==1:return 1# 递归到最后一层设置出口返回1(其实这里把1改成参数,就也使得最后一天剩的数量也可以手动输入了)else: peach=(monkey(day-1)+1)*2return peach
day=int(input('请输入猴子吃桃的天数'))
print(monkey(day))

运行结果如下:(这猴子真能吃,第一天吃了700多)

第七天(2022.12.11) 

求1+2!+3!+…+20!的和。(这道题用循环很简单,所以接着昨天继续使用递归思想做)

原题目链接第二十五题(第二十六题就直接把factorial函数单独调用就可以了)

Python 100道基础入门练习题(附答案)【这期完结】_小熊猫爱恰饭的博客-CSDN博客_小熊猫100题pythonhttps://blog.csdn.net/m0_67575344/article/details/127703314

def add(num):# 计算和的函数if num==1:return 1else:num1=add(num-1)+factorial(num)# 当前数的阶乘加上之前所有数的阶乘和return num1
def factorial(num):# 计算阶乘的函数if num==1:return 1else:return factorial(num-1)*num# 当前数的阶乘
num=int(input('请输入整数'))
print(add(num))

输出结果如下:(太大了不好验证,所以使用4)

第八天(2022.12.12)

求一个3*3矩阵主对角线元素之和。 (原题目比较简单,我就加了个能让用户输入)

原题目链接第三十八题

Python 100道基础入门练习题(附答案)【这期完结】_小熊猫爱恰饭的博客-CSDN博客_小熊猫100题pythonhttps://blog.csdn.net/m0_67575344/article/details/127703314

mat = []# 创建一个空列表储存矩阵
def shuru():mat1 = []# 第二个空列表储存一行矩阵while True:mat2 = input('请按行输入矩阵,以‘#’结束输入')if mat2 == '#':breakmat.append(list(mat2.split(' ')))
shuru()
# 调用函数
result = 0
# 设置参数储存结果
for i in range(len(mat)):print(mat[i])
for i in range(len(mat)):# 循环每一行矩阵try:result += int(mat[i][i])# 无异常就直接累加# 设置这个是防止输入的不全,比如第一行是【1,0,0】结果只输入了【1】except:result += 0# 如果报异常了就直接+0
print(result)

输出结果如下:

第九天(2022.12.13)

计算两个矩阵相加。(跟昨天的题目相接近,可以继续套用部分代码,所以做这道题,同样是让用户输入)

原题目链接第四十四题

Python 100道基础入门练习题(附答案)【这期完结】_小熊猫爱恰饭的博客-CSDN博客_小熊猫100题pythonhttps://blog.csdn.net/m0_67575344/article/details/127703314

mat = []
matrix = []
matadd = []
transitionMat=[]
# 创建空列表储存矩阵def shuru(matr):num=0# 创建一个参数储存最长列数mat1 = []# 第二个空列表储存一行矩阵while True:mat2 = input('请按行输入矩阵,回车结束一行输入,‘#’结束矩阵输入')if mat2 == '#':breakmatr.append(list(mat2.split(' ')))for i in range(len(matr)):if len(matr[i])>num:num=len(matr[i])return num# 返回最长列数print('请输入第一个矩阵')
long1 = shuru(mat)
# 调用函数
print('请输入第二个矩阵')
long2 = shuru(matrix)
# 调用函数if len(mat) != len(matrix) or long1 != long2:# 判断两个矩阵的形状是否相等,相等继续计算,不相等告诉用户不相等print('输入的两个矩阵不满足相加的最基本条件,即两个矩阵的形状不同')
else:for i in range(len(mat)):# 创建两个for循环以行数和列数作为循环次数创建一个空的相同形状的列表用以接受数据for j in range(long1):transitionMat.append(0)# 用0占位matadd.append(transitionMat)# 将一行追加到里面transitionMat=[]# 追加一行后清空中转列表,为什么不用clear函数看昨天的代码的注释for i in range(len(mat)):for j in range(long1):try:matadd[i][j] = int(mat[i][j]) + int(matrix[i][j])# 计算加和,改成'*'就可以变成计算乘积except:try:matadd[i][j] = int(mat[i][j]) + 0# 如果用户输入不全则会进入这里,默认为0继续计算except:matadd[i][j] = 0 + int(matrix[i][j])# 如果用户输入不全则会进入这里,默认为0继续计算
print('输入的第一个矩阵是')
for i in range(len(mat)):print(mat[i])
print('输入的第二个矩阵是')
for i in range(len(matrix)):print(matrix[i])
print('最后的结果是')
for i in range(len(matadd)):print(matadd[i])
# 这一段就是输出结果,没什么好说的

输入结果如下

第十天(2022.12.14)

python挑战里的鸡兔同笼问题,给出我的答案以及在解释器把这个问题重写并注释

python挑战 (bugfree.cc)https://bugfree.cc/challenge/Python/AnUaapython挑战答案如下

解释器重写如下

def rabbit_and_chick():head=int(input('请输入头的数量'))foot=int(input('请输入脚的数量'))# 两个输入rabbit=(foot-head*2)/2# 兔子比小鸡多两只脚,所以假设兔子和小鸡都抬起两只脚# 那么剩下的脚就都是兔子的了,除2之后就是兔子的数量了chick=head-rabbit# 兔子的数量知道之后小鸡的数量自然也就知道了print(f'兔子的个数是{rabbit}')print(f'小鸡的个数是{chick}')
rabbit_and_chick()

运行结果如下

第十一天

题目 使用lambda来创建匿名函数(今天只是复习匿名函数以及三目运算符,所以没写太复杂)

原题目链接第四十九题

Python 100道基础入门练习题(附答案)【这期完结】_小熊猫爱恰饭的博客-CSDN博客_小熊猫100题pythonhttps://blog.csdn.net/m0_67575344/article/details/127703314

# 题目 使用lambda来创建匿名函数。
# lambda 函数语法
# lambda 参数:条件以及结果,lambda函数只能写一行,故需要条件判断可以使用三目运算符
# 使用lambda函数
MAX=lambda x,y:x if x>y else y
MIN=lambda x,y:x if x<y else y
print(MAX(1,2),MIN(1,2))

运行结果如下

第十二天(2022.12.17)

昨天阳了,发烧在床上躺了一天,今天两道题把昨天的补上

篮球比赛是高分的比赛,领先优势可能很快被反超。作为观众,希望能在球赛即将结束时,就提早知道领先是否不可超越。体育作家Bill James发明了一种算法,用于判断领先是否“安全”。

算法描述:

  • 获取领先的分数 ,减去3分;

  • 如果目前是领先队控球,则加0.5;否则减0.5(数字小于0则变成0);

  • 计算平方后的结果;

  • 如果得到的结果比当前比赛剩余时间的秒数大,则领先是“安全”的。

原题目链接第二题

14道Python基础练习题(附答案)_Python热爱者的博客-CSDN博客_python练习题https://blog.csdn.net/qdPython/article/details/120974904?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167124902416782412591209%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=167124902416782412591209&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_click~default-6-120974904-null-null.142%5Ev68%5Econtrol,201%5Ev4%5Eadd_ask,213%5Ev2%5Et3_esquery_v2&utm_term=python%E9%A2%98%E7%9B%AE&spm=1018.2226.3001.4187

score=int(input('请输入领先的分数'))
time=int(input('请输入比赛的剩余时间'))
ball=int(input('请输入是否为领先队伍控球,是:1,否:2'))
if ball==1:score+0.5
else:score-0.5
if score<0:score=0
if score**2>time:print('领先队伍是安全的')
else:print('领先队伍不是安全的')

输出结果:

小明单位发了100元的购物卡,小明到超市买三类洗化用品:洗发水(15元)、香皂(2元)、牙刷(5元)。要把100元正好花掉,可有哪些购买组合?

原题目链接第四题

14道Python基础练习题(附答案)_Python热爱者的博客-CSDN博客_python练习题https://blog.csdn.net/qdPython/article/details/120974904?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167124902416782412591209%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=167124902416782412591209&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_click~default-6-120974904-null-null.142%5Ev68%5Econtrol,201%5Ev4%5Eadd_ask,213%5Ev2%5Et3_esquery_v2&utm_term=python%E9%A2%98%E7%9B%AE&spm=1018.2226.3001.4187

soap=2
toothbrush=5
shampoo=15
for i in range(0,int(100/15)):for j in range(0,int(100/5)):for k in range(0,int(100/2)):if 10*1+5*j+2*k==100:print(f'可购买的组合为,洗发水{i}瓶,牙刷{j}把,肥皂{k}块')

输出结果如下

第十三天(2022.12.18)

设计一个猜数游戏。首先由计算机产生一个[1,100]之间的随机整数,然后由用户猜测所产生的随机数。根据用户猜测的情况给出不同提示,如猜测的数大于产生的数,则显示“High”,小于则显示“Low”,等于则显示“You won !”,游戏结束。用户最多可以猜7次,如果7次均未猜中,则显示“You lost !”,并给出正确答案,游戏结束。游戏结束后,询问用户是否继续游戏,选择“Y”则开始一轮新的猜数游戏;选择“N”则退出游戏。

原题目链接第五题

14道Python基础练习题(附答案)_Python热爱者的博客-CSDN博客_python练习题https://blog.csdn.net/qdPython/article/details/120974904

import random
while True:num=random.randint(0,100)for i in range(0,7):num1=int(input('请输入猜的数字\n'))if num1>num:print('大了')continueelif num1<num:print('小了')continueelif num1==num:print('恭喜你猜对了')breakelse:print('你输了')num2=int(input('是否继续?1是,2否'))if num2==2:breakelse:continue

第十四天(2022.12.20)

昨天忘记了,今天两道

一个人赶着鸭子去每个村庄卖,每经过一个村子卖去所赶鸭子的一半又一只。这样他经过了七个村子后还剩两只鸭子,问他出发时共赶多少只鸭子?

要求:利用递归函数编程实现。

原题目链接第八题

14道Python基础练习题(附答案)_Python热爱者的博客-CSDN博客_python练习题https://blog.csdn.net/qdPython/article/details/120974904

def duck(num):if num==0:return 2else:return (duck(num-1)+1)*2
num=int(input('请输入村庄个数'))
print(duck(num))

运行结果如下:

数字加密游戏:编程程序,从键盘任意输入1个4位数,将该数字中的每位数与7相乘,然后取乘积结果的个位数对该数字进行替换,最后得到1个新的4位数。

原题目链接第十四题

while True:num=int(input('请输入一个四位数'))if 1000<=num<=9999:num=str(num)num1=str(int(num[3])*7)num2=str(int(num[2])*7)num3=str(int(num[1])*7)num4=str(int(num[0])*7)print(num4[-1]+num3[-1]+num2[-1]+num1[-1])breakelse:print('输入错误,请重新输入')continue

运行结果如下:

第十五天(2022.12.22)

题目名称:批阅奏章
某朝皇帝有大臣n名(1<=n<=1000),分别编号大臣1~n。某日皇帝身体抱恙,奏章堆积如山无法及时一一批阅,便命身旁內侍帮他把奏章按指定顺序排序后再阅。于是皇帝亲自挑选了几个值得信赖的重臣并排好序,要求把他们的奏章按排好的顺序放到前面,其他的按照编号升序排列即可。现在要求你写一个程序来帮皇上解决这个问题,即已知奏章总数和顺序、钦点重臣的排列顺序,求得皇帝查阅奏章的顺序。

输入描述:
第一行输入两个整数p(1<=p<=5000)和q,其中p表示堆积奏章的总数、q表示皇帝钦点重臣数
第二行输入p个数,表示所有按呈递顺序递上来的奏章来自于哪个大臣(大臣编号)
第三行输入q个数,表示皇帝钦点并排好序的重臣编号
输出描述:
输出奏章按指定顺序排好序后,皇帝按大臣编号批阅的顺序
输入样例:
5 3
5 4 3 2 1
3 5 4
输出样例:
3 5 4 1 2

原题目链接第一题

python编程考试题目大全_彭_江南的博客-CSDN博客_python编程题目https://blog.csdn.net/m0_37317411/article/details/124838758?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167167010416800184196162%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=167167010416800184196162&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_click~default-5-124838758-null-null.142%5Ev68%5Econtrol,201%5Ev4%5Eadd_ask,213%5Ev2%5Et3_esquery_v2&utm_term=python%E9%A2%98%E7%9B%AE&spm=1018.2226.3001.4187我加了个判断后面输入的大臣和奏章的数量是否和之前相等的功能,其实还应该加判断大臣和奏章数量是否大于5000以及奏章和大臣是否重复的功能,不过作者给的答案也没有,我也就懒得写了

def review():num_c_num_p=input('请输入奏章的数量的大臣的数量,使用空格隔开')# 接收奏章和大臣的数量num_c_num_p=num_c_num_p.split(' ')# 接收的字符串以空格分开num_c=int(num_c_num_p[0])num_p=int(num_c_num_p[1])# 将数量分配两个参数存起来并且转换成整型num_c_all=input('请输入所有按呈递顺序递上来的奏章来自于哪个大臣,使用空格隔开')num_c_all=list(num_c_all.split(' '))# 接收奏章编号并且存到列表里num_p_all=input('请输入皇帝钦点并排好序的重臣编号,使用空格隔开')num_p_all=list(num_p_all.split(' '))# 接收大臣编号并且存到列表里if len(num_c_all)!=num_c:print('您输入的奏章数量和之前输入的不相等')return 0elif len(num_p_all)!=num_p:print('您输入的大臣数量和之前输入的不相等')return 0# 判断一下相不相等,不相等则提示result=[]# 创建一个列表储存结果for i in num_p_all:for j in num_c_all:# 以大臣和奏章编号做两个循环if i==j:# 判断大臣和奏章编号是否相同result.append(j)# 加入结果集num_c_all.remove(j)# 移除已经加入结果集的else:num_c_all.sort()# 循环结束后将剩下的排序result.extend(num_c_all)# 剩下的加入结果集print(result)# 打印结果集
review()

运行结果如下

第十六天(2023.1.11)

先是我阳了,养了几天好差不多了,然后我姥爷新冠加脑梗,这些天一直在医院帮忙照顾,好在老爷子挺过来了,然后不知道是因为在医院还是什么原因,我又阳了,只能说我真是老倒霉蛋了,扯远了,好差不多了,继续更新

题目:编程实现计算100—1000中有多少个数其各位数字之和是9,如108各位数字之和是9(加上把所有符合条件的数输出)

题目是朋友期末考试的编程题

num=0
# 计数器
for i in range(100,1000):j=str(i)# int类型转换成str类型方便使用下标读取对应数字if int(j[0])+int(j[1])+int(j[2])==9:print(i)num=num+1# 计数器+1
else:print(num)

运行结果如下

第十七天(2023.1.12)

编写一个程序首先输入5行5列的二维数组的所有元素,然后找出数组的鞍点,即该位置上的元素在该行上最大,在该列上最小。如果有,输出鞍点及其所在的行号、列号,如果没有,则提示没有。

这道题也是期末考试题,c语言的考试题,所以是数组,python就用列表,没啥大差别

andian=[] # 储存元素的列表
figure=0 # 记录鞍点的变量
while True:# 整个while True是输入部分,原理和前面矩阵那里基本一样,看不懂可以去看之前的代码的注释# 如果想实现题目里的5*5,可以用for循环mat=input('请按行输入元素,以空格隔开,以"#"结束输入\n')if mat=='#':breakandian.append(mat.split(' '))
for i in range(len(andian)):# 按行进行循环,先找出某行的最大元素,然后去判断这个元素在它所在的列是不是最小的for j in range(len(andian[i])):# 找出某行的最大元素的循环try:if andian[i][j]>andian[i][j+1]:figure=andian[i][j]else:figure=andian[i][j+1]# 将最大元素储存进变量figure中except:breakfor k in range(len(andian)):# 根据找到的元素去判断是不是该列最小if andian[k][j]<figure:# 如果该列有比它更小的那就不需要继续循环,直接打破循环输出没有即可print(f'第{i+1}行没有鞍点')breakelse:print(f'第{i+1}行的鞍点是{i+1}行{j+1}列,数据为{andian[i][j]}')# 循环正常结束证明之前找到的元素是鞍点
print('输入的元素为')
for i in range(len(andian)):# 最后把输入的元素按行输出呈现给用户,方便用户检查正确与否print(andian[i])

运行结果如下

第十八天(2023.1.13)

编写函数input(int a[],int n)完成输入n个整数功能,output(int a[],int n)输出n个整数功能,sortInt(int a[],int n) n个整数排序功能,主函数完成几个函数的测试调用。

继续做考试题

def input1(a):a.extend(input().split(' '))
def output(a):print(a)
def sortint(a):# a.sort() # 想体验自带排序把这行注释回来就行# 其实是可以用自带的排序直接完成的# 不过那样今天的量似乎太小了些,还是手动写个排序吧for i in range(len(a)):  # 简单写个最简单的冒泡排序for j in range(len(a)):try:# 因为“j+1”到最后一位会导致列表索引超出范围# 虽然也有别的方法,但是我感觉还是用try简单些if a[j] > a[j + 1]:a[j], a[j + 1] = a[j + 1], a[j]except:break
a = []
input1(a)
sortint(a)
output(a)

运行结果如下

第十九/二十天(2023.1.14/1.15)

题目:定义一个包含账号、姓名、电话和余额内容的描述储户基本信息的结构体Account,利用该结构体实现(1)输入10名储户的基本信息;(2)将10名储户的基本信息写入磁盘文件account.dat中;(3)将磁盘文件account.dat中的储户信息读出并在屏幕上显示。

还是做考试题,python我用类做的,想了想反正都做了,不如做大一点,功能稍微全一点,然后就做了两天,倒也不是两天一直在做,只是空闲时间去做然后昨天没做完。。。扯远了,完整代码放在下面,稍微完整一点的解析放在另外一篇文章里了,链接如下

使用python对银行信息管理系统的简单实现_缇友的博客-CSDN博客https://blog.csdn.net/m0_56750162/article/details/128693533

class account(object):# 用户信息类def __init__(self, id1, name, tel, money):self.id = id1# 账户self.name = name# 姓名self.tel = tel# 电话self.money = money# 余额def __str__(self):return f'{self.id},{self.name},{self.tel},{self.money}'class accountmanager(object):# 管理系统类def __init__(self):self.users_list = []# 储存信息的列表def function(self):"""调用各个函数的函数"""# 函数的说明文档,一般用来记录函数的作用self.load_users()# 将文件里的信息读取出来while True:self.show_menu()menu_num = int(input('请输入需要的功能序号'))if menu_num == 1:self.add_users()elif menu_num == 2:self.del_users()elif menu_num == 3:self.modify_users()elif menu_num == 4:self.query_users()elif menu_num == 5:self.show_users()elif menu_num == 6:self.save_users()elif menu_num == 7:print('感谢使用,再见')breakelse:print('输入有误,请重新输入')continuedef show_menu(self):"""展示功能菜单"""print('1--添加用户')print('2--删除用户')print('3--修改用户')print('4--查询用户')print('5--显示所有用户')print('6--保存用户信息')print('7--退出系统')def add_users(self):"""添加用户"""id1 = input('请输入用户账户')for i in self.users_list:# 增删改查里都有循环用来查找数据然后再进行对应操作if i.id == id1:print('输入的账户已存在!!!')returnname = input('请输入用户姓名')tel = input('请输入用户电话')money = input('请输入用户余额')# 找到之后对姓名、电话、余额进行更改,可以做到单项更改,但是太麻烦了# 账户不做更改,做更改还要判断账户是否重复,我嫌麻烦user = account(id1, name, tel, money)# 将所有信息放入列表self.users_list.append(user)# 将列表追加进储存的列表def del_users(self):"""删除用户"""del_users_id = input('请输入需要删除用户的id')for i in self.users_list:if i.id == del_users_id:self.users_list.remove(i)breakelse:print('输入的用户不存在')def modify_users(self):"""修改用户"""modify_users_id = input('请输入需要修改用户的id')for i in self.users_list:if i.id == modify_users_id:print('已查询到用户,下面请按提示输入修改后的信息')i.name = input('姓名:')i.tel = input('电话:')i.money = input('余额:')breakelse:print('输入的用户不存在')def query_users(self):"""查询用户"""query_users_id = input('请输入需要查询用户的id')for i in self.users_list:if i.id == query_users_id:print(f'账户:{i.id}\t姓名:{i.name}\t电话:{i.tel}\t余额:{i.money}')breakelse:print('输入的用户不存在')def show_users(self):"""显示所有用户"""for i in self.users_list:print(f'账户:{i.id}\t姓名:{i.name}\t电话:{i.tel}\t余额:{i.money}')def load_users(self):"""加载信息"""try:information = open('account.dat', 'r')except:information = open('account.dat', 'w')else:# 读取数据:文件读取出的数据是字符串还原列表类型;[{}] 转换 [学员对象]data = information.read()  # 字符串if len(data)!=0:# 判断读取的数据长度,如果没读到数据依旧运行下一行的代码会导致异常# 顺带着也当做优化了,没读取到也就不用运行转换循环了new_list = eval(data)self.users_list = [account(i['id'], i['name'], i['tel'], i['money']) for i in new_list]# 用循环将列表转换成字典形式finally:information.close()# 无论怎样最后都关闭文件def save_users(self):"""将信息保存"""information = open('account.dat', 'w')new_list = [i.__dict__ for i in self.users_list]# ___dict___强调储存的是静态属性information.write(str(new_list))# 以字符串形式写入information.close()# 关闭文件account_manager = accountmanager()
# 创建类
account_manager.function()
# 运行系统

第二十一天(2023.1.16)

字符串最后一个单词的长度

给出一个只包含大小写字母和空格的字符串s,请返回字符串中最后一个单词的长度,如果字符串中没有最后一个单词,则返回0,注意:单词的定义是仅由非空格字符组成的字符序列。例如:s ="Hello World",返回5。

我不太明白他这个没有最后一个单词是什么意思,是没输入还是只有一个单词哪,我就当做是没输入东西就输出0吧

题目来自于x客网,我就不挂原链接了,不是大佬给的题,是c++或者Java的练习题,没有python的解法

list1=[]
list1=input().split(' ')
print(len(list1[-1]))

运行结果如下,第二张是没输入直接回车的结果

第二十二天(2022.1.17)

2的个数

给定一个正整数n,请返回0到n(包括n)的数字中2出现了几次。

测试样例:

输入:10

返回:1

num0=0
# 计数器
num=int(input())
for i in range(0,num):str1=str(i)# 转换成字符串类型for j in range(0,len(str(i))):if int(str1[j])==2:num0+=1
else:print(num0)

运行结果如下

第二十三天(2023.1.18)

基本字符串压缩:现给定一个string iniString字符串(长度小于等于10000),请按连续重复字母压缩的方式将该字符串压缩,返回结果为string,比如,字符串“aabbcccccaaa”经压缩会变成“a2b2c5a3”,若压缩后的字符串没有变短,则返回原先的字符串。注意保证串内字符均由大小写英文字母组成。

n = input()
# 接收输入的数据
m = []
# 用于计数的列表,比如aaaa这个字符串
# 就是往这个列表里依次写入四个a,最后使用len函数统计数量就行了
j = []
# 最后结果的储存列表
for i in range(0, len(n)):# 整体思路就是把第一位和最后一位单独列出情况单独判断处理,中间都没啥大差别if n[0] != n[1] and i == 0:# 判断第一个字符和第二个是否不相等# 比如ab,不相等就往结果集里输入a1j.append(n[0])# 输入aj.append(str(1))# 输入字符串类型的1,防止结果列表转换成字符串的时候出错# 后续输入数字统一用字符串类型的,后面不再强调continuetry:# 用try是防止列表索引溢出if n[i] == n[i + 1]:# 判断当前字符和下一位是否相等# 相等就输入到计数列表m.append(n[i + 1])else:j.append(n[i])# 不相等就输入这个字符j.append(str(len(m) + 1))# 统计计数列表的个数然后输入m = []# 清空计数列表然后方便下一个字符计数except:if n[i] == n[i - 1]:# 判断最后一位字符和前一位是否相等# 相等就执行上面else里的操作j.append(n[i])j.append(str(len(m) + 1))breakelse:# 不相等这里就把最后一位字符输入,然后输入1j.append(n[i])j.append(str(1))
k = ''.join(j)
# 把结果列表转换成字符串
if len(k) < len(n):# 判断长度,比之前短输出新结果,反之输出原来的结果print(k)
else:print(n)

运行结果如下

之前的几道题x客网里面没有python选项,这个有了,所以顺便放一下x客网里运行通过的截图

当然x客里是在函数里的,我上面给的代码是复制到解释器里能直接运行的

第二十四天(2023.1.19)

判断题目给出的字符串是不是回文,仅考虑字符串中的字母字符和数字字符,并且忽略大小写

例如:"nowcoder Is Best tsebsi: redoc won"是回文

"race a car"不是回文

注意:

你有没有考虑过字符串可能为空?这是面试时应该提出的一个好问题。

针对这个问题,我们定义空字符串是回文

先说一下我自己的思路,去除所有符号后然后全部转换成小写字符然后分别取前一半和后一半的逆置然后对比,同时还有考虑字符串只有一个字符的情况,总之比较麻烦,然后我看了看题解部分一位大佬的解法,十分简洁,这里着重记录大佬的思路,大佬代码如下

1.第一行和第二行是自动生成的,方便传参验证代码的部分

2.第三行的作用比较多,首先生成列表“L”,“L”由对字符串s进行for循环得到

3.这里先说一下“isalnum”内置函数的作用,判断一个字符串是否完全由非符号字符组成,完全返回true,不完全返回false

4.因为是for循环,循环字符串中的每一个字符,也就是相当于去判断字符串中的每一个字符是不是符号,不是返回true,是返回false

5.又因为if判断,所以true就执行内置函数“lower”,这个函数是对字符串的操作函数,会将所有大写字符转换成小写,这样一来,所有字母都加入了列表而已都变成了小写

6.最后一行直接对比列表“L”和其逆置列表,因为是回文串所以逆置后应该相等

大佬代码拆开写如下

def isPalindrome(s):l = []for x in s:if x.isalnum():l.append(x.lower())return l == l[::-1]s = input()
print(isPalindrome(s))

下面是我保留自己原有思路的情况下根据大佬思路对自己代码改进后的代码

def isPalindrome(s):punc = '!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ 's = s.lower()for ch in punc:s = s.replace(ch, '')return s==s[::-1]s = input()
print(isPalindrome(s))

总结:思路不如大佬有两点原因

一、不知道“isalnum”函数,不过基本知道我估计也想不到这种用法,所以这一点原因只占20%。

二、编程的思路、思想还是有待加强,对与python的一些简便写法、用法不熟练

每日一道Python编程题目练习,不定期更新相关推荐

  1. 程序设计编程题目(持续更新)

    c语言题目 春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,它是这样定义的:"水仙花数"是指一个3位数,它的各位数字的立方和等于其本身,比如,153= 13 +5 ...

  2. 数据仓库工程师面试题目(不定期更新)

    1 缓慢变化维的设计?(真心常问,标准答案必备) 三种:直接覆盖,增加新行,增加心属性列 Type 1:覆盖:直接用新值代替旧值. Type 2:增加新行.将当前行的状态设置为off,并设置一个end ...

  3. python中编写类的各种技巧和方法_每日一道python面试题 - Python的实例,类和静态方法揭秘...

    实例,类和静态方法-概述 让我们开始编写一个(Python 3)类,其中包含所有三种方法类型的简单示例: class MyClass: def method(self): return 'instan ...

  4. python独立图形_Python图形界面(自学Python系列笔记-4)(不定期更新)

    lGUI Graphical User Interfaces ltkinter模块 n是Python系统配置的标准GUI库 n采用tkinter模块编写的界面可以在所有主流操作系统上运行 l从应用的角 ...

  5. Python(^^^^^小技巧^^^^^——不定期更新)

    偶然想到的小技巧 ''' 交互中对传入函数的参数的数目进行检测 ''' def func(a,b,c): print(a,b,c)s=input(">>>>:&quo ...

  6. python编写函数求斐波那契数列的某一项_求解一道Python编程题

    展开全部 斐波那契数列自第三个数32313133353236313431303231363533e58685e5aeb931333433623139开始,每个数均为之前两个数的和. 至少有两种方法来实 ...

  7. 盘点一道Python列表基础题目

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 海日生残夜,江春入旧年. 大家好, ...

  8. 记一次面试过程中的Python编程题

    这几天面试过程中遇到一道Python编程题,题目如下: 面试中遇到一个Python编程问题:一个字符串,将里面的数字取出来,如果第一个数字前面是+,表示整个数字为正数,如果第一个数字前面是-,表示数字 ...

  9. Python编程入门教程(以在线评测平台为载体)

    本博客原文地址:https://www.cnblogs.com/BobHuang/p/14341687.html,原文体验更佳 如果你是一名浙江2020级及以后的高中生要学习Python,抑或是一位科 ...

最新文章

  1. android studio 发布项目的流程
  2. C语言中struct, union, enum 三大复合数据类型
  3. linux系统硬盘坏道,如何在 Linux 系统下检测硬盘上的坏道和坏块
  4. LeetCode 496. 下一个更大元素 I(哈希)
  5. 公司顾问岗位职责_【热门推荐】泉州奥育特教育科技有限公司
  6. Mongo 常用的server命令
  7. pytroch预训练网络ResNet
  8. 15 个超赞超牛逼的 Linux 工具,提高效率的同时增加乐趣!
  9. IntelliJ IDEA Maven配置 MAC系统
  10. DXL之通过程序修改Domino的设计
  11. AD18 如何生成装配图
  12. 几个有用的遥感和地理信息网站
  13. 太吓人了,dub编译,编译phobos
  14. joc杂志影响因子2019_2020 年公布的 SCI 期刊影响因子排名有哪些亮点和槽点?
  15. 外企office电话英语
  16. Android Studio初学者实例:RecyclerView学习--模仿今日头条
  17. HTML5 五种密码框
  18. 两周年无人问津,EOS到底做错了什么
  19. C++ vector 容器的全排列算法 next_permutation
  20. ZOJ 3964 Yet Another Game of Stones (博弈)

热门文章

  1. 大学计算机专业个人介绍 英语翻译,大学计算机英语翻译.doc
  2. 学习动态代理stepbystep(3)
  3. cf英文名字格式好看的_个性cf英文游戏名字大全
  4. MIUI谷歌相册无法备份的解决方法
  5. MPP架构 分布式架构
  6. 怎么用计算机打出错误,打印机出现错误状态是怎么回事,详细教您解决办法
  7. win10win键无反应_vivoX9无WiFi,掌柜修到一半不开机了,维修过程好大一个“坑”啊...
  8. 面试题引出的知识点整理
  9. time.After巧妙的超时控制
  10. MySQL数据库服务命令行启动