菜鳥教程python 100練習1(1 20)

2021-08-18 02:06:55 字數 4315 閱讀 7356

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請求時模...