26道大題python實戰練習-習題


Python數學計算,編程練習題實例一:

簡述:這里有四個數字,分別是:1、2、3、4

提問:能組成多少個互不相同且無重復數字的三位數?各是多少?

Python解題思路分析:可填在百位、十位、個位的數字都是1、2、3、4。組成所有的排列后再去 掉不滿足條件的排列。

Python數學計算,編程練習題和答案實例一,源代碼如下:

#!/usr/bin/python
# -*- coding: UTF-8 -*- 

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)
View Code

 

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,求應發放獎金總數? 玩蛇網Python解題思路分析:請利用數軸來分界及定位。並要注意定義時需要把獎金定義成長整型的數據類型。

Python數軸、長整型,編程練習題和答案實例二,源碼如下:

# !/usr/bin/python
# -*- coding: UTF-8 -*-

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)
View Code

 

 

Python完全平方數,編程練習題實例三

簡述:一個整數,它加上100和加上268后都是一個完全平方數

提問:請問該數是多少? Python解題思路分析:在10000以內判斷,將該數加上100后再開方,加上268后再開方,如果開方后的結果滿足如下條件,即是結果。 Python完全平方數,python解題源代碼如下:

# !/usr/bin/python
# -*- coding: UTF-8 -*-

import math
for 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)
View Code

 

Python日期計算,編程練習題實例四

簡述:要求輸入某年某月某日

提問:求判斷輸入日期是當年中的第幾天? Python解題思路分析: 我們就以3月5日這一天為例。首先把前兩個月的加起來,然后再加上5天即本年的第幾天。這里有一種特殊的情況,就是閏月,遇到這種情況且輸入月份大於2時需考慮多加一天。如果不是很明白,可以看下邊的python源碼。

Python日期計算,最新編程練習題實例四,解題源代碼如下:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

year = int(input('year:\n'))
month = int(input('month:\n')) 
day = int(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 # www.iplaypy.com

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) 
View Code

 

Python整數順序排列,編程練習題實例五

整數順序排列問題簡述:任意三個整數類型,x、y、z

提問:要求把這三個數,按照由小到大的順序輸出 Python解題思路分析:

首先,要想方法把最小的數放到x位上,之后將x與y進行比較; 如果x>y的話,就將x與y的值進行交換; 然后再用x與z進行比較,如果x>z則將x與z的值進行交換,這樣能使x最小。 Python整數順序排列,python解題源代碼如下:

# !/usr/bin/python
# -*- coding: UTF-8 -*-

l = []
for i in range(3):
    x = int(input('integer:\n'))
    l.append(x)
l.sort()
print(l)
View Code

 

Python斐波那契數列應用,編程練習題實例六

斐波那契數列(Fibonacci sequence),又稱黃金分割數列、因數學家列昂納多·斐波那契以兔子繁殖為例子而引入,故又稱為“兔子數列”,指的是這樣一個數列: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)
 

要求一:輸出第10個斐波那契數列

方法一:

def fib(n):
    a,b = 1,1
 for i in range(n-1):
        a,b = b,a+b
 return a

 方法二:使用遞歸方法來解救這個問題。

def fib(n):
 if n==1 or n==2:
 return 1
 return fib(n-1)+fib(n-2)
結果為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
View Code

 

Python列表數據復制,編程練習題實例七

提問:將一個列表的數據復制到另一個列表中。

請仔細看要求,這里要求的是復制數據到一個新的列表中。 Python列表數據復制,Python解題思路分析:可以了解下[ :]的含義 python解題源代碼如下:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

x = [1, 2, 3]
y = x[:]
print(y)
View Code

 

Python乘法口訣計算,編程練習題實例八

簡述:9*9乘法口訣表。

要求:逐項單位輸出。例如1的一行,2的一行,以此類推。 Python解題思路分析: 注意分行與列考慮。這里共有9行和9列。x控制行,y控制列。

Python解題源代碼如下:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
#1.長方形完整格式
#完整格式輸出九九乘法表
for i in range(1,10):
 for j in range(1,10):
 print("%d*%d=%2d" % (i,j,i*j),end=" ")
 print("")
#2.左上三角形

#左上三角格式輸出九九乘法表
for i in range(1,10):
 for j in range(i,10):
 print("%d*%d=%2d" % (i,j,i*j),end=" ")
 print("")

