Python例項集錦
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)
使用列表儲存結果
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)
數量: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]]
for ite in result:
print(ite[0])
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)
[1, 2, 3, 4]
[5, 6, 7, 8, 9, 10, 11, 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)
[5, 7, 9, 11]
[1, 6, 2, 8, 3, 10, 4, 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)
使用permutations
result=[]
from itertools import permutations
for i in permutations([1, 2, 3, 4], 3):
result.append(i)
print("數量:{}".format(len(result)))
print(result) #每一項為元組
數量: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)]
使用列表推導式
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])
[(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)]
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,"元")
淨利潤:3232
獎金: 323.20000000000005 元
使用雙陣列的方式進行數軸定位
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)
淨利潤:12313
獎金: 1231.3000000000002
使用字典管理資料
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)
封裝為函式,使用抽象遞迴減少重複工作量
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))
淨利潤:2342
獎金: 234.20000000000002
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)
符合條件的整數有: -99
符合條件的整數有: 21
符合條件的整數有: 261
符合條件的整數有: 1581
簡化公式
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))
1581
261
21
-99
直接書寫條件-列表推導式
print([pow(n,2) - 100 for m in range(168) for n in range(m) if (m-n)*(m+n) == 168])
[-99, 21, 261, 1581]
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)
輸入年月日(yyyy-mm-dd):2018-4-5
這一天是一年中的第95天
使用 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)
Year:2018
Month:4
Day:5
It's the 95th day.
使用字典儲存月份資訊
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)
Year:2018
Month:4
Day:5
It's the 95th day.
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)
請輸入n個整數以逗號分隔:5,8,2
8 5 2
使用選擇排序
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)
請輸入n個整數以逗號分隔:4,2,6,5,3
['2', '3', '4', '5', '6']
使用氣泡排序
# 利用氣泡排序方法
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)
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
藉助列表進行排序
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])
X:3
Y:1
Z:2
1
2
3
### 藉助字典進行排序
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])
X:3
Y:1
Z:2
y 1
z 2
x 3
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
你需要幾項?10
斐波那契數列:
1 , 1 , 2 , 3 , 5 , 8 , 13 , 21 , 34 , 55 ,
簡化演算法
i, j = 1, 1
while i < 10000:
print(i,',', end='')
i, j = i+j, i
1 ,2 ,3 ,5 ,8 ,13 ,21 ,34 ,55 ,89 ,144 ,233 ,377 ,610 ,987 ,1597 ,2584 ,4181 ,6765 ,
使用函式封裝
def fib(n):
a, b = 0, 1
while n:
a, b, n = b, a+b, n-1
print(a)
fib(10)
1
1
2
3
5
8
13
21
34
55
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))
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
使用遞迴
def fib(n):
if n == 0:
return 0
elif n == 1:
return 1
else:
return fib(n-2) + fib(n-1)
fib(10)
55
使用 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)
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
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
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
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")
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
列表推導式
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*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
長方形完整形式
for i in range(1,10):
for j in range(1,10):
print(" %d*%d=%2d "% (i, j, i*j), end='')
print("")
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
左上角三角形
for i in range(1,10):
for j in range(i,10):
print( "%d*%d=%-4d"%(i,j,i*j), end='')
print("")
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
右上三角形
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 ("")
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
右下角三角形
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("")
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
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)
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
#排除法
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))
Python例項之十
列印出所有的"水仙花數",所謂"水仙花數"是指一個三位數,其各位數字立方和等於該數本身。例如:153是一個"水仙花數",因為153=1的三次方+5的三次方+3的三次方。
程式分析:利用for迴圈控制100-999個數,每個數分解出個位,十位,百位。
L = []
for n in range(100,1000):
i = n // 100
j = n // 10 % 10
k = n % 10
if n == i ** 3 + j ** 3 + k ** 3:
L.append(n)
print(L)
print(len(L))
#基於字串列表
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=' ')
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, 否:0\n"));
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, 否:0\n"));
#基於函式
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("請輸入正確的正整數")
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'))
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
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)))
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)
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)
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
Python例項之十七
猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不癮,又多吃了一個第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以後每天早上都吃了前一天剩下的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少。
程式分析:採取逆向思維的方法,從後往前推斷。
x = 1
for day in range(0,9):
x = (x+1)*2
print(x)
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]))
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))
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))
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)
## http://www.runoob.com/python3/python3-examples.html
相關文章
- python socket例項Python
- python例項1Python
- Python錯誤集錦:IndentationError: unexpected indentPythonError
- python鬧鐘例項Python
- python100例項Python
- python 類和例項Python
- 如何將獨立例項轉換成叢集例項EU
- Python基礎——切片例項Python
- Python 列表 list 陣列 array 常用操作集錦Python陣列
- Python例項大全(基於Python3.7.4)Python
- python開發例項-python開發案例Python
- Python例項之用Python求完全平方數Python
- Python學習:類和例項Python
- Python專案實戰例項Python
- Python錯誤集錦:for x in range(5) ^ SyntaxError: invalid syntaxPythonError
- 知識集錦
- 管理故事集錦
- 涵蓋 14 大主題!最完整的 Python 學習例項集來了!Python
- Python 動態新增例項屬性,例項方法,類屬性,類方法Python
- Python 描述符(Descriptor) 附例項Python
- python例項方法中self的作用Python
- python類例項化如何實現Python
- python3.10監控redis例項PythonRedis
- Python——astroplan庫入門例項(二)PythonAST
- Python專案開發案例集錦及配套程式碼Python
- 《python專案開發案例集錦》讀書筆記Python筆記
- Python資料型別面試題集錦!(附答案)Python資料型別面試題
- 前端知識集錦前端
- kafka問題集錦Kafka
- 小問題集錦
- docker 踩坑集錦Docker
- flutter問題集錦Flutter
- ArchLinux 問題集錦Linux
- Python入門基礎知識例項,Python
- python中類的建立和例項化Python
- python 單一程式例項 實現Python
- python3.7 jack棋牌11點例項Python
- Python中的if、while、for 語法及例項PythonWhile