首页 分享 Python编程实例精粹

Python编程实例精粹

来源:萌宠菠菠乐园 时间:2025-01-08 16:28

Python实例集锦

Python实例之一

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

使用三次循环

for x in range(1,5): for y in range(1,5): for z in range(1,5): if (x != y) and (x != z) and (y != z): print(x, y, z) 12345 使用列表存储结果

result=[] 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): result.append([i,j,k]) print("数量:{}".format(len(result))) print(result) 12345678

数量:24 [[1, 2, 3], [1, 2, 4], [1, 3, 2], [1, 3, 4], [1, 4, 2], [1, 4, 3], [2, 1, 3], [2, 1, 4], [2, 3, 1], [2, 3, 4], [2, 4, 1], [2, 4, 3], [3, 1, 2], [3, 1, 4], [3, 2, 1], [3, 2, 4], [3, 4, 1], [3, 4, 2], [4, 1, 2], [4, 1, 3], [4, 2, 1], [4, 2, 3], [4, 3, 1], [4, 3, 2]] 12

for ite in result: print(ite[0]) 12

mylist = [[1,5,6],[2,7,8],[3,9,10],[4,11,12]] list1 = [] list2 = [] for it in mylist: list1 += [it[0]] list2 += it[1:] print(list1) print(list2) 12345678

[1, 2, 3, 4] [5, 6, 7, 8, 9, 10, 11, 12] 12

mylist = [[1,5,6],[2,7,8],[3,9,10],[4,11,12]] list1 = [] list2 = [] index = 1 for it in mylist: list1 += [it[index]] list2 += it[:index] list2 += it[index+1:] print(list1) print(list2) 12345678910

[5, 7, 9, 11] [1, 6, 2, 8, 3, 10, 4, 12] 12 减少循环冗余的改进

for x in range(1,5): for y in range(1,5): if(y == x): continue for z in range(1,5): if(z == x or z == y): continue print(x, y, z) 12345678 使用permutations

result=[] from itertools import permutations for i in permutations([1, 2, 3, 4], 3): result.append(i) print("数量:{}".format(len(result))) print(result) #每一项为元组 123456

数量:24 [(1, 2, 3), (1, 2, 4), (1, 3, 2), (1, 3, 4), (1, 4, 2), (1, 4, 3), (2, 1, 3), (2, 1, 4), (2, 3, 1), (2, 3, 4), (2, 4, 1), (2, 4, 3), (3, 1, 2), (3, 1, 4), (3, 2, 1), (3, 2, 4), (3, 4, 1), (3, 4, 2), (4, 1, 2), (4, 1, 3), (4, 2, 1), (4, 2, 3), (4, 3, 1), (4, 3, 2)] 12 使用列表推导式

nums = [1,2,3,4] print([(x,y,z) for x in nums for y in nums for z in nums if x!=y and x!=z and y!=z]) 123

[(1, 2, 3), (1, 2, 4), (1, 3, 2), (1, 3, 4), (1, 4, 2), (1, 4, 3), (2, 1, 3), (2, 1, 4), (2, 3, 1), (2, 3, 4), (2, 4, 1), (2, 4, 3), (3, 1, 2), (3, 1, 4), (3, 2, 1), (3, 2, 4), (3, 4, 1), (3, 4, 2), (4, 1, 2), (4, 1, 3), (4, 2, 1), (4, 2, 3), (4, 3, 1), (4, 3, 2)] 1

Python实例之二

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

使用 if-elif-else 多路分支

x = int(input("净利润:")) if x<=100000: bonus=x*0.1 print("奖金:",bonus,"元") elif 100001<x<=200000: bonus=10000+(x-100000)*0.075 print("奖金:",bonus,"元") elif 200001<x<=400000: bonus=10000+7500+(x-200000)*0.05 print("奖金:",bonus,"元") elif 400001<x<=600000: bonus=10000+7500+10000+(x-400000)*0.03 print("奖金:",bonus,"元") elif 600001<x<=1000000: bonus=10000+7500+10000+6000+(x-600000)*0.015 print("奖金:",bonus,"元") elif 600001<x<=1000000: bonus=10000+7500+10000+6000+6000+(x-600000)*0.01 print("奖金:",bonus,"元")