#3.右上三角形

#右上三角格式輸出九九乘法表
for i in range(1,10):
 for k in range(1,i):
 print (end="       ")
 for j in range(i,10):
 print("%d*%d=%2d" % (i,j,i*j),end=" ")
 print("")

#4.左下三角形

#左下三角格式輸出九九乘法表
for i in range(1,10):
 for j in range(1,i+1):
 print("%d*%d=%2d" % (i,j,i*j),end=" ")
 print (" ")

# 5.右下三角形

#右下三角格式輸出九九乘法表
for i in range(1,10):
 for k in range(1,10-i):
 print(end="       ")
 for j in range(1,i+1):
        product=i*j
 print("%d*%d=%2d" % (i,j,product),end=" ")
 print (" ")
View Code

 

Python time.sleep方法,編程練習題實例九

讓python程序暫停預定時間后再運行,需要用到time.sleep方法。

Python編程練習題和答案實例九,time.sleep方法就來一道這樣的練習題吧。

要求:隨便寫一段代碼,測試time.sleep()方法效果學習。

python解題源代碼如下:

# !/usr/bin/python
# -*- coding: UTF-8 -*-

import time

myD = {1: 'a', 2: 'b'}
for key, value in dict.items(myD):
 print(key, value)
    time.sleep(1)
View Code

 

Python時間格式化,編程練習題實例十

簡述:暫停一秒time.sleep()輸出;並格式化當前時間。

Python解題思路分析:可以先預習下time.strftime及time.localtime的作用和方法。python解題源代碼如下:

# !/usr/bin/python
# -*- coding: UTF-8 -*-
import time

print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())))

# 暫停一秒
time.sleep(1)

print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())))
View Code

 

Python兔子生兔子算法,編程練習題實例十一

簡述:話說有一對可愛的兔子,出生后的第三個月開始,每一月都會生一對小兔子。當小兔子長到第三個月后,也會每個月再生一對小小兔子.

問題:假設條件,兔子都不死的情況下,問每個月的兔子總數為多少?

Python解題思路分析:兔子的規律為數列1,1,2,3,5,8,13,21....,好似斐那波契數列的感覺哦

Python兔子生兔子算法,python解題源代碼如下:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
a1 = 1
b2 = 1
for i in range(1,21):
 print('%12ld %12ld' % (a1,b2),)
 if (i % 3) == 0:
 print(" ")
    a1 = a1 + b2
    b2 = a1 + b2
View Code

 

 

Python素數計算輸出,編程練習題實例十二

簡述:區間范圍101-200

要求:判斷這個區間內有多少個素數,並逐一輸出。

Python解題思路分析:首先,判斷這個數是否是素數,方法:用一個數分別去除2到sqrt(這個數); 其結果,能被整除,則表明此數不是素數,反之是素數。

# !/usr/bin/python
# -*- coding: UTF-8 -*-

h = 0
leap = 1
from math import sqrt
from sys import stdout

for m in range(101, 201):
    k = int(sqrt(m + 1))
 for i in range(2, k + 1):
 if m % i == 0:
            leap = 0
 break
 if leap == 1:
 print("%-4d" % m)
        h += 1
 if h % 10 == 0:
 print("")
    leap = 1
print('The total is %d' % h)
View Code

 

Python水仙花數for循環應用,編程練習題實例十三

 

什么是水仙花數?百度一下:水仙花數是指一個 n 位正整數 ( n≥3 ),它的每個位上的數字的 n 次冪之和等於它本身。(例如:1^3 + 5^3+ 3^3 = 153)。

要求:打印輸出所有的"水仙花數"。

Python解題思路分析: 可以利用for循環控制流語句來完成操作。從100-999個數,每個數分解出個位、十位和百位。

python解題源代碼如下:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import math

for i in range(100, 1000):
    x = math.floor(i / 100) # 獲得百位數
    y = math.floor((i - x * 100) / 10) # 獲得十位數
    z = i - math.floor(i / 10) * 10 # 獲得個位數
 if i == x ** 3 + y ** 3 + z ** 3:
 print(i, end=', ')
View Code

 

Python分解質因數,編程練習題實例十四

什么是分解質因數?

我們來百度一下:把一個合數分解成若干個質因數的乘積的形式,即求質因數的過程叫做分解質因數。

