100个Python练手小程序:从基础到进阶,边学边练掌握Python编程技巧
100个Python练习小程序,学习Python的好资料,涵盖Python的各个部分。您可以边学习边练习,更轻松地掌握Python。

如果你觉得自己学不会怎么办?别慌,小编推荐大家进群。
前面548,中间377,后面875。群里有志同道合的朋友。
互相帮助并获得许多视频教程!
【程序一】
问题:有 1、2、3、4 个数字。可以组成多少个不重复的不同三位数?他们有多少人?
1、程序分析:百位、十位、个位可填的数字均为1、2、3、4。将所有排列组合好后,
去掉不满足条件的排列。
2、程序源码:
对于范围 (1,5) 内的 i:
对于范围 (1,5) 内的 j:
对于范围 (1,5) 内的 k:
if( i != k ) 和 (i != j) 和 (j != k):
打印 i,j,k
【程序2】
主题:公司发放的奖金是以利润佣金为基础的。当利润(I)小于或等于10万元时,奖金可增加10%;如果利润高的话
金额在10万元以下、20万元以下时,10万元以下部分按10%收取佣金,10万元以上部分收取佣金。
佣金为7.5%; 20万元至40万元之间,20万元以上部分按5%收取佣金; 40万元至60万元之间,佣金为5%
40万人民币部分,可获得3%的佣金; 60万元至100万元的部分,60万元以上部分可获得1.5%的佣金。
金额超过100万元时,超过100万元部分按1%收取佣金。从键盘输入当月利润I。应支付的奖金总数是多少?
1、程序分析:请用数轴划分定位。注意定义时bonus需要定义为整数。
2、程序源码:
奖金1 = 100000 * 0.1
奖金2 = 奖金1 + 100000 * 0.500075
奖金4 = 奖金2 + 200000 * 0.5
奖金6 = 奖金4 + 200000 * 0.3
奖金10 = 奖金6 + 400000 * 0.15
i = int(raw_input('输入增益:'))
如果我
奖金 = i * 0.1
埃利夫我
奖金 = 奖金1 + (i - 100000) * 0.075
埃利夫我
奖金 = 奖金2 + (i - 200000) * 0.05
埃利夫我
奖金 = 奖金4 + (i - 400000) * 0.03
埃利夫我
奖金 = 奖金6 + (i - 600000) * 0.015
别的:
奖金 = 奖金10 + (i - 1000000) * 0.01
打印'奖金=',奖金
【程序3】
问题:一个整数,加100后就变成完全平方数,加168就变成完全平方数。这个数字是多少?
1、程序分析:要确定在10万以内,先在开药前的数字上加100,然后在开药前的数字上加268。如果在处方后
结果满足以下条件,即为结果。具体请看分析:
2、程序源码:
包括“math.h”
主要的()
长整型 i,x,y,z;
对于 (i=1;i
{ x=sqrt(i+100); /*x为加100并开平方后的结果*/
y=sqrt(i+268); /*y为168相加并开平方后的结果*/
if(x*x==i+100&&y*y==i+268)/*如果一个数的平方根的平方等于该数,则说明该数是完全平方数*/
printf(" %ld ",i);
'''
导入数学
对于范围(10000)内的 i:
#转换为整数值
x = int(数学.sqrt(i + 100))
y = int(数学.sqrt(i + 268))
如果(x * x == i + 100)和(y * y == i + 268):
打印我
问题:输入某年某月某日,判断这一天是一年中的第几天?
1、程序分析:以3月5日为例,应该先将前两个月相加,然后加上5天,即是一年中的第几天。特别的
如果是闰年并且输入的月份大于3,则必须考虑额外的一天。
2、程序源码:
年 = int(raw_input('年份:'))
月份 = int(raw_input('月份: '))
天 = int(raw_input('天: '))
月 = (0,31,59,90,120,151,181,212,243,273,304,334)
如果 0
总和 = 月[月 - 1]
别的:
打印‘数据错误’
总和+=天
飞跃 = 0
if (year % 400 == 0) or ((year % 4 == 0) and (year % 100 != 0)):
跳跃=1
if (leap == 1) and (month > 2):
总和 += 1
print '这是第 %d 天。' %总和
【程序5】
问题:输入三个整数x、y、z。请从小到大输出这三个数字。
1.程序分析:我们想办法把最小的数放在x上。首先比较x和y。如果x>y,则交换x和y的值。
然后比较 x 和 z。如果x>z,则交换x和z的值以使x最小化。
2、程序源码:
l = []
对于范围 (3) 内的 i:
x = int(raw_input('整数:'))
l.append(x)
l.sort()
打印l
【程序6】
问题:使用*号输出字母C的模式。
1、程序分析:可以先将字母C写在纸上,并附上“*”号,然后分行输出。
2、程序源码:
打印'你好Python世界! '
打印“*”* 10
对于范围(5)内的 i:
打印 '* *'
打印“*”* 10
打印'*'* 6
【程序7】
问题:输出一个特殊的图案,请在c环境下运行一下,非常漂亮!
1、程序分析:共有256个字符。不同的角色有不同的图形。
2、程序源码:
a=176
乙 = 219
打印chr(b),chr(a),chr(a),chr(a),chr(b)
打印chr(a),chr(b),chr(a),chr(b),chr(a)
打印chr(a),chr(a),chr(b),chr(a),chr(a)
打印chr(a),chr(b),chr(a),chr(b),chr(a)
打印chr(b),chr(a),chr(a),chr(a),chr(b)
【程序8】
问题:输出9*9的公式。
1、程序分析:考虑行和列,总共9行9列,i控制行,j控制列。
2、程序源码:
包括“stdio.h”
主要的()
int i,j,结果;
printf(“”);
对于 (i=1;i
{ for(j=1;j
结果=i*j;
printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占用3位*/
printf(" ");/*每行后换行*/
对于范围 (1,10) 内的 i:
对于范围 (1,10) 内的 j:
结果 = i * j
print '%d * %d = % -3d' % (i,j,结果)
打印 ''
【程序9】
主题:请求输出棋盘。
1、程序分析:用i控制行,j控制列,根据i+j之和的变化来控制黑色方块或白色方块的输出。
2、程序源码:
包括“stdio.h”
主要的()
整数 i,j;
对于(i=0;i
对于(j=0;j
如果((i+j)%2==0)
printf("%c%c",219,219);
别的
printf(“”);
printf(“”);
导入系统
对于范围(8)内的 i:
对于范围 (8) 内的 j:
如果(i + j)% 2 == 0:
sys.stdout.write(chr(219))
sys.stdout.write(chr(219))
别的:
sys.stdout.write(' ')
打印 ''
【程序10】
主题:打印一个楼梯并在楼梯顶部打印两个笑脸。
1、程序分析:用i控制行,j控制列,j根据i的变化控制输出黑色方块的数量。
2、程序源码:
导入系统
sys.stdout.write(chr(1))
sys.stdout.write(chr(1))
打印 ''
对于范围 (1,11) 内的 i:
对于范围 (1,i) 中的 j:
sys.stdout.write(chr(219))
sys.stdout.write(chr(219))
打印 ''
【程序11】
题目:经典问题:有一对兔子。从出生后第三个月开始,每个月都会诞生一对兔子。小兔子一直生长到第三个月。
此后,每个月都会有另一对兔子出生。如果兔子不死,每月总共有多少只兔子?
1、程序分析:兔子的图案是序列1,1,2,3,5,8,13,21…。
2、程序源码:
主要的()
长f1,f2;
整数我;
f1=f2=1;
对于(i=1;i
{ printf("ld ld",f1,f2);
if(i%2==0) printf(" ");/*控制输出,每行四个*/
f1=f1+f2; /*添加前两个月,并将值赋给第三个月*/
f2=f1+f2; /*添加前两个月,并将值赋给第三个月*/
f1 = 1
f2 = 1
对于范围 (1,21) 内的 i:
打印 'd d' % (f1,f2)
如果 (i % 2) == 0:
打印 ''
f1 = f1 + f2
f2 = f1 + f2
【程序12】
问题:判断101-200之间有多少个素数,并输出所有素数。
1、程序分析:如何确定素数:用一个数分别除以2除以sqrt(这个数)。如果可以分割的话
说明这个数不是素数,否则就是素数。
2、程序源码:
小时=0
跳跃=1
从数学导入 sqrt
从系统导入标准输出
对于范围 (101,201) 内的 m:
k = int(sqrt(m + 1))
对于范围 (2,k + 1) 内的 i:
如果 m % i == 0:
飞跃 = 0
休息
如果跳跃 == 1:
打印 '%-4d' % m
h+=1
如果 h % 10 == 0:
打印 ''
跳跃=1
print '总计为 %d' % h
【程序13】
问题:打印出所有“水仙数”。所谓“水仙数”,是指其立方和等于该数的三位数。
本身。例如:153是一个“水仙花数”,因为153=1的立方+5的立方+3的立方。
1、程序分析:使用for循环控制100-999个数字,将每个数字分解为个位、十位、百位。
2、程序源码:
对于范围 (100,1001) 内的 n:
我=n/100
j = n / 10 % 10
k = n% 10
如果 i * 100 + j * 10 + k == i + j ** 2 + k ** 3:
打印“%-5d”%n
【程序14】
主题:将正整数分解为质因数。例如:输入90,打印出90=2*3*3*5。
程序分析:要将n分解为质因数,首先要找到一个最小质数k,然后按照以下步骤完成:
(1)如果这个素数正好等于n,则说明素因数分解的过程已经结束,打印出来即可。
(2) 如果nk,但n能被k整除,则打印出k的值,并将n除以k的商,作为新的正整数n,
重复第一步。
(3) 如果n不能被k整除,则使用k+1作为k的值,并重复第一步。
2、程序源码:
从系统导入标准输出
n = int(raw_input("输入数字:"))
打印“n = %d”% n
对于范围 (2,n + 1) 内的 i:
当 n != i 时:
如果 n % i == 0:
标准输出.write(str(i))
stdout.write(“*”)
n=n/i
别的:
休息
打印“%d”%n
【程序15】
问题:利用条件运算符的嵌套完成这道题:学业成绩>=90分的学生用A表示,成绩在60-89之间的学生用B表示。
低于 60 分的分数用 C 表示。
1. 程序分析: (a>b)?a:b 这是条件运算符的基本示例。
2、程序源码:
不支持该运营商
分数 = int(raw_input('输入分数:'))
如果分数 >= 90:
等级='A'
elif 分数 >= 60:
等级='B'
别的:
等级='C'
print '%d 属于 %s' % (分数,成绩)
【程序17】
问题:输入一行字符,统计其中的英文字母、空格、数字等字符的个数。
1、程序分析:使用while语句,条件是输入字符不是''。
2、程序源码:
导入字符串
s = raw_input('输入字符串:')
字母 = 0
空间 = 0
数字 = 0
其他 = 0
对于 s 中的 c:
如果 c.isalpha():
字母 += 1
elif c.isspace():
空间 += 1
elif c.isdigit():
数字+=1
别的:
其他+= 1
print 'char = %d,空格 = %d,数字 = %d,其他 = %d' % (字母,空格,数字,其他)
问题:求 s=a+aa+aaa+aaaa+aa...a 的值,其中 a 是一个数字。比如2+22+222+2222+22222(此时
共有5个数字),几个数字的相加由键盘控制。
1、程序分析:关键是计算每一项的值。
2、程序源码:
肌钙蛋白 = 0
锡=[]
n = int(raw_input('n = : '))
a = int(raw_input('a = : '))
对于范围内的计数(n):
Tn = Tn + a
a = a * 10
Sn.追加(Tn)
打印
Sn = reduce(lambda x,y : x + y,Sn)
打印锡
【程序19】
问:如果一个数恰好等于它的因数之和,则该数称为“完全数”。例如,6=1+2+3。编程
找出 1000 以内的所有完美数字。
1、程序分析:请参考程序
2、程序源码:
从系统导入标准输出
对于范围 (2,1001) 内的 j:
k = []
n = -1
s = j
对于范围 (1,j) 内的 i:
如果 j % i == 0:
n+=1
s-=我
k.追加(i)
如果 s == 0:
打印 j
对于范围 (n) 内的 i:
标准输出.write(k[i])
标准输出.write(' ')
打印 k[n]
【程序20】
问题:一个球从 100 米高处自由落体。每次撞击地面时,它都会弹回原来高度的一半。如果再跌倒,找到它的
第10次落地时一共飞行了多少米?第十次反弹有多高?
1.程序分析:见下面注释
2、程序源码:
锡 = 100.0
Hn=Sn/2
对于范围 (2,11) 内的 n:
Sn += 2 * Hn
Hn /= 2
print '道路总数为 %f' % Sn
print '第十个是 %f 米' % Hn