(完整版)Python100个小例子

发布时间:2020-05-06 10:26:45   来源:文档文库   
字号:

一、Python 练习实例1

题目:有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?

程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。

程序源代码:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

for i in range(1, 5):

for j in range(1, 5):

for k in range(1, 5):

if (i != k) and (i != j) and (j != k):

print(i, j, k)

二、Python 练习实例2

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

程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。

程序源代码:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

i = int(input('净利润:'))

arr = [1000000, 600000, 400000, 200000, 100000, 0]

rat = [0.01, 0.015, 0.03, 0.05, 0.075, 0.1]

r = 0

for idx in range(0, 6):

if i > arr[idx]:

r += (i - arr[idx]) * rat[idx]

print((i - arr[idx]) * rat[idx])

i = arr[idx]

print(r)

三、Python 练习实例3

题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

程序分析:

假设该数为 x。

1、则:x + 100 = n2, x + 100 + 168 = m2

2、计算等式:m2 - n2 = (m + n)(m - n) = 168

3、设置: m + n = i,m - n = j,i * j =168,i 和 j 至少一个是偶数

4、可得: m = (i + j) / 2, n = (i - j) / 2,i 和 j 要么都是偶数,要么都是奇数。

5、从 3 和 4 推导可知道,i 与 j 均是大于等于 2 的偶数。

6、由于 i * j = 168, j>=2,则 1 < i < 168 / 2 + 1。

7、接下来将 i 的所有数字循环计算即可。

程序源代码:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

for i in range(1, 85):

if 168 % i == 0:

j = 168 / i;

if i > j and (i + j) % 2 == 0 and (i - j) % 2 == 0:

m = (i + j) / 2

n = (i - j) / 2

x = n * n - 100

print(x)

四、Python 练习实例4

题目:输入某年某月某日,判断这一天是这一年的第几天?

程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于2时需考虑多加一天:

程序源代码:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

year = int(input('year:\n'))

month = int(input('month:\n'))

day = int(input('day:\n'))

months = (0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334)

if 0 < month <= 12:

sum = months[month - 1]

else:

print

'data error'

sum += day

leap = 0

if (year % 400 == 0) or ((year % 4 == 0) and (year % 100 != 0)):

leap = 1

if (leap == 1) and (month > 2):

sum += 1

print('it is the %dth day.' % sum)

五、Python 练习实例5

题目:输入三个整数x,y,z,请把这三个数由小到大输出。

程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。

程序源代码:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

l = []

for i in range(3):

x = int(input('integer:\n'))

l.append(x)

l.sort()

print(l)

六、Python 练习实例6题目:斐波那契数列。

程序分析:斐波那契数列(Fibonacci sequence),又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……。

在数学上,费波那契数列是以递归的方法来定义:

F0 = 0 (n=0)

F1 = 1 (n=1)

Fn = F[n-1]+ F[n-2](n=>2)

程序源代码:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

def fib(n):

a, b = 1, 1

for i in range(n - 1):

a, b = b, a + b

return a

# 输出了第10个斐波那契数列

print(fib(10))

# 使用递归

def fib(n):

if n == 1 or n == 2:

return 1

return fib(n - 1) + fib(n - 2)

# 输出了第10个斐波那契数列

print(fib(10))

def fib(n):

if n == 1:

return [1]

if n == 2:

return [1, 1]

fibs = [1, 1]

for i in range(2, n):

fibs.append(fibs[-1] + fibs[-2])

return fibs

# 输出前 10 个斐波那契数列

print(fib(10))

七、Python 练习实例7

题目:将一个列表的数据复制到另一个列表中。

程序分析:使用列表[:]。

程序源代码:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

a = [1, 2, 3]

b = a[:]

print(b)

八、Python 练习实例8

题目:输出 9*9 乘法口诀表。

程序分析:分行与列考虑,共9行9列,i控制行,j控制列。

程序源代码:

for i in range(1,10):

for j in range(1,i+1):

print("""%d*%d=%d""" % (i,j,i*j),end=" ")

print()

九、Python 练习实例9

题目:暂停一秒输出。

程序分析:使用 time 模块的 sleep() 函数。

#!/usr/bin/python

# -*- coding: UTF-8 -*-

import time

myD = {1: 'a', 2: 'b'}

for key, value in dict.items(myD):

print(key, value)

time.sleep(1) # 暂停 1 秒

十、Python 练习实例10

题目:暂停一秒输出,并格式化当前时间。

程序分析:无。

程序源代码:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

import time

print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())))

# 暂停一秒

time.sleep(1)

print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())))

十一、Python 练习实例11

Python 100例 Python 100例

题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....

程序源代码:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

f1 = 1

f2 = 1

for i in range(1, 22):

print('%12ld %12ld' % (f1, f2),),

if (i % 3) == 0:

print('')

f1 = f1 + f2

f2 = f1 + f2

十二、Python 练习实例12

题目:判断101-200之间有多少个素数,并输出所有素数。

程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。   

程序源代码:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

h = 0

leap = 1

from math import sqrt

from sys import stdout

for m in range(101, 201):

k = int(sqrt(m + 1))

for i in range(2, k + 1):

if m % i == 0:

leap = 0

break

if leap == 1:

print('%-4d' % m)

h += 1

if h % 10 == 0:

print('')

leap = 1

print('The total is %d' % h)

十三、Python 练习实例13

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

程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。

程序源代码:

print("100-999之间的水仙花数有:")

for i in range(100, 999):

j = int(i / 1 % 10) # 个位 使用int的原因是强转故意让其损失精度,Python中使用此方法获取时必须强转因为Python中默认保留小数

k = int(i / 10 % 10) # 十位

m = int(i / 100 % 10) # 百位

if i == (j ** 3 + k ** 3 + m ** 3):

print(i)

十四、Python 练习实例14

题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。

程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:

(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。

(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。

(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。

程序源代码:

while 1:

n = int(input('请输入一个整数:'))

print('%d='%n,end='')

while n>1:

for i in range(2,n+1):

if n%i==0:

n=int(n/i)

if n==1:

print('%d'%i,end='')

else:

print('%d*'%i,end='')

break

print()

十五、Python 练习实例15

题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。

程序分析:程序分析:(a>b)?a:b这是条件运算符的基本例子。

程序源代码:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

score = int(input('输入分数:\n'))

if score >= 90:

grade = 'A'

elif score >= 60:

grade = 'B'

else:

grade = 'C'

print('%d 属于 %s' % (score, grade))

十六、Python 练习实例16

题目:输出指定格式的日期。

程序分析:使用 datetime 模块。

#!/usr/bin/python

# -*- coding: UTF-8 -*-

import datetime

if __name__ == '__main__':

# 输出今日日期,格式为 dd/mm/yyyy。更多选项可以查看 strftime() 方法

print(datetime.date.today().strftime('%d/%m/%Y'))

# 创建日期对象

miyazakiBirthDate = datetime.date(1941, 1, 5)

print(miyazakiBirthDate.strftime('%d/%m/%Y'))

# 日期算术运算

miyazakiBirthNextDay = miyazakiBirthDate + datetime.timedelta(days=1)

print(miyazakiBirthNextDay.strftime('%d/%m/%Y'))

# 日期替换

miyazakiFirstBirthday = miyazakiBirthDate.replace(year=miyazakiBirthDate.year + 1)

print(miyazakiFirstBirthday.strftime('%d/%m/%Y'))

十七、Python 练习实例17

题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

程序分析:利用 while 或 for 语句,条件为输入的字符不为 '\n'。

#!/usr/bin/python

# -*- coding: UTF-8 -*-

import string

s =input('请输入一个字符串:\n')

letters = 0

space = 0

digit = 0

others = 0

i = 0

while i < len(s):

c = s[i]

i += 1

if c.isalpha():

letters += 1

elif c.isspace():

space += 1

elif c.isdigit():

digit += 1

else:

others += 1

print('char = %d,space = %d,digit = %d,others = %d' % (letters, space, digit, others))

十八、Python 练习实例18

题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。

程序分析:关键是计算出每一项的值。

程序源代码:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

Tn = 0

Sn = []

n = int(input('n = '))

a = int(input('a = '))

for count in range(n):

Tn = Tn + a

a = a * 10

Sn.append(Tn)

print(Tn)

Sn = reduce(lambda x, y: x + y, Sn)

print("计算和为:", Sn)

十九、Python 练习实例19

题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。

程序分析:请参照程序Python 练习实例14。

程序源代码:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

from sys import stdout

for j in range(2, 1001):

k = []

n = -1

s = j

for i in range(1, j):

if j % i == 0:

n += 1

s -= i

k.append(i)

if s == 0:

print(j)

for i in range(n):

stdout.write(str(k[i]))

stdout.write(' ')

print(k[n])

二十、Python 练习实例20

题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?

程序分析:无

程序源代码:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

tour = []

height = []

hei = 100.0 # 起始高度

tim = 10 # 次数

for i in range(1, tim + 1):

# 从第二次开始,落地时的距离应该是反弹高度乘以2(弹到最高点再落下)

if i == 1:

tour.append(hei)

else:

tour.append(2 * hei)

hei /= 2

height.append(hei)

print('总高度:tour = {0}'.format(sum(tour)))

print('第10次反弹高度:height = {0}'.format(height[-1]))

二十一、Python 练习实例21

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

程序分析:采取逆向思维的方法,从后往前推断。

程序源代码:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

x2 = 1

for day in range(9, 0, -1):

x1 = (x2 + 1) * 2

x2 = x1

print(x1)

二十二、Python 练习实例22

题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。

程序源代码:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

for i in range(ord('x'), ord('z') + 1):

for j in range(ord('x'), ord('z') + 1):

if i != j:

for k in range(ord('x'), ord('z') + 1):

if (i != k) and (j != k):

if (i != ord('x')) and (k != ord('x')) and (k != ord('z')):

print('order is a -- %s\t b -- %s\tc--%s' % (chr(i), chr(j), chr(k)))

二十三、Python 练习实例23

题目:打印出如下图案(菱形):

*

***

*****

*******

*****

***

*

程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重for循环,第一层控制行,第二层控制列。

程序源代码:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

from sys import stdout

for i in range(4):

for j in range(2 - i + 1):

stdout.write(' ')

for k in range(2 * i + 1):

stdout.write('*')

print('\n')

for i in range(3):

for j in range(i + 1):

stdout.write(' ')

for k in range(4 - 2 * i + 1):

stdout.write('*')

print('\n')

二十四、Python 练习实例24

题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。

程序分析:请抓住分子与分母的变化规律。

程序源代码:

方法一:#!/usr/bin/python

# -*- coding: UTF-8 -*-

a = 2.0

b = 1.0

s = 0

for n in range(1, 21):

s += a / b

t = a

a = a + b

b = t

print(s)

二十五、Python 练习实例25

题目:求1+2!+3!+...+20!的和。

程序分析:此程序只是把累加变成了累乘。

#!/usr/bin/python

# -*- coding: UTF-8 -*-

n = 0

s = 0

t = 1

for n in range(1, 21):

t *= n

s += t

print('1! + 2! + 3! + ... + 20! = %d' % s)

二十六、Python 练习实例26

题目:利用递归方法求5!。

程序分析:递归公式:fn=fn_1*4!

程序源代码:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

def fact(j):

sum = 0

if j == 0:

sum = 1

else:

sum = j * fact(j - 1)

return sum

print(fact(5))

二十七、Python 练习实例27

题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。

程序分析:无。

程序源代码:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

def output(s, l):

if l == 0:

return

print(s[l - 1])

output(s, l - 1)

s = input('Input a string:')

l = len(s)

output(s, l)

二十八、Python 练习实例28

题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?

程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道第四人的岁数,依次类推,推到第一人(10岁),再往回推。

程序源代码:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

def age(n):

if n == 1:

c = 10

else:

c = age(n - 1) + 2

return c

print(age(5))

二十九、Python 练习实例29

题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。

程序分析:学会分解出每一位数。

程序源代码:

num = input('输入一个不超过5位的正整数:')

l = len(num) #长度,就是几位数

print('这个数是',l ,'位数')

n = num[::-1] #通过索引切片,逆序打印出数字

for i in n:

print(i)

三十、Python 练习实例30

题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。

程序分析:无。

程序源代码:

num=input("请输入一个五位数?")

a=num[:1]

b=num[1:2]

c=num[2:3]

d=num[3:4]

f=num[4:5]

print(a,b,c,d,f)

if a==f and b==d:

print("是回文数")

else:

print("不是")

三十一、Python 练习实例31

题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。

程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。。

程序源代码:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

letter = input("please input:")

# while letter != 'Y':

if letter == 'S':

print('please input second letter:')

letter =input("please input:")

if letter == 'a':

print('Saturday')

elif letter == 'u':

print('Sunday')

else:

print('data error')

elif letter == 'F':

print('Friday')

elif letter == 'M':

print('Monday')

elif letter == 'T':

print('please input second letter')

letter =input("please input:")

if letter == 'u':

print('Tuesday')

elif letter == 'h':

print('Thursday')

else:

print('data error')

elif letter == 'W':

print('Wednesday')

else:

print('data error')

三十二、Python 练习实例32

题目:按相反的顺序输出列表的值。

程序分析:无。

程序源代码:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

a = ['one', 'two', 'three']

for i in a[::-1]:

print(i)

三十三、Python 练习实例33

题目:按逗号分隔列表。

程序分析:无。

L = [1,2,3,4,5]

s1 = ','.join(str(n) for n in L)

print(s1)

三十四、Python 练习实例34

题目:练习函数调用。

程序分析:无。

def hello_world():

print( 'hello world')

def three_hellos():

for i in range(3):

hello_world()

if __name__ == '__main__':

three_hellos()

三十五、Python 练习实例35

题目:文本颜色设置。

程序分析:无。

class bcolors:

HEADER = '\033[95m'

OKBLUE = '\033[94m'

OKGREEN = '\033[92m'

WARNING = '\033[93m'

FAIL = '\033[91m'

ENDC = '\033[0m'

BOLD = '\033[1m'

UNDERLINE = '\033[4m'

print(bcolors.WARNING + "警告的颜色字体?" + bcolors.ENDC)

三十六、Python 练习实例36

题目:求100之内的素数。

程序分析:无。

程序源代码:

# 输出指定范围内的素数

# 用户输入数据

lower = int(input("输入区间最小值: "))

upper = int(input("输入区间最大值: "))

for num in range(lower, upper + 1):

# 素数大于 1

if num > 1:

for i in range(2, num):

if (num % i) == 0:

break

else:

print(num)

三十七、Python 练习实例37

题目:对10个数进行排序。

程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,下次类推,即用第二个元素与后8个进行比较,并进行交换。

程序源代码:

if __name__ == "__main__":

n = 10

# input data

print( '请输入10个数字:\n')

l = []

for i in range(n):

l.append(int(input('输入一个数字:\n')))

print('\n')

for i in range(n):

print( l[i])

print('\n')

# 排列10个数字

for i in range(n - 1):

min = i

for j in range(i + 1, n):

if l[min] > l[j]: min = j

l[i], l[min] = l[min], l[i]

print('排列之后:')

for i in range(n):

print( l[i])

三十八、Python 练习实例38

题目:求一个3*3矩阵主对角线元素之和。

程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。

程序源代码:

if __name__ == '__main__':

a = []

sum = 0.0

for i in range(3):

a.append([])

for j in range(3):

a[i].append(float(input("input num:\n")))

for i in range(3):

sum += a[i][i]

print(sum)

三十九、Python 练习实例39

题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。

程序源代码:

if __name__ == '__main__':

# 方法一 : 0 作为加入数字的占位符

a = [1,4,6,9,13,16,19,28,40,100,0]

print ('原始列表:')

for i in range(len(a)):

print(a[i],)

number = int(input("\n插入一个数字:\n"))

end = a[9]

if number > end:

a[10] = number

else:

for i in range(10):

if a[i] > number:

temp1 = a[i]

a[i] = number

for j in range(i + 1,11):

temp2 = a[j]

a[j] = temp1

temp1 = temp2

break

print('排序后列表:')

for i in range(11):

print(a[i],)

四十、Python 练习实例40

题目:将一个数组逆序输出。

程序分析:用第一个与最后一个交换。

程序源代码:

a =[1,2,3,4,5,6]

size=len(a)

for i in range(size-1,-1,-1):

print( a[i])

本文来源:https://www.2haoxitong.net/k/doc/b3b67e5f57270722192e453610661ed9ad5155aa.html

《(完整版)Python100个小例子.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式