要求:將一個正整數分解質因數;例如您輸入90,分解打印90=233*5。 Python解題思路分析:這道題需要分三部分來分解,具體分解說明如下。

1、首先當這個質數恰等於n的情況下,則說明分解質因數的過程已經結束,打印出即可。

2、如果遇到n<>k,但n能被k整除的情況,則應打印出k的值。同時用n除以k的商,作為新的正整數你n,之后再重復執行第一步的操作。

3、如果n不能被k整除時,那么用k+1作為k的值,再來重復執行第一步的操作系統。 數學不靈光的童鞋,真是很難解哦。 源代碼如下:

# !/usr/bin/python
# -*- coding: UTF-8 -*-

n = num = int(input('請輸入一個數字:')) # 用num保留初始值
f = [] # 存放質因數的列表

for j in range(int(num / 2) + 1): # 判斷次數僅需該數字的一半多1次
 for i in range(2, n):
        t = n % i  # i不能是n本身
 if t == 0: # 若能整除
            f.append(i) # 則表示i是質因數
            n = n // i  # 除以質因數后的n重新進入判斷,注意應用兩個除號,使n保持整數
 break # 找到1個質因數后馬上break,防止非質數卻可以整除的數字進入質因數列表

if len(f) == 0: # 若一個質因數也沒有
 print('該數字沒有任何質因數。')
else: # 若至少有一個質因數
    f.append(n) # 此時n已被某個質因數整除過,最后一個n也是其中一個質因數
    f.sort() # 排下序
 print('%d=%d' % (num, f[0]), end='')
 for i in range(1, len(f)):
 print('*%d' % f[i], end='')
View Code

 

Python條件運算符,編程練習題實例十五

要求:獲取輸入的內容,並利用條件運算符的嵌套方式來完成這道題。 學習成績>=90分的同學用A表示,60-89分之間的用B表示,60分以下的用C表示。

Python解題思路分析:(a>b) a:b這是條件運算符的基本例子。

#!/usr/bin/python
# -*- coding: UTF-8 -*-

score = int(input('input score:\n'))
if score >= 90:
    grade = 'A'
elif score >= 60:
    grade = 'B'
else:
    grade = 'C'

print('%d belongs to %s' % (score, grade))
View Code

 

Python日期格式應用,編程練習題實例十六

關於python日期格式的應用練習。用python方法如何輸出指定格式形式的日期?

這里你會需要用到import方法導入datetime模塊。datatime模塊重新封裝了time模塊,提供更多接口,提供的類有:date,time,datetime,timedelta,tzinfo datetime.date(year, month, day) date.max、date.min: date對象所能表示的最大、最小日期; date.resolution: date對象表示日期的最小單位(天)。 date.today(): 返回一個表示當前本地日期的date對象; date.fromtimestamp(timestamp):

根據給定的時間戮,返回一個date對象; 源代碼如下:

#!/usr/bin/python
# -*- coding: UTF-8 -*-


import datetime

if __name__ == '__main__':
 # 輸出今日日期,格式為 dd/mm/yyyy。更多選項可以查看 strftime() 方法
 print(datetime.date.today().strftime('%d/%m/%Y'))

 # 創建日期對象
    miyazakiBirthDate = datetime.date(1941, 1, 5)

 print(miyazakiBirthDate.strftime('%d/%m/%Y'))

 # 日期算術運算
    miyazakiBirthNextDay = miyazakiBirthDate + datetime.timedelta(days=1)

 print(miyazakiBirthNextDay.strftime('%d/%m/%Y'))

 # 日期替換
    miyazakiFirstBirthday = miyazakiBirthDate.replace(year=miyazakiBirthDate.year + 1)

 print(miyazakiFirstBirthday.strftime('%d/%m/%Y'))
View Code

 

Python辨別字符類型,編程練習題實例十七

關於用Python方法辨別數據類型可以用python type()方法,那么想要查看一串字符中每一項的類型,並逐一輸出要怎么來處理呢?下面我們就來做這個示例習題吧。

要求:輸入一行字符,分別統計出其中英文字母、空格、數字和其它字符的個數。

Python解題思路分析: 利用while語句,條件為輸入的字符不為'\n'。 python解題源代碼如下:

# !/usr/bin/python
# -*- coding: UTF-8 -*-

import string

