最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python簡(jiǎn)單實(shí)例訓(xùn)練(21~30)

 更新時(shí)間:2017年11月15日 23:14:39   作者:MTbaby  
上篇文章給大家介紹了python簡(jiǎn)單實(shí)例訓(xùn)練的1-10,這里繼續(xù)為大家介紹python的一些用法,希望大家每個(gè)例子都打出來測(cè)試一下

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

21.題目:將一個(gè)正整數(shù)分解質(zhì)因數(shù)。例如:輸入90,打印出90=2*3*3*5。

程序分析:對(duì)n進(jìn)行分解質(zhì)因數(shù),應(yīng)先找到一個(gè)最小的質(zhì)數(shù)k,然后按下述步驟完成:

(1)如果這個(gè)質(zhì)數(shù)恰等于n,則說明分解質(zhì)因數(shù)的過程已經(jīng)結(jié)束,打印出即可。

(2)如果n!=k,但n能被k整除,則應(yīng)打印出k的值,并用n除以k的商,作為新的正整數(shù)你n,重復(fù)執(zhí)行第一步。

(3)如果n不能被k整除,則用k+1作為k的值,重復(fù)執(zhí)行第一步。

注意:要知道 format 這個(gè)函數(shù),其實(shí)就是格式化,與 print 差不多,具體可參考http://m.fzitv.net/article/63672.htm

方法一:只用循環(huán)

# -*- coding: UTF-8 -*-
while True:
 n = input("請(qǐng)輸入一個(gè)數(shù):")
 #這里有逗號(hào)是為了保證它輸出后不自動(dòng)換行,下同
 print '{} = '.format(n), 
 #判斷你輸入的是不是正確格式
 if not isinstance(n, int) or n <= 0 :
  print '請(qǐng)輸入一個(gè)正確的數(shù)字 !' 
 #如果你是輸入的是 1,那只輸出 1
 if n in [1] : 
  print '{}'.format(n) 
 while n >= 2:
  for i in range(2,n + 1):
   if n % i == 0:
    n /= i  #n 等于 n/i
    if n == 1: 
     print i ,
    else :  # index 一定是素?cái)?shù)
     print '{} *'.format(i),
    break
 print  #換行咯

方法二:定義函數(shù)

# -*- coding: UTF-8 -*-
def reduceNum(n):
 print '{} = '.format(n),
 if not isinstance(n, int) or n <= 0 :
  print '請(qǐng)輸入一個(gè)正確的數(shù)字 !'
  exit(0)
 elif n in [1] :
  print '{}'.format(n)
 while n not in [1] : # 循環(huán)保證遞歸
  for i in range(2, n + 1) :
   if n % i == 0:
    n /= i # n 等于 n/i
    if n == 1: 
     print i 
    else : # i 一定是素?cái)?shù)
     print '{} *'.format(i),
    break

reduceNum(100)
reduceNum(9)

輸出:
100 = 2 * 2 * 5 * 5
9 = 3 * 3

方法三:用列表 append 函數(shù),這里只是用列表的形式輸出了所有x的因子

# -*- coding: UTF-8 -*-
while True:
 x = input("pls input a number:")
 ret = []
 while x > 1:
  for v in range(2,x + 1):
   if x % v == 0:
    ret.append(v)
    x /= v
    break
 print ret

 輸出:
  pls input a number:9
  [3, 3]

說明:其實(shí)兩種方法大同小異,沒什么區(qū)別。

22.題目:求s=a+aa+aaa+aaaa+aa…a的值,其中a是一個(gè)數(shù)字。例如2+22+222+2222+22222(此時(shí)共有5個(gè)數(shù)相加),幾個(gè)數(shù)相加有鍵盤控制。

程序分析:關(guān)鍵是計(jì)算出每一項(xiàng)

# -*- coding: UTF-8 -*-
Tn = 0
Sn = [] #用來存儲(chǔ)數(shù)字個(gè)數(shù)
n = int(raw_input('輸入你想要相加的數(shù)字個(gè)數(shù) n = :')) #控制你要相加的次數(shù)
a = int(raw_input('輸入數(shù)字 a = :')) #真正要加的數(shù)字
for count in range(n):
 Tn = Tn + a 
 a = a * 10
 Sn.append(Tn)#每加一個(gè)數(shù)就放在Sn列表中
 print Tn

 #lambda這個(gè)函數(shù)比較強(qiáng)大,具體用法可以看下資料
Sn = reduce(lambda x,y : x + y,Sn)
print Sn

輸入你想要相加的數(shù)字個(gè)數(shù) n = :5
輸入數(shù)字 a = :6
6
66
666
6666
66666
74070

用到的函數(shù):

1.python中的reduce內(nèi)建函數(shù)是一個(gè)二元操作函數(shù),他用來將一個(gè)數(shù)據(jù)集合(鏈表,元組等)中的所有數(shù)據(jù)進(jìn)行下列操作:用傳給reduce中的函數(shù) func()(必須是一個(gè)二元操作函數(shù))先對(duì)集合中的第1,2個(gè)數(shù)據(jù)進(jìn)行操作,得到的結(jié)果再與第三個(gè)數(shù)據(jù)用func()函數(shù)運(yùn)算,最后得到一個(gè)結(jié)果。

具體可參考http://m.fzitv.net/article/128310.htm

2.lambda函數(shù),看連接http://m.fzitv.net/article/128311.htm

23.題目:一個(gè)數(shù)如果恰好等于它的因子之和,這個(gè)數(shù)就稱為”完數(shù)”。例如6=1+2+3.編程找出1000以內(nèi)的所有完數(shù)。

程序分析:請(qǐng)參照程序Python 練習(xí)實(shí)例14。只要在后面加上判斷條件就可以了,注意,要在輸出因子的時(shí)候加上1,注意看題,1是任何數(shù)的因子,所以不能漏掉

# -*- coding: UTF-8 -*-
import random
import time

while True:
 x = random.randint(1,1000)
 #因?yàn)楹竺媲筚|(zhì)數(shù)要修改x的值,所以先把x保存起來備用
 s = x 
 factors = [1] #1是任何數(shù)的因子
 while x > 1:
  #上限取值可以是x,即因子也可以是x本身,這個(gè)大家都懂得
  for v in range(2,x + 1):
   if x % v == 0:
    factors.append(v) 
    #找到了當(dāng)前的最小因子,重置繼續(xù)找下一符合條件的最小因子
    x /= v
    #由于break是跳出當(dāng)前的循環(huán),所以這里的break是跳出for循環(huán)
    break
 print "所有因子是 %s,所以"%(factors),
 if sum(factors) == s: #這里就是判斷函數(shù)了
  print "%d 是完數(shù)"%(s)
 else:
  print "%d 不是完數(shù)"%(s)
time.sleep(1) #為防止程序卡頓,我睡一秒輸出一個(gè)

輸出:
所有因子是 [1, 2, 2, 2, 31],所以: 248 不是完數(shù)
所有因子是 [1, 2, 2, 2, 73],所以: 584 不是完數(shù)
所有因子是 [1, 823],所以: 823 不是完數(shù)
所有因子是 [1, 281],所以: 281 不是完數(shù)
所有因子是 [1, 467],所以: 467 不是完數(shù)
所有因子是 [1, 2, 359],所以: 718 不是完數(shù)
所有因子是 [1, 2, 7, 47],所以: 658 不是完數(shù)
所有因子是 [1, 751],所以: 751 不是完數(shù)
所有因子是 [1, 3, 71],所以: 213 不是完數(shù)

24.題目:兩個(gè)乒乓球隊(duì)進(jìn)行比賽,各出三人。甲隊(duì)為a,b,c三人,乙隊(duì)為x,y,z三人。已抽簽決定比賽名單。有人向隊(duì)員打聽比賽的名單。a說他不和x比,c說他不和x,z比,請(qǐng)編程序找出三隊(duì)賽手的名單。

程序分析:用數(shù)學(xué)的角度很好理解是吧,但是這里要把字母轉(zhuǎn)化成ASCII碼來做哦!

# -*- coding: UTF-8 -*-

for i in range(ord('x'),ord('z') + 1):
 for j in range(ord('x'),ord('z') + 1):
  if i != j:
   for k in range(ord('x'),ord('z') + 1):
    if (i != k) and (j != k):
     if (i != ord('x')) and (k != ord('x')) and (k != ord('z')):
      print 'order is a -- %s\t b -- %s\tc--%s' % (chr(i),chr(j),chr(k))

25.題目:有一分?jǐn)?shù)序列:2/1,3/2,5/3,8/5,13/8,21/13…求出這個(gè)數(shù)列的前20項(xiàng)之和。

程序分析:請(qǐng)抓住分子與分母的變化規(guī)律。可以看出,分母是斐波那契數(shù)列哦~

方法一:第一個(gè)分?jǐn)?shù)的分子分母之和是第二個(gè)數(shù)的分子。

# -*- coding: UTF-8 -*-

a = 2.0  #第一個(gè)數(shù)的分母
b = 1.0  #第一個(gè)數(shù)的分子
s = 0   #前20項(xiàng)的和
for n in range(1,21):
 s += a / b
 t = a  #先把分子保存到t
 a = a + b #分子是前一個(gè)分?jǐn)?shù)的分子分母之和
 b = t  #分子分母交換
print s

方法二:

# -*- coding: UTF-8 -*-

a = 2.0
b = 1.0
s = 0.0
for n in range(1,21):
 s += a / b
 b,a = a , a + b
print s

方法三:

# -*- coding: UTF-8 -*-

a = 2.0
b = 1.0
l = []
for n in range(1,21):
 b,a = a,a + b
 l.append(a / b)
print reduce(lambda x,y: x + y,l)

26.題目:求1+2!+3!+…+20!的和。

程序分析:此程序只是把累加變成了累乘。想一想階乘怎么算的?n!=n×(n-1)×(n-2)×(n-3)×…×1,所以只需要一個(gè)遍歷,把n以內(nèi)的數(shù)字相乘后,再加起來即可。

方法一:

 # -*- coding: UTF-8 -*-

n = 0
s = 0
t = 1
for n in range(1,21):
 t *= n #這里t就是20以內(nèi)每個(gè)數(shù)的階乘
 s += t #把每次得到的階乘值加到s
print '1! + 2! + 3! + ... + 20! = %d' % s

方法三:這里用定義函數(shù)的方法,使用sum函數(shù)。

# -*- coding: UTF-8 -*-

s = 0
l = range(1,21)
def op(x):
 r = 1
 for i in range(1,x + 1):
  r *= i
 return r

s = sum(map(op,l)) 
print '1! + 2! + 3! + ... + 20! = %d' % s

輸出:1! + 2! + 3! + ... + 20! = 2561327494111820313

這里補(bǔ)充一下map()函數(shù)的用法:

很簡(jiǎn)單,第一個(gè)參數(shù)接收一個(gè)函數(shù)名,第二個(gè)參數(shù)接收一個(gè)可迭代對(duì)象

# -*- coding: UTF-8 -*-
ls = [1,2,3]
rs = map(str, ls)
#打印結(jié)果 ['1', '2', '3']

lt = [1, 2, 3, 4, 5, 6]
def add(num):
 return num + 1

rs = map(add, lt)
print rs 
#打印結(jié)果[2,3,4,5,6,7]

27.題目:利用遞歸方法求5!。

程序分析:遞歸公式:fn=fn_1*4!遞歸的方法就是自己調(diào)用自己。

# -*- coding: UTF-8 -*-
def jiecheng(n):
 if n <= 1:
  return 1
 else:
  return n * jiecheng(n-1)
print jiecheng(5)

輸出:120

28.題目:將所輸入的5個(gè)字符,以相反順序打印出來。

方法一:利用遞歸函數(shù)調(diào)用方式

# -*- coding: UTF-8 -*-

def output(s,l):
 if l==0:
  return
 print (s[l-1])
 output(s,l-1)

s = raw_input('Input a string:')
l = len(s)
output(s,l)

輸出:Input a string:1234
4
3
2
1

方法二:用reverse函數(shù)

# -*- coding: UTF-8 -*-
a = [1,2,3,4,5]
a.reverse()
print a

 或者:

# -*- coding: UTF-8 -*-
s = list(raw_input('Input a string:'))
s.reverse()
print s

28.題目:有5個(gè)人坐在一起,問第五個(gè)人多少歲?他說比第4個(gè)人大2歲。問第4個(gè)人歲數(shù),他說比第3個(gè)人大2歲。問第三個(gè)人,又說比第2人大兩歲。問第2個(gè)人,說比第一個(gè)人大兩歲。最后問第一個(gè)人,他說是10歲。請(qǐng)問第五個(gè)人多大?

程序分析:利用遞歸的方法,遞歸分為回推和遞推兩個(gè)階段。要想知道第五個(gè)人歲數(shù),需知道第四人的歲數(shù),依次類推,推到第一人(10歲),再往回推。

方法一:這個(gè)很簡(jiǎn)單吧,就是每次循環(huán)都加2,循環(huán)4次就好了??!

# -*- coding: UTF-8 -*-
x = 10
for i in range(1,5):
 x = x + 2
print x

方法二:定義函數(shù)的方法

# -*- coding: UTF-8 -*-
def age(n):
 if n == 1: 
  x = 10
 else: 
  x = age(n - 1) + 2
 return x
print age(5)

29.題目:一個(gè)5位數(shù),判斷它是不是回文數(shù)。即12321是回文數(shù),個(gè)位與萬位相同,十位與千位相同。

程序分析:將這個(gè)五位數(shù)從中間分開,根據(jù)對(duì)稱性去切,然后比較是否相等。

# -*- coding: UTF-8 -*-
a = int(raw_input("請(qǐng)輸入一個(gè)數(shù)字:"))
x = str(a)
flag = True

for i in range(len(x)/2):
 if x[i] != x[-i - 1]: #如果不相等,直接跳出循環(huán),直接判斷不是回文數(shù)
 flag = False
 break
if flag:
 print "%d 是一個(gè)回文數(shù)!" % a
else:
 print "%d 不是一個(gè)回文數(shù)!" % a

輸出:
請(qǐng)輸入一個(gè)數(shù)字:
15651
15651 是一個(gè)回文數(shù)!

30.題目:請(qǐng)輸入星期幾的第一個(gè)字母來判斷一下是星期幾,如果第一個(gè)字母一樣,則繼續(xù)判斷第二個(gè)字母。

程序分析:用情況語句比較好,如果第一個(gè)字母一樣,則判斷用情況語句或if語句判斷第二個(gè)字母。。哇,這個(gè)題應(yīng)該好簡(jiǎn)單啊~~先看一下星期的單詞都有哪些“Monday Tuesday Wednesday Thursday Friday Saturday Sunday”,所有只有“T”和“S”要判斷第二個(gè)字母。

# -*- coding: UTF-8 -*-

 letter = raw_input("please input:")
 #while letter != 'Y':
 if letter == 'S':
  print ('please input second letter:')
  letter = raw_input("please input:")
  if letter == 'a':
   print ('Saturday')
  elif letter == 'u':
   print ('Sunday')
  else:
   print ('data error')

 elif letter == 'F':
  print ('Friday')

 elif letter == 'M':
  print ('Monday')

 elif letter == 'T':
  print ('please input second letter')
  letter = raw_input("please input:")

  if letter == 'u':
   print ('Tuesday')
  elif letter == 'h':
   print ('Thursday')
  else:
   print ('data error')

 elif letter == 'W':
  print ('Wednesday')
 else:
  print ('data error')

這篇文章就介紹到這了,后面腳本之家小編將繼續(xù)為大家分享更多的關(guān)于python的一些實(shí)例資料。

相關(guān)文章

  • python sqlite的Row對(duì)象操作示例

    python sqlite的Row對(duì)象操作示例

    這篇文章主要介紹了python sqlite的Row對(duì)象操作,結(jié)合實(shí)例形式分析了Python使用sqlite的Row對(duì)象進(jìn)行數(shù)據(jù)的查詢操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2019-09-09
  • 用python統(tǒng)計(jì)代碼行的示例(包括空行和注釋)

    用python統(tǒng)計(jì)代碼行的示例(包括空行和注釋)

    今天小編就為大家分享一篇用python統(tǒng)計(jì)代碼行的示例(包括空行和注釋),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Python使用Scrapy保存控制臺(tái)信息到文本解析

    Python使用Scrapy保存控制臺(tái)信息到文本解析

    這篇文章主要介紹了Python使用Scrapy保存控制臺(tái)信息到文本解析,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2017-12-12
  • Python3讀取Excel數(shù)據(jù)存入MySQL的方法

    Python3讀取Excel數(shù)據(jù)存入MySQL的方法

    今天小編就為大家分享一篇Python3讀取Excel數(shù)據(jù)存入MySQL的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • 3種Python 實(shí)現(xiàn)酷炫進(jìn)度條的實(shí)用方法

    3種Python 實(shí)現(xiàn)酷炫進(jìn)度條的實(shí)用方法

    這篇文章主要介紹了3種Python 實(shí)現(xiàn)酷炫進(jìn)度條的實(shí)用方法,文章圍繞Python的相關(guān)資料展開對(duì)實(shí)現(xiàn)進(jìn)度條的介紹,需要的小伙伴可以參考一下
    2022-04-04
  • 使用PyQt實(shí)現(xiàn)簡(jiǎn)易文本編輯器

    使用PyQt實(shí)現(xiàn)簡(jiǎn)易文本編輯器

    這篇文章主要為大家詳細(xì)介紹了如何使用PyQt5框架構(gòu)建一個(gè)簡(jiǎn)單的文本編輯器,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-02-02
  • PyCharm2019.3永久激活破解詳細(xì)圖文教程,親測(cè)可用(不定期更新)

    PyCharm2019.3永久激活破解詳細(xì)圖文教程,親測(cè)可用(不定期更新)

    這篇文章主要介紹了PyCharm2019.3最新激活碼(注冊(cè)碼)破解永久版詳細(xì)圖文教程的相關(guān)資料,親測(cè)可用,需要的朋友可以參考下
    2020-10-10
  • pyqt5中動(dòng)畫的使用詳解

    pyqt5中動(dòng)畫的使用詳解

    這篇文章主要介紹了pyqt5中動(dòng)畫的使用詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • Python調(diào)用Google?Bard的圖文詳解

    Python調(diào)用Google?Bard的圖文詳解

    Google?Bard?是一種開源數(shù)據(jù)可視化和探索工具,可為?開發(fā)人員?提供支持,本文主要為大家介紹了Python調(diào)用Google?Bard的方法,需要的可以參考下
    2023-08-08
  • 基于Python預(yù)測(cè)一下世界杯最后贏家

    基于Python預(yù)測(cè)一下世界杯最后贏家

    四年一度的世界杯已經(jīng)開始了,對(duì)于不少熱愛足球運(yùn)動(dòng)的球迷來說,這可是十分難得的盛宴。今天小編就通過Python數(shù)據(jù)分析以及機(jī)器學(xué)習(xí)等方式來預(yù)測(cè)一下誰能獲得最后的冠軍,感興趣的可以了解一下
    2022-11-11

最新評(píng)論

龙海市| 长泰县| 仲巴县| 资源县| 尤溪县| 武胜县| 赣州市| 苗栗县| 东乌珠穆沁旗| 上思县| 全州县| 施秉县| 大埔县| 廊坊市| 通榆县| 焉耆| 志丹县| 云浮市| 宁河县| 留坝县| 栾川县| 手游| 瑞昌市| 肃南| 镇赉县| 南宁市| 潞西市| 松原市| 文登市| 襄樊市| 嵊泗县| 遂宁市| 汉沽区| 忻州市| 佛教| 东明县| 遂溪县| 汨罗市| 江陵县| 西平县| 木兰县|