国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Python > 正文

python下10個(gè)簡(jiǎn)單實(shí)例代碼

2020-01-04 16:22:14
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

注意:我用的python2.7,大家如果用Python3.0以上的版本,請(qǐng)記得在print()函數(shù)哦!如果因?yàn)榘姹締?wèn)題評(píng)論的,不做回復(fù)哦?。?!

1.題目:有1、2、3、4個(gè)數(shù)字,能組成多少個(gè)互不相同且無(wú)重復(fù)數(shù)字的三位數(shù)?都是多少?

程序分析:可填在百位、十位、個(gè)位的數(shù)字都是1、2、3、4。組成所有的排列后再去 掉不滿足條件的排列。
程序源代碼: 

# -*- coding: UTF-8 -*-for i in range(1,5): for j in range(1,5):  for k in range(1,5):   if (i != j) and (i != k) and (j != k):    print i,j,k

 2.題目:企業(yè)發(fā)放的獎(jiǎng)金根據(jù)利潤(rùn)提成。利潤(rùn)(I)低于或等于10萬(wàn)元時(shí),獎(jiǎng)金可提10%;利潤(rùn)高于10萬(wàn)元,低于20萬(wàn)元時(shí),低于10萬(wàn)元的部分按10%提成,高于10萬(wàn)元的部分,可可提成7.5%;20萬(wàn)到40萬(wàn)之間時(shí),高于20萬(wàn)元的部分,可提成5%;40萬(wàn)到60萬(wàn)之間時(shí)高于40萬(wàn)元的部分,可提成3%;60萬(wàn)到100萬(wàn)之間時(shí),高于60萬(wàn)元的部分,可提成1.5%,高于100萬(wàn)元時(shí),超過(guò)100萬(wàn)元的部分按1%提成,從鍵盤(pán)輸入當(dāng)月利潤(rùn)I,求應(yīng)發(fā)放獎(jiǎng)金總數(shù)?

程序分析:請(qǐng)利用數(shù)軸來(lái)分界,定位。注意定義時(shí)需把獎(jiǎng)金定義成長(zhǎng)整型。

方法一: 這種方法是我用數(shù)學(xué)的原理做的,就是把每種情況都列出一個(gè)表達(dá)式,最后簡(jiǎn)化表達(dá)式,然后直接根據(jù)輸入的利潤(rùn) I 來(lái)計(jì)算表達(dá)式的值,也就是獎(jiǎng)金總數(shù)。就是把獎(jiǎng)金疊加起來(lái),具體算法還是要在紙上計(jì)算,這種方法適用于初學(xué)編碼的人,比如我,用最笨的數(shù)學(xué)思路解決問(wèn)題,就是說(shuō)在數(shù)學(xué)上你是按照什么方法做的,然后把他轉(zhuǎn)化成代碼,就比較容易理解了。

# -*- coding: UTF-8 -*-while True: I = input("pls input the lirun:") if I <= 10:  a = I * 0.01  print a elif I <= 20 and I > 10:  b =0.25 + I * 0.075  print b elif I <= 40 and I > 20:  c = 0.75 + I * 0.05  print c elif I <= 60 and I > 40:  d = 0.95 + I * 0.03  print d elif I <= 60 and I > 100:  e = 2 + I * 0.015  print e else:  f = 2.95 + I * 0.01  print f

方法二:這種方法就比較難懂了,適合于基礎(chǔ)好的人。

# -*- coding: UTF-8 -*-I = int(raw_input('凈利潤(rùn):'))#這應(yīng)該就是各個(gè)分界值了,把它們放在列表里方便訪問(wèn)arr = [1000000,600000,400000,200000,100000,0] #這是各個(gè)分界值所對(duì)應(yīng)的獎(jiǎng)金比例值rat = [0.01,0.015,0.03,0.05,0.075,0.1]  #這是總獎(jiǎng)金的初始值r = 0   #有6個(gè)分界值當(dāng)然要循環(huán)6次     for idx in range(0,6):   if I > arr[idx]:  r = r + (I - arr[idx]) * rat[idx]   print (I - arr[idx]) * rat[idx]  I = arr[idx]print r

