PS:在我主页有Python的基础练习100题的资源可以下载,无需积分,无需积分,无需积分,重要的事说三遍,免费下载,或者各位大佬可以自行百度搜索😀
全部是我自己写的,后面的习题答案我会增加一些自己的思考、优化、难度、扩展,所以要是突然
哪道习题的答案一看,咦?怎么多出这么多东西?开始慢慢专业化了。。不要怀疑,只是我扩展了
功能而已。。【其实,只要代码运行了,什么作用基本也就看出来了。。。】
相关说明:
代码编辑器:Sublime Text 3 【Anaconda3插件】
代码说明:我是做PHP的,所以会习惯性给python的代码加分号 “ ;”,或者加上“()”,
但是,以下代码没有问题,不影响功能实现,如有不能运行的,请评论或者@我,我会更新,
只是代码规范和美观上就仁者见仁,智者见智了,各位大佬轻喷哈;
1.py
# 1.生成数字
# 2.判断是否重复,去重
count = 0;
for m in range(1,5):
for i in range(1,5):
for j in range(1,5):
for k in range(1,5):
number = m*1000+i*100+j*10+k;
if i!=j and j!=k and i!=k and m!=i and m!=j and m!=k:
count+=1;
print(number);
print(count);
# 有没有优化方案呢? 考虑用list不重复来做
2.py
# 条件先全部列出来
# 每组判断和输出结果
while(True):
temp = input("请输入本月的利润(单位万元):")
if temp == 'exit':
break
lirun = float(temp)
# 条件全部列出来
def lirun10(lirun):
zuizhonglirun = lirun * 0.1
return zuizhonglirun
def lirun20(lirun):
zuizhonglirun = (lirun - 10) * 0.075 + lirun10(10)
return zuizhonglirun
def lirun40(lirun):
zuizhonglirun = (lirun - 20) * 0.05 + lirun20(20)
return zuizhonglirun
def lirun60(lirun):
zuizhonglirun = (lirun - 40) * 0.03 + lirun40(40)
return zuizhonglirun
def lirun100(lirun):
zuizhonglirun = (lirun - 60) * 0.015 + lirun60(60)
return zuizhonglirun
def chaochu100(lirun):
zuizhonglirun = (lirun - 100) * 0.01 + lirun100(100)
return zuizhonglirun
if lirun <= 10:
print("最终利润为:%.2f" % lirun10(lirun))
print("最终利润为:{}".format(lirun10(lirun)))
if lirun > 10 and lirun <= 20:
print("最终的利润为:%.2f" % lirun20(lirun))
print("最终利润为:{}".format(lirun20(lirun)))
if lirun > 20 and lirun <= 40:
print("最终利润为:%.2f" % lirun40(lirun))
print("最终利润为:{}".format(lirun40(lirun)))
if lirun > 40 and lirun <= 60:
print("最终的利润为:%.2f" % lirun60(lirun))
print("最终利润为:{}".format(lirun60(lirun)))
if lirun > 60 and lirun <= 100:
print("最终的利润为:%.2f" % lirun100(lirun))
print("最终利润为:{}".format(lirun100(lirun)))
if lirun > 100:
print("最终的利润为:%.2f" % chaochu100(lirun))
print("最终利润为:{}".format(chaochu100(lirun)))
3.py
# 首先要明白完全平方数的定义 25是完全平方数,项为5;
# 条件有两个,+100是完全平方数,+168也是完全平方数
import math
for i in range(1, 100):
x = math.sqrt(i + 100)
y = math.sqrt(i + 268)
if x * x == (i + 100) and y * y == (i + 268):
print(i)
4.py
# 判断输入的任何一天是今年的第几天
import datetime
while(True):
y = int(input('请输入4位数字的年份:')) # 获取年份
m = int(input('请输入月份:')) # 获取月份
d = int(input('请输入是哪一天:')) # 获取“日”
targetDay = datetime.date(y, m, d) # 将输入的日期格式化成标准的日期
print(targetDay - datetime.date(targetDay.year - 1, 12, 31))
# 减去上一年最后一天,可得解
5.py
# 输入三个数,按照从小到大的顺序输出:
while(True):
count = 0
number = []
while(count < 6):
temp = input("请输入数字:")
number.append(int(temp))
count += 1
for i in range(len(number)):
for j in range(i + 1, len(number)):
if number[i] > number[j]:
temp = number[j]
number[j] = number[i]
number[i] = temp
print(number)
# for item in number:
# for index in range(len(number)):
# for index,value in enumerate(number):
# for i in range(len(number)):
6.py
# 用*号打出字母C
print(' **')
print(' *')
print(' *')
print(' **')
7.py
# 打印一个菱形
import time
while(True):
number = int(input("请输入需要打印的阶数:"))
flag = int(number / 2)
start = time.time()
for i in range(0, flag + 1):
print(' ', end='')
for k in range(0, flag - i):
print(' ', end='')
for j in range(0, 2 * i + 1):
print('*', end='')
print('\n')
# 下面输出倒三角
for i in range(0, flag):
print(' ', end='')
for k in range(0, i + 1):
print(' ', end='')
for j in range(0, 2 * (flag - i) - 1):
print('*', end='')
print('\n')
end = time.time()
print("程序执行了{}秒".format(end - start))
8.py
# 来,走你,9*9乘法表很经典啊
import time
print('9*9乘法表如下')
start = time.time()
for i in range(1, 10):
for j in range(1, 10):
if(j <= i):
print("{}*{}={}".format(i, j, (i * j)), end=' ')
else:
break
print('\n')
end = time.time()
print("程序总共用时%s" % (end - start))
9.py
# 走你,输出国际象棋棋盘 其中B代表白格,H代表黑格
for i in range(0, 8):
for j in range(0, 4):
if(i % 2 != 0):
print(' H B', end='')
else:
print(' B H', end='')
print('\n')
10.py
from turtle import *
screensize(600, 600)
speed(10)
# 画个笑脸还有楼梯
# 笑脸的小圆脸
pensize(5)
color('dim grey', 'yellow')
pu()
goto(0, -100)
begin_fill()
circle(100)
end_fill()
# 腮红
# 左侧
seth(90)
color('Light Pink', 'Light Pink')
pu()
goto(-55, -5)
pd()
begin_fill()
circle(20)
end_fill()
# 右侧
color('Light Pink', 'Light Pink')
pu()
goto(55, -5)
pd()
begin_fill()
circle(-20)
end_fill()
# 笑脸的眼睛
# 左眼
color('dim grey', 'white')
pu()
goto(-10, 22)
pd()
begin_fill()
circle(25)
end_fill()
# 左瞳
color('dim grey', 'dim grey')
pu()
goto(-10, 22)
seth(90)
pd()
begin_fill()
circle(25, -180)
end_fill()
# 右眼
color('dim grey', 'white')
pu()
goto(10, 22)
seth(90)
pd()
begin_fill()
circle(-25)
end_fill()
# 右瞳
color('dim grey', 'dim grey')
pu()
goto(10, 22)
seth(90)
pd()
begin_fill()
circle(-25, -180)
end_fill()
# 笑脸的嘴巴
# 左
pu()
goto(-4, -43)
seth(80)
pd()
circle(16, -200)
# 右
pu()
goto(4, -43)
seth(110)
pd()
circle(-16, -185)
# 连接
pu()
goto(4, -43)
seth(90)
pd()
circle(4, 180)
hideturtle()
t = Turtle()
pu()
t.goto(0, -200)
seth(0)
t.forward(100)
t.left(145)
t.forward(70)
t.left(35)
t.forward(100)
t.backward(100)
for i in range(0, 8):
t.left(-90) # 台阶代码
t.forward(30)
t.right(125)
t.forward(70)
t.left(-55)
t.forward(30)
t.backward(30)
t.left(90)
t.forward(30)
t.right(-145)
t.forward(70)
t.right(-35)
t.forward(30)
t.backward(30) # 台阶代码
hideturtle()
11.py
# 典型的兔子繁衍问题 ,斐波那契数列
def fibo(number):
if number == 1 or number == 2:
return 1
else:
return fibo(number - 1) + fibo(number - 2)
if __name__ == '__main__':
while(True):
number = int(input("请输入要统计的月份:"))
res = fibo(number)
print("兔子总计{}对".format(res))
12.py
# 输出素数
def sushu(number1, number2):
flag = 0
for i in range(number1, number2 + 1):
for flag in range(2, i + 1):
# 判断是否是素数
if (i % flag == 0 and flag == i):
print(i)
# 如果不是素数判断跳出循环的条件
else:
if(i % flag == 0):
break
if __name__ == '__main__':
number1 = int(input("请输入需要输出的素数的值1:"))
number2 = int(input("请输入需要输出的素数的值2:"))
sushu(number1, number2)
13.py
# 打印水仙花数
def shuixianhua():
for i in range(100, 1000):
baiwei = int(i / 100)
shiwei = int((i - baiwei * 100) / 10)
gewei = i - baiwei * 100 - shiwei * 10
# 也可以使用pow(X,3)来求立方根
total = baiwei**3 + shiwei**3 + gewei**3
if(total == i):
print("百位={},十位={},个位={},水仙花数={}".format(
baiwei, shiwei, gewei, total))
else:
continue
if __name__ == '__main__':
print("以下是所有的水仙花数:")
shuixianhua()
14.py
# -*-coding:utf-8 -*-
# 分解质因数
def myyin(execute):
print("1.开启计算器程序;");
print("2.退出计算器程序;");
execute = int(input("请输入:"));
if execute == 1:
return True;
elif execute == 2:
return False;
else:
return False;
if __name__ == '__main__':
res = myyin(1);
while res:
shuzi = int(input("请输入需要分解的数:"))
total = shuzi;
for i in range(2,shuzi):
while shuzi%i==0:
if(i == shuzi):
print('{} = {}'.format(i,total))
else:
print('{} '.format(i),end='*')
shuzi /= i ;
res = myyin(1);
15.py
# -*- coding:utf-8 -*-
def jisuan():
print("1.计算分数等级:");
print("2.退出程序");
fflag = int(input("请输入您要进行的操作:"));
if fflag == 1:
return True;
elif fflag == 2:
return False;
else:
return False;
if __name__ == '__main__':
res = jisuan();
while res:
score = int(input("请输入要计算的分数:"));
if score >= 90 and score <= 100:
print("等级A")
elif score >= 60 and score <=89:
print("等级B");
elif score < 60 and score >= 0:
print("等级C");
else:
print("您输入的分数有问题,请重新输入!");
res = jisuan();
16.py 略
17.py
# -*- coding:utf-8 -*-
def jisuanzifu():
print("1.开启程序");
print("2.退出程序");
caozuo = int(input("请输入你需要进行的操作:"));
if caozuo == 1:
return True;
elif caozuo == 2:
return False;
else:
return False;
if __name__ == '__main__':
res = jisuanzifu();
while res:
total = {};
strstr = input("请输入一串任意字符串:");
for i in strstr:
total[i] = strstr.count(i)
print(total);
countC = len(strstr.split('c'))-1;
print("统计字母c的个数:%d" %(countC));
res = jisuanzifu()
18.py
# -*- coding:utf-8 -*-
def liucheng():
print("请输入要进行的操作:");
print("1.开启程序");
print("2.结束程序");
number = int(input("请输入要进行的操作:"));
if number == 1:
return True;
elif number == 2:
return False;
else:
return False;
if __name__ == '__main__':
flag = liucheng();
while flag:
geshu = int(input("请输入个数:"));
shuzi = int(input("请输入基数:"));
jishu = shuzi; # 临时的基数
total = 0; # 总计
for i in range(0,geshu):
if i == 0:
shuzi = shuzi+0;
else:
shuzi = shuzi*10+jishu;
total += shuzi;
# 控制输出
if i == geshu-1:
print('{} '.format(shuzi),end='');
else:
print('{} + '.format(shuzi),end='');
print('= {}'.format(total));
flag = liucheng();
19.py
# -*- coding:utf-8 -*-
def liucheng():
print("1.进入程序");
print("2.退出程序");
caozuo = int(input("请输入你要进行的操作:"));
if caozuo == 1:
return True;
elif caozuo == 2:
return False;
else:
return False;
if __name__ == '__main__':
flag = liucheng();
while flag:
shuzi = int(input("请输入你要计算的范围:"));
if shuzi < 6:
print('不存在完数');
else:
for i in range(6,shuzi):
total = 0;
for j in range(1,i):
if i%j == 0:
total += j;
if total == i:
print(i,end=', ');
print("\n");
flag = liucheng();