自学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:
# 计算是否达到档位,达到进行计算,未到达则跳过该档位
continue
else:
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循环,步长不写默认为1
print()
# 换行
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 = num
else:
num = num // i
list1.append(i)
# 将判断出的因数加入列表
break
if 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+length
elif i==count:
length=high+length
high=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)*2
return peach
day=int(input('请输入猴子吃桃的天数'))
print(monkey(day))
运行结果如下:(这猴子真能吃,第一天吃了700多)
第七天(2022.12.11)
题目 求1+2!+3!+…+20!的和。(这道题用循环很简单,所以接着昨天继续使用递归思想做)
原题目链接:
Python 100道基础入门练习题(附答案)【这期完结】_小熊猫爱恰饭的博客-CSDN博客_小熊猫100题pythonhttps://blog.csdn.net/m0_67575344/article/details/127703314第二十五题(第二十六题就直接把factorial函数单独调用就可以了)
def add(num):
# 计算和的函数
if num==1:
return 1
else:
num1=add(num-1)+factorial(num)
# 当前数的阶乘加上之前所有数的阶乘和
return num1
def factorial(num):
# 计算阶乘的函数
if num==1:
return 1
else:
return factorial(num-1)*num
# 当前数的阶乘
num=int(input('请输入整数'))
print(add(num))
输出结果如下:(太大了,不好验证,所以使用4)