3.題目:一個(gè)整數(shù),它加上100和加上268后都是一個(gè)完全平方數(shù),請(qǐng)問(wèn)該數(shù)是多少?

程序分析:在10000以內(nèi)判斷,將該數(shù)加上100后再開(kāi)方,加上268后再開(kāi)方,如果開(kāi)方后的結(jié)果滿足如下條件,即是結(jié)果。這里要用到數(shù)學(xué)中的開(kāi)方函數(shù) sqrt。

# -*- coding: UTF-8 -*-import mathfor i in range(10000): x = int(math.sqrt(i + 100)) y = int(math.sqrt(i + 268)) if (x * x == i + 100) and (y * y == i + 268):  print i

4.題目:輸入某年某月某日,判斷這一天是這一年的第幾天?

程序分析:以3月5日為例,應(yīng)該先把前兩個(gè)月的加起來(lái),然后再加上5天即本年的第幾天,特殊情況,閏年且輸入月份大于3時(shí)需考慮多加一天。

思路:先把輸入的日期進(jìn)行分割,分割成年,月,日三個(gè)數(shù)字,再按照實(shí)際情況依次編寫(xiě)。

# -*- coding: UTF-8 -*-x = raw_input("請(qǐng)輸入日期,比如20160506:")year = int(x[:4])month = int(x[4:6])day = int(x[6:8])month_day = [31,28,31,30,31,30,31,31,30,31,30,31]data = sum(month_day[:(month-1)],day)if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0): if month > 2:  data = data + 1print "it is the %dth day"% (data)

5.題目:輸入三個(gè)整數(shù)x,y,z,請(qǐng)把這三個(gè)數(shù)由小到大輸出。

程序分析一:我們想辦法把最小的數(shù)放到x上,先將x與y進(jìn)行比較,如果x>y則將x與y的值進(jìn)行交換,然后再用x與z進(jìn)行比較,如果x>z則將x與z的值進(jìn)行交換,這樣能使x最小。

# -*- coding: UTF-8 -*-l = []for i in range(3): x = int(raw_input('integer:/n')) l.append(x) #這里用append()函數(shù),意思是追加元素 l.sort()print l

程序分析二:用一個(gè)變量來(lái)存儲(chǔ)最小值,三個(gè)數(shù)進(jìn)行比較后兩兩交換,這是最常用的思路。

# -*- coding: UTF-8 -*-x = input("input a num:")y = input("input a num:")z = input("input a num:")temp = 0if x < y: temp = x x = y y = tempif x < z: temp = x x = z z = tempif y < z: temp = y y = z z = tempprint z,y,x #由于上面是由小到大來(lái)比較和交換的,所以這里需要逆序輸出

程序分析三:用函數(shù)sort進(jìn)行排序,sort函數(shù)可以把數(shù)字按照從小到大的順序進(jìn)行重新排列。

# -*- coding: UTF-8 -*-x = input("input a num:")y = input("input a num:")z = input("input a num:")y = [x,y,z] #注意,這里只能是列表,不能是元組,因?yàn)樵M是不可改變的,你懂得??!y.sort()print y

6.題目:將一個(gè)列表的數(shù)據(jù)復(fù)制到另一個(gè)列表中。

注意: 有些同學(xué)想到使用append()函數(shù),這里要特別注意,append()函數(shù)是每次追加一個(gè)元素,如果使用append()函數(shù),會(huì)把需要追加的那個(gè)列表當(dāng)成一個(gè)數(shù)據(jù)來(lái)使用,不信你看下面這個(gè):

方法一:

# -*- coding: UTF-8 -*-l1 = [1,2,3]l2 = [4,5,6]l1.append(l2)print l1輸出:[1, 2, 3, [4, 5, 6]]

方法二:使用“+”來(lái)連接兩個(gè)列表,即就是把l2列表的數(shù)據(jù)復(fù)制到l1列表中。

# -*- coding: UTF-8 -*-l1 = [1,2,3]l2 = [4,5,6]print l1 + l2輸出:[1, 2, 3, 4, 5, 6]

方法三:使用列表[:]。切片的方法,大家都知道如果不指定start和end,則表示輸出該列表的所以元素。

# -*- coding: UTF-8 -*-a = [1, 2, 3] #把列表a復(fù)制到列表bb = a[:]print b

7.題目:輸出9*9乘法口訣表。

程序分析:分行與列考慮,共9行9列,i控制行,j控制列。如果不要求格式的話,就簡(jiǎn)單了,可以任意格式輸出,如下:

# -*- coding: UTF-8 -*-for i in range(1,10): for j in range(1,10):  x = i * j  print "%d * %d = %d" % (i,j,x)

如果需要考慮輸出格式,我們后面的文章會(huì)講到,嘿嘿。

8.題目:暫停一秒輸出。

程序分析:暫停時(shí)間的函數(shù)為 time.sleep(),此處可隨意舉例,列表,元組,字典均可。

# -*- coding: UTF-8 -*-import timed = {"a":1,"b":2}for i in d: print i time.sleep(1) #暫停一秒輸出

9.題目:斐波那契數(shù)列。

程序分析:斐波那契數(shù)列(Fibonacci sequence),又稱黃金分割數(shù)列,指的是這樣一個(gè)數(shù)列:0、1、1、2、3、5、8、13、21、34、……。
在數(shù)學(xué)上,費(fèi)波那契數(shù)列是以遞歸的方法來(lái)定義:

n = 1 時(shí) f(1) = 1n = 2 時(shí) f(2) = 1n = 3 時(shí) f(3) = f(3-1) + f(3-2)    = f(2) + f(1)    = 1 + 1    = 2n = 4 時(shí) f(4) = f(4-1) + f(4-2)    = f(3) + f(2)    = 2 + 1    = 3n = 5 時(shí) f(5) = f(5-1) + f(5-2)    = f(4) + f(3)    = 3 + 2    = 5.....   ...所以,當(dāng) n >= 2 時(shí),表達(dá)式為f(n) = f(n-1) + f(n-2)

方法一:

# -*- coding: UTF-8 -*-def fib(n): a,b = 1,1 for i in range(n-1):  a,b = b,a+b return a# 輸出了第10個(gè)斐波那契數(shù)列 print fib(10)

方法二:

# -*- coding: UTF-8 -*-# 使用遞歸def fib(n): if n==1 or n==2:  return 1 return fib(n-1)+fib(n-2)# 輸出了第10個(gè)斐波那契數(shù)列print fib(10)

方法三:如果你需要輸出指定個(gè)數(shù)的斐波那契數(shù)列,可以使用以下代碼:

# -*- coding: UTF-8 -*-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 個(gè)斐波那契數(shù)列print fib(10)

10.題目:古典問(wèn)題:有一對(duì)兔子,從出生后第3個(gè)月起每個(gè)月都生一對(duì)兔子,小兔子長(zhǎng)到第三個(gè)月后每個(gè)月又生一對(duì)兔子,假如兔子都不死,問(wèn)每個(gè)月的兔子總數(shù)為多少?

程序分析:經(jīng)過(guò)計(jì)算和尋找規(guī)律得到,兔子的規(guī)律為數(shù)列1,1,2,3,5,8,13,21….典型的斐波那契數(shù)列,這就是為什么我要把斐波那契數(shù)列數(shù)列放在第九題的原因,那么根據(jù)上一題的方法三,我們就非常輕松的求得每月兔子的數(shù)量。

此外,還有一種比較漂亮的輸出:

# -*- coding: UTF-8 -*-f1 = 1f2 = 1for i in range(1,21): print '%12ld %12ld' % (f1,f2), 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


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到python教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 蒙自县| 锡林郭勒盟| 枣强县| 盘锦市| 蓬莱市| 南丹县| 九龙城区| 门源| 新蔡县| 肇源县| 长垣县| 文水县| 慈利县| 会东县| 庄浪县| 博湖县| 鸡泽县| 朔州市| 滦南县| 东阳市| 建昌县| 阳曲县| 额敏县| 梧州市| 安阳市| 阜阳市| 彰化市| 霍山县| 乌拉特中旗| 洛扎县| 静宁县| 商南县| 城口县| 克东县| 桃园县| 平果县| 海晏县| 台江县| 桦川县| 晋江市| 滨州市|