s = input('input a string:\n')
letters = 0
space = 0
digit = 0
others = 0
for c in s:
 if c.isalpha():
        letters += 1
 elif c.isspace():
        space += 1
 elif c.isdigit():
        digit += 1
 else:
        others += 1
print('char = %d,space = %d,digit = %d,others = %d' % (letters, space, digit, others))
View Code

 

Python簡單數學計算,編程練習題實例十八

問題描述: 求這樣的一組數據和,s=a+aa+aaa+aaaa+aa...a的值,其中a是一個數字; 例如:2+22+222+2222+22222(此時共有5個數相加),這里具體是由幾個數相加,由鍵盤控制。

Python解題思路分析:關鍵是計算出每一項的值。 python解題源代碼如下:

# !/usr/bin/python
# -*- coding: UTF-8 -*-

a = int(input('請輸入數字 a:'))
count = int(input('請輸入幾個數相加:'))

res = 0 # 初始化最終求解
for i in range(1, count + 1): # 循環次數與輸入的值一樣,但從1開始循環
    t = 0 # 臨時用的變量
 for j in range(i):
        t = t + 10 ** j  # 先計算 10**0 + 10**1 + ... + 10**j
    res = res + (a * t) # 再計算 a * t
print(res)
View Code

 

Python完數計算,編程練習題實例十九

什么是完數? 完全數,又被稱作完美數或完備數,是一些特殊的自然數。 它所有的真因子(即除了自身以外的約數)的和(即因子函數),恰好等於它本身。如果一個數恰好等於它的因子之和,則稱該數為“完全數”。 以上,是我們的大百度為大家提供的關於完數的解釋。接下來,就來開始我們的練習吧。

要求:用python方法找出1000以內的所有完數,並輸出。 Python解題思路分析:

Python解題源代碼如下:

# !/usr/bin/python
# -*- coding: UTF-8 -*-

from sys import stdout

for j in range(2, 1001):
    k = []
    n = -1
    s = j
 for i in range(1, j):
 if j % i == 0:
            n += 1
            s -= i
            k.append(i)

 if s == 0:
 print(j)
 for i in range(n):
            stdout.write(str(k[i]))
            stdout.write(' ')
 print(k[n])
View Code

 

Python計算皮球下落速度,編程練習題實例二十

Python方法計算皮球下落速度練習題。各種編程語言中,關於皮球自由下落的計算練習題有很多。今天我們就來做一個用Python方法計算皮球下落速度的練習。 Python練習題問題如下:

問題簡述:假設一支皮球從100米高度自由落下。條件,每次落地后反跳回原高度的一半后,再落下。

要求:算出這支皮球,在它在第10次落地時,共經過多少米?第10次反彈多高? Python解題思路分析:這次要用到range()方法 Python解題源代碼如下:

# !/usr/bin/python
# -*- coding: UTF-8 -*-

Sn = 100.0
Hn = Sn / 2

for n in range(2, 11):
 Sn += 2 * Hn
 Hn /= 2

print('Total of road is %f' % Sn)
print('The tenth is %f meter' % Hn)
View Code

 

 



一:題目:

使用python打印一顆聖誕樹

要求:使用最基本的語法實現

#!/usr/bin/env python
#coding:utf-8
height = 5

stars = 1
for i in range(height):
   print((' ' * (height - i)) + ('*' * stars))
   stars += 2
print((' ' * height) + '|')
View Code

 

二:題目:

使用python3從N個數組中,進行排列組合,打印排列后的所有列表。

要求:嘗試使用笛卡爾算法

#!/usr/bin/env python
#coding:utf-8
class Cartesian():
   # 初始化
   def __init__(self, datagroup):
       self.datagroup = datagroup
       # 二維數組從后往前下標值
       self.counterIndex = len(datagroup)-1
       # 每次輸出數組數值的下標值數組(初始化為0)
       self.counter = [0 for i in range(0, len(self.datagroup))]
# 計算數組長度
   def countlength(self):
       i = 0
       length = 1
       while(i < len(self.datagroup)):
           length *= len(self.datagroup[i])
           i += 1
       return length

   # 遞歸處理輸出下標
   def handle(self):
       # 定位輸出下標數組開始從最后一位遞增
       self.counter[self.counterIndex]+=1
       # 判斷定位數組最后一位是否超過長度,超過長度,第一次最后一位已遍歷結束
       if self.counter[self.counterIndex] >= len(self.datagroup[self.counterIndex]):

           # 重置末位下標
           self.counter[self.counterIndex] = 0
           # 標記counter中前一位
           self.counterIndex -= 1
           # 當標記位大於等於0,遞歸調用
           if self.counterIndex >= 0:
               self.handle()
           # 重置標記
           self.counterIndex = len(self.datagroup)-1
