Python 基础练习100题答案(持续更新)

这是一个包含多个Python基础练习题目的集合,涉及数字生成、利润计算、完全平方数、日期处理、排序、图形打印、斐波那契数列、素数判断、水仙花数、分解质因数、分数等级计算等。每个题目都有详细的代码实现,部分题目还进行了优化和扩展。
摘要由CSDN通过智能技术生成

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();


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值