12345678910111213141516171819

净利润:3232 奖金: 323.20000000000005 元 12 使用双数组的方式进行数轴定位

profit = int(input("净利润:")) arr = [1000000, 600000, 400000, 200000, 100000, 0] rat = [0.01, 0.015, 0.03, 0.05, 0.075, 0.1] bonus = 0 for idx in range(len(arr)): if profit > arr[idx]: bonus += (profit - arr[idx]) * rat[idx] profit = arr[idx] print("奖金:", bonus) 1234567891011

净利润:12313 奖金: 1231.3000000000002 12 使用字典管理数据

i = int(input('净利润:')) arr = {1000000:0.01,600000:0.015,400000:0.03,200000:0.05,100000:0.075,0:0.1} r = 0 for idx in arr.keys(): if i > idx: r += (i - idx) * arr[idx] i = idx print(r) 12345678 封装为函数,使用抽象递归减少重复工作量

profit = int(input("净利润:")) def clac_bonus(I): bonus = 0 if I <= 100000: bonus = I*0.1 elif I <= 200000: bonus = (I-100000)*0.075 + clac_bonus(100000) elif I <= 400000: bonus = (I-200000)*0.05 + clac_bonus(200000) elif I <= 600000: bonus = (I-400000)*0.03 + clac_bonus(400000) elif I <= 1000000: bonus = (I-600000)*0.015 + clac_bonus(600000) else: bonus = (I-1000000)*0.01 + clac_bonus(1000000) return bonus print("奖金:", clac_bonus(profit))

12345678910111213141516171819

净利润:2342 奖金: 234.20000000000002 12

Python实例之三

一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
程序分析:
假设该数为 x。
1、则:x + 100 = n2, x + 100 + 168 = m2
2、计算等式:m2 - n2 = (m + n)(m - n) = 168

计算公式

for m in range(168): for n in range(m): if (m+n)*(m-n)==168: x=n**2-100 print("符合条件的整数有:",x) 12345

符合条件的整数有: -99 符合条件的整数有: 21 符合条件的整数有: 261 符合条件的整数有: 1581 1234 简化公式

x + 100 = n^2

n^2 + 168 = m^2

令 m = n+k,

2nk + k^2 = 168,

k(2n + k) = 168, 必有一个是偶数,则都为偶数,

(k/2)(k/2 + n) = 42,

i(i+n) = 42, n > 0

所以 2 <= i <= 6

for i in range(1,7): n = 42 / i - i if int(n) == n: x = pow(n, 2) - 100 print(int(x)) 12345

1581 261 21 -99 1234 直接书写条件-列表推导式

print([pow(n,2) - 100 for m in range(168) for n in range(m) if (m-n)*(m+n) == 168]) 1

[-99, 21, 261, 1581] 1

Python实例之四

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

程序分析:

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

date = input("输入年月日(yyyy-mm-dd):") y,m,d = (int(i) for i in date.split('-')) sum=0 special = (1,3,5,7,8,10) for i in range(1,int(m)): if i == 2: if y%400==0 or (y%100!=0 and y%4==0): sum+=29 else: sum+=28 elif(i in special): sum+=31 else: sum+=30 sum+=d print("这一天是一年中的第%d天"%sum)

12345678910111213141516

输入年月日(yyyy-mm-dd):2018-4-5 这一天是一年中的第95天 12 使用 list 存储月份信息

months = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] year = int(input("Year:")) month = int(input("Month:")) day = int(input("Day:")) assert 0 < month < 13, "The month must be realistic" assert 0 < day <= months[month], "The day must be realistic" if year % 400 == 0 or (year % 4 == 0 and year % 100 != 0): months[1] += 1 sum_day = day for idx in range(month-1): sum_day += months[idx] print("It's the %dth day." % sum_day)

1234567891011121314151617

Year:2018 Month:4 Day:5 It's the 95th day. 1234 使用字典存储月份信息

months = {1: 31, 2: 28, 3: 31, 4: 30, 5: 31, 6: 30, 7: 31, 8: 31, 9: 30, 10: 31, 11: 30, 12: 31} def isLeapYear(year): if year % 400 == 0 or (year % 4 == 0 and year % 100 != 0): return True else: return False year = int(input("Year:")) month = int(input("Month:")) day = int(input("Day:")) assert 0 < month < 13, "The month must be realistic" assert 0 < day <= months[month], "The day must be realistic" sum_day = day for idx in range(1, month): sum_day += months[idx] if isLeapYear(year): sum_day += 1 print("It's the %dth day." % sum_day)

1234567891011121314151617181920212223242526272829303132333435

Year:2018 Month:4 Day:5 It's the 95th day. 1234

Python实例之五

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

if else多路分支

a, b, c = input("请输入n个整数以逗号分隔:").split(',') if a > b and a > c: print(a, ' ', end='') if b > c: print(b, c) else: print(c, b) if b > a and b > c: print(b, ' ', end='') if a > c: print(a, c) else: print(c, a) if a > a and c > b: print(c, ' ', end='') if a > c: print(a, c) else: print(c, b)

1234567891011121314151617181920

请输入n个整数以逗号分隔:5,8,2 8 5 2 12 使用选择排序

a = input("请输入n个整数以逗号分隔:").split(',') n=len(a) for i in range(0,n): for j in range(i,n) : if (a[i] >= a[j] ): tmp =a[i] a[i]=a[j] a[j]=tmp print(a) 123456789101112

请输入n个整数以逗号分隔:4,2,6,5,3 ['2', '3', '4', '5', '6'] 12 使用冒泡排序

# 利用冒泡排序方法 def bubbleleSort(list): n = len(list) for i in range(1, n): # 一次次的将最大的学出来 for j in range(1, n - i + 1): if list[j - 1] > list[j]: list[j - 1], list[j] = list[j], list[j - 1] # 打印排序过程 print(list) for i in range(0, n): print(list[i]) # 读入数据 def inputData(): list_first = [] while True: a = input("please input num:".strip()) if len(a) == 0: return list_first else: list_first.append(int(a)) if __name__ == '__main__': lt = inputData() print(lt) bubbleleSort(lt)

123456789101112131415161718192021222324252627

please input num:3 please input num:1 please input num:2 please input num: [3, 1, 2] [1, 3, 2] [1, 2, 3] [1, 2, 3] 1 2 3 1234567891011 借助列表进行排序

x = int(input("X:")) y = int(input("Y:")) z = int(input("Z:")) lst = [] lst.append(x) lst.append(y) lst.append(z) lst.sort() for i in range(len(lst)): print(lst[i]) 12345678910111213

X:3 Y:1 Z:2 1 2 3 123456

### 借助字典进行排序 1

x = int(input("X:")) y = int(input("Y:")) z = int(input("Z:")) a = {"x" : x, "y" : y, "z" : z} for key in sorted(a, key=a.get): print(key, a[key]) 12345678910

X:3 Y:1 Z:2 y 1 z 2 x 3 123456

Python实例之六

斐波那契数列。
程序分析:斐波那契数列(Fibonacci sequence),又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……。
在数学上,费波那契数列是以递归的方法来定义:

基本算法