# 排列組合輸出
   def assemble(self):
       length = self.countlength()
       i = 0
       while(i < length):
           attrlist = []
           j = 0
           while(j<len(self.datagroup)):
               attrlist.append(self.datagroup[j][self.counter[j]])
               j += 1
           print(attrlist)
           self.handle()
           i += 1





if __name__ == "__main__":
   # 構造二維數組
   datagroup = [['aa1', ], ['bb1', 'bb2'], ['cc1', 'cc2', 'cc3']]
   # 創建cartesian對象
   cartesian = Cartesian(datagroup)
   cartesian.assemble()
View Code

 

三:題目:

使用python把每隔一分鍾訪問200次的IP,加到黑名單。

要求:每隔一分鍾讀取一下日志文件,把統計到的Ip添加到黑名單。

import time

pin = 0
while True:
   ips = []
   fr = open('assce.log')
   fr.seek(pin)
   for line in fr:
       ip = line.split()[0]  # 因為日志文件中每行的首個字符串是ip,與后面字符之間的分割是符號空格,所以用split()分割后,返回的list中第一個值就是ip地址,取【0】
       ips.append(ip)
   new_ips = set(ips)  # 轉換為集合
   for new_ip in new_ips:
       if ips.count(new_ip) > 200:
           print('加入黑名單的ip是:%s' % new_ip)
   pin = fr.tell()  # 記錄讀完的指針位置
   time.sleep(60)
View Code

 

四:題目:

一輛卡車違反交通規則,撞人后逃跑.現場有三人目擊事件,但都沒有記住車號,只記下車號的一些特征.

甲說:牌照的前兩位數字是相同的;

乙說:牌照的后兩位數字是相同的,但與前兩位不同;

丙是數學家,他說:四位的車號所構成的數字正好等於某一個整數的平方.

請根據以上線索求出車號.

提示:四位整數中的完全平方數 的取值范圍:32的平方—99的平方.

#!/usr/bin/env python
#coding:utf-8

from math import sqrt

for i in range(1,10):
   for j in range(1,10):
       number = 1000 * i + 100 * i + 10 * j + j
       if sqrt(number)==int(sqrt(number)):
           print(number)
View Code

 

五:題目:

要求對目錄下的文件進行增和刪除的監控,如果有增和刪打印出來,並打印文件名。

要求:使用python3使用最簡單的方法。

#!/usr/bin/env python
#coding:utf-8

import os, time
path_to_watch = "."
before = dict ([(f, None) for f in os.listdir (path_to_watch)])
while 1:
   time.sleep (10)
   after = dict ([(f, None) for f in os.listdir (path_to_watch)])
   added = [f for f in after if not f in before]
   removed = [f for f in before if not f in after]
   if added: print("Added: ", ", ".join (added))
   if removed: print("Removed: ", ", ".join (removed))
   before = after
View Code

 

六:題目:

使用python統計一下ip以及出現的次數。

要求:內存比較小,所以不能在內存里計算。

 
import re,time
def mail_log(file_path):
 global count
 log=open(file_path,'r')
 C=r'\.'.join([r'\d{1,3}']*4)
 find=re.compile(C)
 count={}
 for i in log:
   for ip in find.findall(i):
     count[ip]=count.get(ip,1)+1
if __name__ == '__main__':
 print(time.clock())
 num=0
 mail_log(r'assce.log')
 R=count.items()
 for i in R:
   if i[1]>0: #提取出現次數大於0的IP
     print(i)
     num+=1
 print('符合要求數量:%s耗時(%s)'%(num,time.clock()))
View Code

 

①3000多本Python電子書有
②Python開發環境安裝教程有
③Python400集自學視頻有 
④軟件開發常用詞匯有
⑤Python學習路線圖有 
⑥項目源碼案例分享有
如果你用得到的話可以直接拿走,在我的QQ技術交流群里(純技術交流和資源共享,廣告勿入)可以自助拿走,群號是881744585】 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM