1.題目:有四個數字:1、2、3、4,能組成多少個互不相同且無重複數字的三位數?各是多少?
程式分析:可填在百位、十位、個位的數字都是1、2、3、4。組成所有的排列後再去 掉不滿足條件的排列。
lit=
tar=[1,2,3,4]
for i in tar:
a=tar.copy()
a.remove(i)
for j in a:
b=a.copy()
b.remove(j)
for k in b:
print('the number is %s'%len(lit))
for i in lit:
print(i)
附:
列表元素刪除方法
標準答案
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
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,求應發放獎金總數?
程式分析:請利用數軸來分界,定位。注意定義時需把獎金定義成長整型。
i=input('請輸入月利潤')
i=float(i)
if i<=10:
a=.1*i
elif i>10 and i<20:
a=.1*10+.075*(i-10)
elif i>=20 and i<40:
a=.1*10+.075*10+.05*(i-20)
elif i>=40 and i<60:
a=.1*10+.075*10+.05*20+.03*(i-40)
elif i>=60 and i<100:
a=.1*10+.075*10+.05*20+.03*20+.015*(i-60)
else:
a=a=.1*10+.075*10+.05*20+.03*20+.015*40+.01*(i-100)
print(a)
標準答案:
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
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 的所有數字迴圈計算即可。
4.
'''
題目:輸入某年某月某日,判斷這一天是這一年的第幾天?
程式分析:以3月5日為例,應該先把前兩個月的加起來,
然後再加上5天即本年的第幾天,特殊情況,閏年且輸入月份大於2時需考慮多加一天
'''year=int(input('請輸入年份'))
month=int(input('請輸入月份'))
days=int(input('請輸入天數'))
tar=[31,28,31,30,31,30,31,31,30,31,30,31]
#定義乙個函式,判斷是否閏年
def isrun(year):
if year%4==0:
tar[1]+=1
isrun(year)
dd=sum(tar[:month-1])+days
print(dd)
標準答案
#!/usr/bin/python
# -*- coding: utf-8 -*-
year = int(raw_input('year:\n'))
month = int(raw_input('month:\n'))
day = int(raw_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
分析:用truple儲存月份累計天數,更加安全,但是計算量增大了不少。
5.
'''
題目:輸入三個整數x,y,z,請把這三個數由小到大輸出。
程式分析:我們想辦法把最小的數放到x上,先將x與y進行比較,如果x>y則將x與y的值進行交換,
然後再用x與z進行比較,如果x>z則將x與z的值進行交換,這樣能使x最小。
'''a=int(input('請輸入三個數,以回車鍵切換'))
b=int(input())
c=int(input())
if a>b:
c=bb=a
a=cif c>=b:
print(a,b,c)
elif c=a:
print(a,c,b)
else:
print(c,a,b)
標準答案
#!/usr/bin/python
# -*- coding: utf-8 -*-
l =
for i in range(3):
x = int(raw_input('integer:\n'))
l.sort()
print l
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)
'''def feb(n):
a=0b=1
print(a)
print(b)
for i in range(n-2):
c=a+b
a=bb=c
print(c)
feb(10)
7.
題目:將乙個列表的資料複製到另乙個列表中。
程式分析:使用列表[:]。
程式源**:
#!/usr/bin/python
# -*- coding: utf-8 -*-
a= [1
, 2, 3
] b=
a[:]
printb
8.
菜鳥教程 Python 100例
本部落格列出具體題目及其 github位址 1,題目 有四個數字 1 2 3 4,能組成多少個互不相同且無重複數字的三位數?各是多少?2,題目 企業發放的獎金根據利潤提成。利潤 i 低於或等於10萬元時,獎金可提10 利潤高於10萬元,低於20萬元時,低於10萬元的部分按10 提成,高於10萬元的部...
菜鳥教程Python100例 筆記
練習例項74 元組強制轉為list列表 練習例項76 函式名做引數傳遞 usr bin python print hello,world a 123 b 456 stra abc strb def strc a,b,c strd d e f stre abc def ghi strf gkl mno...
爬取菜鳥教程Python100例
爬取解析菜鳥教程python100例頁面,得到所有例子的題目 程式分析和 並存入txt檔案。coding utf8 import requests from bs4 import beautifulsoup 1 獲取鏈結,解析鏈結 url headers 從自己的瀏覽器獲得,requests請求時模...