# 获取用户输入数据 nterms = int(input("你需要几项?")) # 第一和第二项 n1 = 1 n2 = 1 count = 2 # 判断输入的值是否合法 if nterms <= 0: print("请输入一个正整数。") elif nterms == 1: print("斐波那契数列:") print(n1) else: print("斐波那契数列:") print(n1,",",n2,end=" , ") while count < nterms: nth = n1 + n2 print(nth,end=" , ") # 更新值 n1 = n2 n2 = nth count += 1

123456789101112131415161718192021222324

你需要几项?10 斐波那契数列: 1 , 1 , 2 , 3 , 5 , 8 , 13 , 21 , 34 , 55 , 123 简化算法

i, j = 1, 1 while i < 10000: print(i,',', end='') i, j = i+j, i 12345

1 ,2 ,3 ,5 ,8 ,13 ,21 ,34 ,55 ,89 ,144 ,233 ,377 ,610 ,987 ,1597 ,2584 ,4181 ,6765 , 1 使用函数封装

def fib(n): a, b = 0, 1 while n: a, b, n = b, a+b, n-1 print(a) fib(10) 1234567

1 1 2 3 5 8 13 21 34 55 12345678910

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)) 123456789101112

[1, 1, 2, 3, 5, 8, 13, 21, 34, 55] 1 使用递归

def fib(n): if n == 0: return 0 elif n == 1: return 1 else: return fib(n-2) + fib(n-1) fib(10) 123456789

55 1 使用 reduce 来简化

from functools import reduce lst = [1, 1] for idx in range(9): lst.append(reduce(lambda x, y : x + y, lst[-1:-3:-1])) print(lst) 1234567

[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89] 1

Python实例之七

古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
程序分析:兔子的规律为数列1,1,2,3,5,8,13,21…,实际上就是斐波拉契数列

f1 = 1 f2 = 1 for i in range(1,22): print('%12ld %12ld' % (f1,f2),end=' ') if (i % 3) == 0: print() f1 = f1 + f2 f2 = f1 + f2 12345678

1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040 1346269 2178309 3524578 5702887 9227465 14930352 24157817 39088169 63245986 102334155 165580141 267914296 1234567

Python实例之八

输出 9*9 乘法口诀表

使用 for 循环,控制行和列

for i in range(1, 10): print() for j in range(1, i+1): #print("%d*%d=%d" % (j, i, j*i),end='t') print("{}*{}={}".format(i,j,i*j), end="t") 12345

1*1=1 2*1=22*2=4 3*1=33*2=63*3=9 4*1=44*2=84*3=124*4=16 5*1=55*2=105*3=155*4=205*5=25 6*1=66*2=126*3=186*4=246*5=306*6=36 7*1=77*2=147*3=217*4=287*5=357*6=427*7=49 8*1=88*2=168*3=248*4=328*5=408*6=488*7=568*8=64 9*1=99*2=189*3=279*4=369*5=459*6=549*7=639*8=729*9=81 123456789 列表推导式

print('n'.join([ ' '.join([ "%d*%d=%2s" %(y,x,x*y) for y in range(1,x+1)]) for x in range(1,10)])) 1

1*1= 1 1*2= 2 2*2= 4 1*3= 3 2*3= 6 3*3= 9 1*4= 4 2*4= 8 3*4=12 4*4=16 1*5= 5 2*5=10 3*5=15 4*5=20 5*5=25 1*6= 6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 1*7= 7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 1*8= 8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 1*9= 9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81 123456789 长方形完整形式

for i in range(1,10): for j in range(1,10): print(" %d*%d=%2d "% (i, j, i*j), end='') print("") 1234

1*1= 1 1*2= 2 1*3= 3 1*4= 4 1*5= 5 1*6= 6 1*7= 7 1*8= 8 1*9= 9 2*1= 2 2*2= 4 2*3= 6 2*4= 8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18 3*1= 3 3*2= 6 3*3= 9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27 4*1= 4 4*2= 8 4*3=12 4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36 5*1= 5 5*2=10 5*3=15 5*4=20 5*5=25 5*6=30 5*7=35 5*8=40 5*9=45 6*1= 6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 6*7=42 6*8=48 6*9=54 7*1= 7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 7*8=56 7*9=63 8*1= 8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 8*9=72 9*1= 9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81 123456789 左上角三角形

for i in range(1,10): for j in range(i,10): print( "%d*%d=%-4d"%(i,j,i*j), end='') print("") 1234

1*1=1 1*2=2 1*3=3 1*4=4 1*5=5 1*6=6 1*7=7 1*8=8 1*9=9 2*2=4 2*3=6 2*4=8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18 3*3=9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27 4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36 5*5=25 5*6=30 5*7=35 5*8=40 5*9=45 6*6=36 6*7=42 6*8=48 6*9=54 7*7=49 7*8=56 7*9=63 8*8=64 8*9=72 9*9=81 123456789 右上三角形

for i in range(1,10): for k in range(1,i): print(" ", end = '') for j in range(i,10): print("%d*%d=%-4d" % (i, j, i*j), end='') print ("") 123456

1*1=1 1*2=2 1*3=3 1*4=4 1*5=5 1*6=6 1*7=7 1*8=8 1*9=9 2*2=4 2*3=6 2*4=8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18 3*3=9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27 4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36 5*5=25 5*6=30 5*7=35 5*8=40 5*9=45 6*6=36 6*7=42 6*8=48 6*9=54 7*7=49 7*8=56 7*9=63 8*8=64 8*9=72 9*9=81 123456789 右下角三角形

for i in range(1,10): for k in range(1, 10-i): print (" ", end='') for j in range(1 ,i+1): print("%d*%d=%-4d" % (i, j, i*j), end='') print("") 123456

1*1=1 2*1=2 2*2=4 3*1=3 3*2=6 3*3=9 4*1=4 4*2=8 4*3=12 4*4=16 5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81 123456789

Python实例之九

判断101-200之间有多少个素数,并输出所有素数。
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。

from math import sqrt count=0 pn=1 for i in range(101,201): k=int(sqrt(i)) for j in range(2,k+1): if i%j==0: pn=0 break if pn==1: count+=1 print(i,end=' ') pn=1 print() print("total number is %d"%count)

12345678910111213141516

101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 total number is 21 12

#排除法 import math m=range(101,201) p=list(m) for i in range(101,201): for j in range(2,int(math.sqrt(i)+1)): if i % j == 0: p.remove(i) break print(p) print("101至200之间的素数一共有%d个"%len(p)) 1234567891011

Python实例之十

打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。

L = [] for n in range(100,1000):i = n // 100j = n // 10 % 10k = n % 10if n == i ** 3 + j ** 3 + k ** 3:L.append(n) print(L) print(len(L)) 123456789

#基于字符串列表 for i in range(100, 1000): s = str(i) if int(s[0]) ** 3 + int(s[1]) ** 3 + int(s[2]) ** 3 == i: print(i,end=' ') 12345

Python实例之十一

将一个正整数分解质因数。例如:输入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的值,重复执行第一步。

x = int(input("是否进入循环?是:1, 否:0n")); while(x): n = int(input("请输入一个正整数:")); print ("%d = " %n , end = ''); while n not in [1]: for index in range(2, n+1): if n % index == 0: n = int(n/index); if n == 1: print("%d " %index , end = ''); else: print("%d * " %index , end = '') break; print(); x = int(input("是否进入循环?是:1, 否:0n")); 123456789101112131415

#基于函数 def prime(n): l = [] while n > 1: for i in range(2, n + 1): if n % i == 0: n = int(n / i) l.append(i) break return l s = input("输入一个正整数:") if s.isdigit() and int(s) > 0: print(s, "=", "*".join([str(x) for x in prime(int(s))])) else: print("请输入正确的正整数")

1234567891011121314151617

Python实例之十二

利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
程序分析:程序分析:(a>b)?a:b这是条件运算符的基本例子。

a=int(input('输入分数:')) print('A' if a>89 else ('B' if a>59 else 'C')) 12

i= int(input('请输入成绩:')) ar= [90,60,0] res= ['A','B','C'] for idx in range (0,3):if i >=ar[idx]:print(res[idx])break 1234567

Python实例之十三

输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
程序分析:利用is开头的判断函数

InPut = input('输入任意字符:') letters = [] spaces = [] digits = [] others = [] for i in iter(InPut): if i.isalpha() == True: letters.append(i) elif i.isspace() == True: spaces.append(i) elif i.isdigit() == True: digits.append(i) else: others.append(i) print(''' 字母: {}, 个数: {}; 空字符: {}, 个数: {}; 数字: {}, 个数: {}; 其他: {}, 个数: {}'''.format(letters, len(letters), spaces, len(spaces), digits, len(digits), others, len(others)))

12345678910111213141516171819

Python实例之十四

求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。
程序分析:关键是计算出每一项的值。

n = int(input('n = ')) a = int(input('a = ')) sum_ = 0 total = 0 for i in range(n): sum_ += (10 ** i) total += sum_ * a print(total) 12345678

Python实例之十五

一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。
程序分析:参见Python实例之十一,分解质因数

for i in range(1, 1001): sum = 0 for j in range(1, i // 2 +1): if i % j == 0: sum += j if sum == i: print(i) 1234567

Python实例之十六

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

h = 100.0 # 总高度 tim = 10 # 次数 hei = [] # 每次反弹高度 for i in range(2,tim+1): # 计算第二次落地到第十次落地 h = h / 2 hei.append(h) sumhei = sum(hei) print('第10次落地时,反弹%s高'%(min(hei)/2)) # 第十次反弹为第十次落地距离的一半 print('第10次落地时,经过%s米'%(2 * sumhei + total)) # 总和加上第一次的 100 123456789

Python实例之十七

猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
程序分析:采取逆向思维的方法,从后往前推断。

x = 1 for day in range(0,9):x = (x+1)*2 print(x) 1234

Python实例之十八

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

n=['a','b','c'] m=[] for i in range(3): if n[i]!='a' and n[i]!='c': m.insert(i,'x') elif n[i]!='c': m.insert(i,'z') else: m.insert(i,'y') print('a--%s, b--%s, c--%s' %(m[0], m[1], m[2])) 1234567891011

for a in ['x','y','z']: for b in ['x', 'y', 'z']: for c in ['x', 'y', 'z']: if(a!=b)and(b!=c)and(c!=a) and (a!='x') and (c!='x') and (c!='z'): print('a和%s比赛,b和%s比赛,c和%s比赛' %(a,b,c)) 12345

Python实例之十九

有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。
程序分析:请抓住分子与分母的变化规律。

a = 2 b = 1 l = [] for n in range(1,21): l.append(a / b) b,a = a,a + b print(sum(l)) 1234567

Python实例之二十

求1+2!+3!+…+20!的和。

s = 0 for i in range(1, 21): r = 1 for j in range(1, i+1): r *= j s += r print(s) 1234567

## http://www.runoob.com/python3/python3-examples.html 1

相关知识

Python3 实例
Python编程实现鸟类行为模拟与属性定义的全面指南
Python笔试题
Python编程实现鸟类行为模拟与分类算法应用
构建宠物交流网站的编程语言选择:Java、PHP、Node.js与Python的比较
Python编程轻松驾驭二哈摄像头:解锁智能宠物监控新技巧!
宠物管理系统python
python桌面宠物源代码
Python基础练习题‌100道电子版及源码文件
python编程

网址: Python编程实例精粹 https://www.mcbbbk.com/newsview992398.html

所属分类:萌宠日常
上一篇: 养龟的绿水怎么培养,打造理想水环
下一篇: 草龟水质要求

推荐分享