国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Python程序設(shè)計(jì)】——重點(diǎn)題目(期末不掛科)

這篇具有很好參考價值的文章主要介紹了【Python程序設(shè)計(jì)】——重點(diǎn)題目(期末不掛科)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

課本:
【Python程序設(shè)計(jì)】——重點(diǎn)題目(期末不掛科)

?? 1. 控制結(jié)構(gòu)

【例3-6】計(jì)算分段函數(shù)值。

y = { cos ? x + x 2 + 1 ( x < 0 ) x x + x ( x ? 0 ) y=\left\{\begin{array}{ll} \cos x+\sqrt{x^{2}+1} & (x < 0) \\ x \sqrt{x+\sqrt{x}} & (x \geqslant 0) \end{array}\right. y={cosx+x2+1 ?xx+x ? ??(x<0)(x?0)?

# import math   # 之后使用方法需要math.sqrt
from math import sqrt,cos		# 可直接使用方法
x=eval(input('請輸入x的值:'))	# eval返回表達(dá)式的值
if x<0:
   y=cos(x)+sqrt(x*x+1)
if x>=0:
   y=x*sqrt(x+sqrt(x))
print('x={},y={:.3}'.format(x,y))	# y保留三位

【例3-7】簡化PM 2.5空氣質(zhì)量提醒: 0~35為優(yōu),35~75為良,75以上為污染。試根據(jù)輸入的PM2.5數(shù)值,輸出空氣質(zhì)量。

PM=eval(input("請輸入PM2.5數(shù)值: "))
if PM>=0 and PM<35:
      print("空氣優(yōu)質(zhì),快去戶外運(yùn)動!")
if PM>=35 and PM<75:
     print("空氣良好,適度戶外活動!")
if PM>=75:
     print("空氣污染,出行請小心!")

☆【例3-13】計(jì)算1+2!+3!+…+10!的結(jié)果。

s=0
t=1
for i in range(1,11):
	t=t*i
	s=s+t
print("運(yùn)算結(jié)果是:{}".format(s))

輸出結(jié)果:運(yùn)算結(jié)果是:4037913

【例3-14】采用while語句計(jì)算1至100的和。

sum=0
n=1
while n<=100:
     sum+=n
     n=n+1
print("1+2+3+…+100=", sum)

【例3-15】采用while語句輸出四葉玫瑰數(shù)。四葉玫瑰數(shù)是指一個四位整數(shù),其各位上數(shù)字的四次方(四次冪)之和等于該數(shù)本身。

n=1000
while n<10000:
      one=n%10
      ten=n//10%10
      hundred=n//100%10
      thousand=n//1000
      if one**4+ten**4+hundred**4+thousand**4==n:
            print(n)
      n+=1

輸出結(jié)果:1634、8208、9474

【例3-16】采用while語句根據(jù)近似公式求自然對數(shù)的底數(shù)為e的值,直到最后一項(xiàng)絕對值小于10-6為止。

e ≈ 1 + 1 1 ! + 1 2 ! + . . . + 1 n ! e\approx 1+\frac{1}{1!} +\frac{1}{2!} + ... + \frac{1}{n!} e1+1!1?+2!1?+...+n!1?

e=1		
n=1		
m=1		
while (1/n >= pow(10, -6)):
      n*=m            # 求階乘
      e+=1/n
      m+=1
print("e =", e)

輸出結(jié)果:e = 2.7182818011463845

【例3-27】編程判斷某一年是否為閏年。判斷閏年的條件是:年份能被4整除但不能被100整除,或者能被400整除的是閏年。

#使用一個邏輯表達(dá)式判斷閏年條件
y=int(input("請輸入年份:"))
if ((y%4==0 and y%100 != 0) or y%400==0):
    print("是閏年")
else:
    print("不是閏年")
    
#使用if-elif語句判斷閏年條件
y=int(input("請輸入年份:"))
if (y%400==0):
     print("是閏年")
elif (y%4 != 0):
    print("不是閏年")
elif (y%100 == 0):
    print("不是閏年")
else:
    print("是閏年")
    
#通過使用嵌套的if語句編寫判斷閏年問題,程序代碼如下:
y=int(input("請輸入年份:"))
if (y%400==0):
    print("是閏年")
else:
   if (y%4==0):
      if (y%100==0):print("不是閏年")
      else: print("是閏年")
   else: print("不是閏年")

☆【例3-29】100 以內(nèi)的素?cái)?shù)存于列表中并打印輸出。

num=[]
for n in range(2,100):
    for x in range(2, n):
        if (n%x==0):
             break
    else:
        num.append(n)
print(num)

輸出結(jié)果:[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]

【例3-32】利用公式: π 4 = 1 ? 1 3 + 1 5 ? 1 7 + … \frac{π}{4}=1?\frac{1}{3}+\frac{1}{5}?\frac{1}{7}+… 4π?=1?31?+51??71?+計(jì)算π的近似值,直到某項(xiàng)絕對值小于10-6為止。

s=0   #表示累加和
t=1   #表示符號
x=1   #表示要累加的項(xiàng)
i=1   #表示分母
while x>=1e-6:
      x=1/i
      s=s+t*x
      t=-t
      i=i+2
s=4*s
print("π的近似值為:{}".format(s))

輸出結(jié)果:π的近似值為:3.1415946535856922

課后綜合題

1、編寫程序?qū)崿F(xiàn)以下功能:求滿足1+2+3+4+…+n>2020的最小n 并輸出(要求用循環(huán)實(shí)現(xiàn))

n = 1
sum = 0
while sum <= 2020:
    sum += n
    n += 1
print(n - 1)

輸出結(jié)果:64

2、給出一個小于1000的正整數(shù),編程求該數(shù)是幾位數(shù),并按逆序打印出各位上的數(shù)字。例如:原數(shù)為456,則輸出為654。

num = int(input("請輸入一個小于1000的正整數(shù):"))
digits = 0
reverse_num = 0

while num > 0:
    digits += 1            # 計(jì)算數(shù)的位數(shù)
    reverse_num = reverse_num * 10 + num % 10    # 取出數(shù)的最后一位并添加到反向數(shù)中
    num = num // 10        # 去掉數(shù)的最后一位

print("該數(shù)的位數(shù)為:", digits)
print("按逆序打印出各位上的數(shù)字為:", reverse_num)

輸出結(jié)果:
請輸入一個小于1000的正整數(shù):456
該數(shù)的位數(shù)為: 3
按逆序打印出各位上的數(shù)字為: 654

?? 2. 數(shù)據(jù)類型

課后綜合題:
1、現(xiàn)有某高校所有教職工新冠疫苗接種調(diào)查數(shù)據(jù)。列表s中的數(shù)據(jù)是教職工年齡;列表t是對應(yīng)的調(diào)查結(jié)果,1表示同意接種,0表示暫不接種。請編寫程序統(tǒng)計(jì)其中30~50 歲(包括30歲和50 歲)同意接種疫苗的教職工數(shù)。

s=[58,43,38,51,38,45,26,38,34,53]
t=[1,0,1,0,1,1,0,1,1,0]

count = 0
for i in range(len(s)):
    if s[i] >= 30 and s[i] <= 50 and t[i] == 1:
        count += 1

print(count)

輸出結(jié)果:5

2、已知列表s=[2,0,2,0,0,5,2,3]。請編寫程序?qū)崿F(xiàn)如下功能:①按列表元素的值生成對應(yīng)字符,元素的值大于0,生成對應(yīng)個數(shù)的字符@,若是0,生成1個字符&;②將所有生成的字符連接成一個字符串并輸出。

s = [2,0,2,0,0,5,2,3]
result = ""

for num in s:
    if num > 0:
        result += "@" * num
    else:
        result += "&"

print(result)

輸出結(jié)果:@@&@@&&@@@@@@@@@@

3、已知字符串t=“198t2845a7293R489234S892b8347348C82923”,請編寫程序?qū)崿F(xiàn):
①將相鄰的字符交換位置,即第1個和第2個,第3個和第4個,…,第n-1個和第n個交換位置;
②將所有字母轉(zhuǎn)換為大寫并輸出。

t = "198t2845a7293R489234S892b8347348C82923"
new_t = ""

for i in range(0, len(t), 2):
    new_t += t[i+1] + t[i]

new_t = new_t.upper()
print(new_t)

輸出結(jié)果:91T882547A92R38429438S298B4337848C9232

4、現(xiàn)有列表s存儲的是一批字符,編寫程序?qū)⑵渲械男懽帜赴聪群蟠涡蜻B接成一個字符串,并輸出。

s=['1','e','W','M','h','T','N','r','g','r']
result = ""

for char in s:
    if char.islower():
        result += char

print(result)

輸出結(jié)果:ehrgr

☆ 5、九九乘法表

for i in range(1, 10):
    for j in range(1, i+1):
        print('{}*{}={}\t'.format(i, j, i*j), end='')
    print('')

輸出結(jié)果:

1*1=1	
2*1=2	2*2=4	
3*1=3	3*2=6	3*3=9	
4*1=4	4*2=8	4*3=12	4*4=16	
5*1=5	5*2=10	5*3=15	5*4=20	5*5=25	
6*1=6	6*2=12	6*3=18	6*4=24	6*5=30	6*6=36	
7*1=7	7*2=14	7*3=21	7*4=28	7*5=35	7*6=42	7*7=49	
8*1=8	8*2=16	8*3=24	8*4=32	8*5=40	8*6=48	8*7=56	8*8=64	
9*1=9	9*2=18	9*3=27	9*4=36	9*5=45	9*6=54	9*7=63	9*8=72	9*9=81	

?? 3. 函數(shù)

可變參數(shù):在定義函數(shù)時, 有時候我們不確定調(diào)用的時候會傳遞多少個參數(shù), 在 Python 中, 允許使用以下兩種方式解決這一問題:

  • 包裹位置參數(shù)。 在形參前增加“?”, 用來接收任意多個實(shí)參并將其放在一個元組中。
  • 包裹關(guān)鍵字參數(shù)。 在形參前增加“??”, 用來接收多個關(guān)鍵字參數(shù)并存放在一個字典中。
    這兩種方式統(tǒng)稱為可變參數(shù), 也稱為不定長參數(shù)。

☆【例 5-15】 使用包裹位置參數(shù)來定義函數(shù), 實(shí)現(xiàn)給定一組數(shù)字 a, b, c…, 計(jì)算 a2 + b2 + c2 + …。

def calc(* numbers):  
               sum = 0 
               for n in numbers: 
                    sum = sum + n* n    
               return sum 

>>>calc(1, 2) 
5
>>>calc(1, 2 , 3) 
14

在參數(shù) numbers 前面加了一個?號,調(diào)用函數(shù)時,參數(shù) numbers 接收到的是元組[1, 2] 或[1, 2, 3],由此可以傳入任意多個參數(shù),包括 0 個參數(shù)。

實(shí)際上, ???也可以在函數(shù)調(diào)用的時候使用, 這就是參數(shù)的解包裹(unpacking)。

【例 5-17】 解包裹參數(shù)使用示例。

>>>def  unpackage (a, b, c): 
  print (a, b, c) 
>>>args = (1, 3, 4) 
>>>unpackage (* args) 

運(yùn)行結(jié)果:1 3 4

在這個例子中, 所謂的解包裹就是在傳遞元組類型數(shù)據(jù)時, 讓元組的每一個元素對應(yīng)一個位置參數(shù)。 在調(diào)用 func 時在實(shí)參前使用?, 把實(shí)參 args 按照定義時形參的個數(shù)進(jìn)行拆分, 分別傳遞給 a, b, c。 相應(yīng)的, 也存在對字典的解包裹, 在上例中加入如下語句:

>>>dict = {'a': 1, 'b': 2, 'c': 3} 
>>>func(** dict) 

則運(yùn)行結(jié)果為:1 2 3

☆【例 5-24】 計(jì)算階乘兩種方法。
自定義函數(shù):

def fac(n):
    result = 1
    for i in range(1, n + 1):
        result *= i
    return result
    
>>>fac(5)  
120

遞歸函數(shù):

def fac(n): 
	if  n==0: return 1 
	return n * fac(n - 1) 
>>> fac(1) 
1
>>> fac(5) 
120

猴子有一堆桃子,每天吃前一天剩下的一半多 1 個,昨天吃完發(fā)現(xiàn)剩了 1 個,那么 10 天前猴子有多少個桃子?
【例 5-25】 使用遞歸解決猴子吃桃問題。
思路分析:
昨天的桃子數(shù) y 相比今天的桃子數(shù) x 有這樣的計(jì)算公式:y = (x+1)?2,這就是遞推的關(guān)系; 而目前已知的是昨天吃完后剩余一個桃子,即天數(shù) n = 1 時桃子數(shù)為 1,這可以作為終止條件。

def f(n):
     if n==1:
        return 1
     else:
        return (f(n-1)+1)* 2
print(f(10))

運(yùn)行結(jié)果:1534

課后綜合題:
1、設(shè)計(jì)一個函數(shù),參數(shù)為整數(shù),返回斐波那契數(shù)列的前n項(xiàng)之和。

def fibonacci(n):
    if n <= 0:
        return 0
    elif n == 1:
        return 1
    else:
        return (fibonacci(n-1) + fibonacci(n-2))

def fibonacci_sum(n):
    total = 0
    for i in range(1, n+1):
        total += fibonacci(i)
    return total

print(fibonacci_sum(5))

輸出結(jié)果:12

2、設(shè)計(jì)一個函數(shù),調(diào)用該函數(shù)能夠打印一個由指定字符組成的n行金字塔。其中,指定打印的字符和行數(shù)n分別由兩個形參表示。

def print_pyramid(char, n):
    for i in range(n):
        print((char * (2 * i + 1)).center(2 * n - 1))

print_pyramid('*', 5)

輸出結(jié)果:

    *    
   ***   
  *****  
 ******* 
*********

3、設(shè)計(jì)一個函數(shù),計(jì)算傳入字符串中數(shù)字、字母、空格以及其他字符的個數(shù)。

def count_chars(s):
    counts = {"字母": 0, "數(shù)字": 0, "空格": 0, "其他": 0}
    for char in s:
        if char.isalpha():
            counts["字母"] += 1
        elif char.isdigit():
            counts["數(shù)字"] += 1
        elif char.isspace():
            counts["空格"] += 1
        else:
            counts["其他"] += 1
    return counts

print(count_chars("Hello World! 123"))

輸出結(jié)果:{‘字母’: 10, ‘?dāng)?shù)字’: 3, ‘空格’: 2, ‘其他’: 1}

4、設(shè)計(jì)一個函數(shù),輸入?yún)?shù)n,判斷該數(shù)是否為水仙花數(shù)。

def is_armstrong_number(n):
    # 將數(shù)字轉(zhuǎn)換為字符串,計(jì)算數(shù)字位數(shù)
    num_str = str(n)
    num_len = len(num_str)
    # 計(jì)算每個數(shù)字的 n 次方之和
    total = sum(int(x) ** num_len for x in num_str)
    # 判斷是否為水仙花數(shù)
    if n == total:
        print(f"{n}是水仙花數(shù)")
    else:
        print(f"{n}不是水仙花數(shù)")

n = 153
is_armstrong_number(n)

輸出結(jié)果:153是水仙花數(shù)

5、設(shè)計(jì)一個函數(shù),求正整數(shù)各位上的數(shù)字之和,要求遞歸思路實(shí)現(xiàn)。

def sum_digits(n):
    if n == 0:
        return 0
    else:
        return n % 10 + sum_digits(n // 10)

n = 12345
print(f"{n}的各位之和是{sum_digits(n)}")

輸出結(jié)果:12345的各位之和是15

6、設(shè)計(jì)一個函數(shù),判斷一個數(shù)是否為素?cái)?shù);并求出所有四位數(shù)的素?cái)?shù)。

def is_prime(n):
    if n < 2:
        return False
    for i in range(2, int(n**0.5)+1):
        if n % i == 0:
            return False
    return True

for n in range(1000, 10000):
    if is_prime(n):
        print(n, end=" ")

輸出結(jié)果:1009 1013 1019 1021 1031 1033 1039 1049 1051 …

?? 4. 文件操作

file.seek()函數(shù)的功能是將文件指針定位到文件中指定字節(jié)的位置,實(shí)現(xiàn)文件的隨機(jī)讀寫。讀取時遇到無法解碼的字符會拋出異常。seek()方法的聲明:seek(offset, from)

其中,參數(shù)offset表示偏移量,即讀寫位置需要移動的字節(jié)數(shù);from用于指定文件的讀寫位置,該參數(shù)的取值為:0、1、2,它們代表的含義如下:

  • 0:表示文件開頭
  • 1:表示使用當(dāng)前讀寫位置
  • 2:表示文件末尾

seek()調(diào)用成功會返回當(dāng)前讀寫位置

【例6-11】使用file.seeks()函數(shù)重定位。

str = "中國廣東廣州ZHKU"
with open("data3.txt","w") as fw:
    fw.write(str)
with open("data3.txt","r") as fr:
    print(fr.read(4))
    fr.seek(0)
    print(fr.read(2))
    fr.seek(4)
    print(fr.read(2))
    print(fr.tell())
    print(fr.seek(5,0))  # 相對文件開頭進(jìn)行偏移

輸出結(jié)果:

中國廣東
中國
廣東
8
5

?? 5. 面向?qū)ο?/h2>

在面向?qū)ο蟪绦蛟O(shè)計(jì)中,用戶可以先定義一個基類(也稱父類),通過父類用繼承的方式來定義新類。這個新類就是子類,子類可以直接使用父類中定義的屬性和方法。通過繼承方式,可以大大提高代碼的復(fù)用率。在Python中,Object類是所有類的父類。

1、單一繼承

當(dāng)一個子類繼承的父類只有一個時,稱繼承為單一繼承,也叫單繼承,語法格式如下:

class ChildClassName (FatherClassName):
	<語句>
	...

在繼承結(jié)構(gòu)中,父類的名稱需要寫在括號中。

由于通過繼承機(jī)制,子類可以使用父類中任何公有的屬性和方法,因此,對于一個子類來說,它的屬性包括自定義屬性和繼承屬性兩部分,而它的方法也包括自定義方法與繼承方法兩部分。下面通過一個實(shí)例給出繼承的實(shí)現(xiàn)。

【例7-12】編寫一個父類A,通過繼承方式得到子類B,在子類中使用父類的屬性和方法。

class FClass:
    def talk(self):
        print("People can talk.")
    def read(self):
        print("People can read.")
class CClass(FClass):
    def eat(self):
        print("People can eat.")
t = CClass()
t.talk()
t.read()
t.eat()

輸出結(jié)果:
People can talk.
People can read.
People can eat.

2、多重繼承
多重繼承,指的是一個子類繼承多個父類。多重繼承的語法格式如下所示。

Class ChildClassName (FatherClass1,,FatherClassn):
	<語句>

在多重繼承模式下,用戶定義子類時,需要在子類名稱后的括號中加入多個父類名稱,各個父類名稱之間用逗號區(qū)分。

☆【例7-13】編寫一個類CClass,同時繼承兩個類FClassA和 FClassB,并在子類中調(diào)用父類中方法。

class FClassA:
    def Write(self):
        print("I can write English.")

class FClassB:
    def Write(self):
        print("I can write Chinese.")
    def Say(self):
        print("I can say Chinese.")
class CClass(FClassB, FClassA):
    def Say(self):
        print("I can say good-bye.")

t = CClass()
t.Write()
t.Say()

輸出結(jié)果:
I can write Chinese.
I can say good-bye.

分析:子類與父類方法同名,則優(yōu)先子類;繼承的多父類方法同名,優(yōu)先調(diào)用先出現(xiàn)的。

?? 6. Excel操作

【Python程序設(shè)計(jì)】——重點(diǎn)題目(期末不掛科)

☆【例8-5】有電子表格文件Student.xlsx,其內(nèi)容如上圖所示。請利用openPyXL訪問該文件,并利用表單屬性來顯示文件中sheet1表單的全部內(nèi)容。

import openpyxl

# 打開 Excel 文件
workbook = openpyxl.load_workbook('Student.xlsx')

# 獲取 sheet1
sheet = workbook['Sheet1']

# 遍歷 sheet1 的每一行,打印每個單元格的值
for row in sheet.iter_rows():
    for cell in row:
        print(cell.value, end='\t')
    print()     # 一行打印完換行

【例8-7】 顯示所有大英成績,并求最大值。

import openpyxl
workbook = openpyxl.load_workbook("Student.xlsx",data_only=True)
sheet = workbook['Sheet1']
celldata = sheet['C3:C8']
list = []
for row in celldata:
    list.append(row[0].value)
print(list)
print(max(list))

輸出結(jié)果:
[85, 90, 70, 98, 46, 73]
98

?? 7. 實(shí)驗(yàn)課題目合集

1、輸入兩個集合setA 和 setB,求它們的交集、并集和差集

setA = set(input("請輸入集合A中的元素,以空格分隔:").split())
setB = set(input("請輸入集合B中的元素,以空格分隔:").split())

print("集合A和集合B的并集為:", setA | setB) # 求并集
print("集合A和集合B的交集為:", setA & setB) # 求交集
print("集合A和集合B的差集為:", setA - setB) # 求差集

輸出結(jié)果:

請輸入集合A中的元素,以空格分隔:2 5 10 7 6 3
請輸入集合B中的元素,以空格分隔:2 4 8 9 6 10 22
集合A和集合B的并集為: {'9', '22', '5', '6', '8', '3', '10', '4', '2', '7'}
集合A和集合B的交集為: {'6', '2', '10'}
集合A和集合B的差集為: {'3', '7', '5'}

2、輸入一個自然數(shù),輸出它的二進(jìn)制,八進(jìn)制,十六進(jìn)制表示形式

num = int(input("輸入一個自然數(shù):"))
print("二進(jìn)制表示:", bin(num))
print("八進(jìn)制表示:", oct(num))
print("十六進(jìn)制表示:", hex(num))

輸出結(jié)果:

輸入一個自然數(shù):66
二進(jìn)制表示: 0b1000010
八進(jìn)制表示: 0o102
十六進(jìn)制表示: 0x42

3、輸入等比數(shù)列的首項(xiàng)、公比(不等于1且小于36的正整數(shù))和一個自然數(shù)n,輸出這個等比數(shù)列前n項(xiàng)的和。

a = int(input("請輸入等比數(shù)列的首項(xiàng):"))
q = int(input("請輸入等比數(shù)列的公比(不等于1且小于36的正整數(shù)):"))
n = int(input("請輸入自然數(shù)n:"))

# 計(jì)算前n項(xiàng)的和
sum = a * (1 - q**n) // (1 - q)

# 直接輸出結(jié)果
print("前",n,"項(xiàng)的和為:", sum)

輸出結(jié)果:

請輸入等比數(shù)列的首項(xiàng):2
請輸入等比數(shù)列的公比(不等于1且小于36的正整數(shù)):2
請輸入自然數(shù)n:55 項(xiàng)的和為: 62

☆ 4、用蒙特卡羅方法,計(jì)算圓周率的近似值。(提示:用單位圓的模型)

import random

# 生成n個隨機(jī)點(diǎn),判斷是否落在圓內(nèi)
def monte_carlo_pi(n):
    count = 0
    for i in range(n):
        x = random.uniform(-1, 1)
        y = random.uniform(-1, 1)
        if x**2 + y**2 <= 1:
            count += 1
    # 返回估算值
    return 4 * count / n    # 4個1/4圓

# 輸入隨機(jī)點(diǎn)個數(shù)并計(jì)算圓周率的值
n = int(input("請輸入隨機(jī)點(diǎn)個數(shù):"))
print("使用蒙特卡羅方法估算的圓周率值為:", monte_carlo_pi(n))

輸出結(jié)果:

請輸入隨機(jī)點(diǎn)個數(shù):100000
使用蒙特卡羅方法估算的圓周率值為: 3.14472

5、使用列表實(shí)現(xiàn)篩選法求素?cái)?shù):輸入一個大于2的自然數(shù),然后輸出小于該數(shù)字的所有素?cái)?shù)組成的列表

def isPrime(n):
    if n < 2:
        return []
    primes = [True] * (n+1)     # 將0到n的每個整數(shù)都標(biāo)記位素?cái)?shù)
    primes[0] = primes[1] = False   # 0和1是合數(shù)
    for i in range(2, int(n**0.5)+1):   # 從2開始遍歷到根號n
        if primes[i]:
            for j in range(i*i, n+1, i):    # 素?cái)?shù)的倍數(shù)都是合數(shù)
                primes[j] = False
    return [i for i in range(2, n+1) if primes[i]]

n = int(input("請輸入一個大于2的自然數(shù):"))
print(f"小于{n}的素?cái)?shù)列表為:{isPrime(n)}")

輸出結(jié)果:

請輸入一個大于2的自然數(shù):20
小于20的素?cái)?shù)列表為:[2, 3, 5, 7, 11, 13, 17, 19]

☆ 6、Caesar密碼

print("請輸入明文")
s=input()
print("請輸入密鑰(數(shù)字)")
k=int(input())
t = ''
for i in s:
    if 'A' <= i <= 'Z':
        t += chr(ord('A')+((ord(i)-ord('A'))+k)%26)
    elif 'a'<= i <='z':
        t += chr(ord('a')+((ord(i)-ord('a'))+k)%26)
    else:
        t += i
print(t)

輸出結(jié)果:

請輸入明文
hello world
請輸入密鑰(數(shù)字)
3
khoor zruog

☆ 7、用 try --finally 結(jié)構(gòu),實(shí)現(xiàn)一個文件的打開,讀取和關(guān)閉的全過程。

try:
    file = open("D:\\text.txt", "r")
    content = file.read(5)
    print(content)
finally:
    file.close()

☆ 8、檢測密碼安全的強(qiáng)度。

def check_password_strength(password):
    # 定義一個密碼強(qiáng)度級別列表
    levels = ["弱", "中", "強(qiáng)"]

    # 定義一個變量,用于統(tǒng)計(jì)密碼強(qiáng)度得分
    score = 0

    # 檢查密碼長度
    if len(password) < 6:
        score += 1

    # 檢查密碼中是否包含數(shù)字
    if any(char.isdigit() for char in password):
        score += 1

    # 檢查密碼中是否包含小寫字母
    if any(char.islower() for char in password):
        score += 1

    # 檢查密碼中是否包含大寫字母
    if any(char.isupper() for char in password):
        score += 1

    # 檢查密碼中是否包含特殊字符
    if any(char in "!@#$%^&*()-+_=\\[]{}|;:'\",.<>/?`~" for char in password):
        score += 1

    # 根據(jù)密碼強(qiáng)度得分,返回相應(yīng)級別
    if score <= 2:
        return levels[0]
    elif score == 3:
        return levels[1]
    else:
        return levels[2]


password = input("請輸入密碼:")
strength = check_password_strength(password)
print("密碼強(qiáng)度為:", strength)

輸出結(jié)果:

請輸入密碼:Abc123
密碼強(qiáng)度為: 中

9、用numpy實(shí)現(xiàn)單位矩陣和矩陣的乘積。

import numpy as np

# 創(chuàng)建 3x3 的單位矩陣
I = np.identity(3)

# 創(chuàng)建 3x2 的矩陣
A = np.array([[1, 2], [3, 4], [5, 6]])

# 計(jì)算矩陣乘積
B = np.dot(I, A)

print(B)

輸出結(jié)果:

[[1. 2.]
 [3. 4.]
 [5. 6.]]

10、a1變量的值為字符串work ,a2=‘hard’.編寫字符處理程序 ,實(shí)現(xiàn) a1+a2, a[1:3];a[2:-3] ,等字符操作。

a1 = 'work'
a2 = 'hard'

# 進(jìn)行字符串拼接
a = a1 + a2
print(a)

# 對字符進(jìn)行切片
b = a[1:3]
print(b)

c = a[2:-3]
print(c)

輸出結(jié)果:

workhard
or
rkh

☆ 11、垃圾郵件快速識別

import re

# 判斷文本是否為垃圾郵件
def is_spam(text):
    if re.search(r'[\*/|\]-]', text):
        return True
    else:
        return False

# 測試代碼
text1 = 'Re: 云記APP用戶意見【使用異?!?
text2 = '您 Steam 愿望單上的 Grand Theft Auto V 及另外 2 個項(xiàng)目正在特賣*!'
text3 = '連接到 Microsoft 帳戶的新應(yīng)用!'
text4 = 'Gitee | 快速入門 Gitee ,開啟技術(shù)提升之路'

if is_spam(text1):
    print('text1是垃圾郵件')
else:
    print('text1不是垃圾郵件')

if is_spam(text2):
    print('text2是垃圾郵件')
else:
    print('text2不是垃圾郵件')

if is_spam(text3):
    print('text3是垃圾郵件')
else:
    print('text3不是垃圾郵件')

if is_spam(text4):
    print('text4是垃圾郵件')
else:
    print('text4不是垃圾郵件')

輸出結(jié)果:

text1不是垃圾郵件
text2是垃圾郵件
text3不是垃圾郵件
text4是垃圾郵件

12、讀寫文本并添加行號

# 讀取文件內(nèi)容
with open('D://test.txt', 'r') as file:
    lines = file.readlines()

# 添加行號
numbered_lines = [f'{i+1}   {line}' for i, line in enumerate(lines)]

# 寫入新文件
with open('D://test.txt', 'w') as file:
    file.writelines(numbered_lines)

輸出結(jié)果:
【Python程序設(shè)計(jì)】——重點(diǎn)題目(期末不掛科)

13、找Word中紅色文本和加粗文本

import docx

# 打開 Word 文件
doc = docx.Document('example.docx')

for paragraph in doc.paragraphs:
    for run in paragraph.runs:
        if run.font.color.rgb == docx.shared.RGBColor(255, 0, 0):
            print("紅色文本:", run.text)
        if run.bold:
            print("加粗文本:", run.text)

輸出結(jié)果:
【Python程序設(shè)計(jì)】——重點(diǎn)題目(期末不掛科)

14、實(shí)現(xiàn)批量修改Excel文件格式:文本默認(rèn)是黑色的,將每列的表頭變?yōu)楹隗w并加粗;把偶數(shù)行所有列的文本設(shè)置為宋體,紅色。奇數(shù)行所有單元格,設(shè)置為藍(lán)色,宋體。

import openpyxl
from openpyxl.styles import Font, PatternFill

# 打開 Excel 文件
wb = openpyxl.load_workbook('成績單.xlsx')

# 遍歷所有工作表
for ws in wb.worksheets:

    # 設(shè)置表頭為黑體加粗
    for cell in ws[1]:
        cell.font = Font(name='黑體', bold=True)

    # 遍歷所有列
    for col in ws.columns:

        # 設(shè)置偶數(shù)行為宋體紅色,奇數(shù)行為宋體藍(lán)色
        for i, cell in enumerate(col):
            if i > 0 and i % 2 == 0:
                cell.font = Font(name='宋體', color='FF0000')  # 紅色
            else:
                cell.font = Font(name='宋體', color='0000FF')  # 藍(lán)色

        # 設(shè)置第一行為黑體加粗
        col[0].font = Font(name='黑體', bold=True)

# 保存修改后的 Excel 文件
wb.save('成績單新.xlsx')

?? 8. 思政題

  1. 模塊與包
    Python 中引入“模塊”和“包”的概念,可以實(shí)現(xiàn)將較大規(guī)模程序開發(fā)任務(wù)分解為多個小規(guī)模任務(wù)來開展?,F(xiàn)代社會是一個復(fù)雜的巨系統(tǒng),我們在處理很多問題時,都需要借鑒這種模塊化的理念,團(tuán)隊(duì)之間要分工合作,團(tuán)結(jié)一心,將問題分而治之,逐個擊破,而不是逞匹夫之勇,導(dǎo)致問題愈加難以解決。

  2. 有繼承的多態(tài)
    我們不僅要繼承中華民族的優(yōu)秀文化傳統(tǒng)和中華古圣先賢的智慧成果,在新時代,還要發(fā)揚(yáng)和創(chuàng)新,從多形態(tài)呈現(xiàn)出“枝繁葉茂、開花結(jié)果”的繁榮景象,一味模仿,或者崇洋媚外的否定自己,都是錯誤的。創(chuàng)新是一個民族發(fā)展與進(jìn)步的靈魂。

  3. 自動類型轉(zhuǎn)換
    “不積跬步,無以至千里;不積小流,無以成江海?!毕M瑢W(xué)們在學(xué)習(xí)的過程中,不斷積累,實(shí)現(xiàn)從初學(xué)者到業(yè)務(wù)高手的“自動類型轉(zhuǎn)換”,為祖國實(shí)現(xiàn)“強(qiáng)國夢”貢獻(xiàn)自己的力量。

  4. 文件操作
    大家在平時工作中,要做好對數(shù)據(jù)的維護(hù)和備份工作,提高安全意識。特別是在互聯(lián)網(wǎng)時代,數(shù)據(jù)都存放在服務(wù)器中,一旦網(wǎng)絡(luò)被攻破,數(shù)據(jù)就會被竊取或丟失。對于計(jì)算機(jī)專業(yè)的學(xué)生而言,要加強(qiáng)網(wǎng)絡(luò)安全意識,做到有備無患。


? 轉(zhuǎn)載請注明出處
作者:HinsCoder
博客鏈接:?? 作者博客主頁文章來源地址http://www.zghlxwxcb.cn/news/detail-502647.html

到了這里,關(guān)于【Python程序設(shè)計(jì)】——重點(diǎn)題目(期末不掛科)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 大數(shù)據(jù)技術(shù)期末復(fù)習(xí)重點(diǎn),不掛科看這里~

    大數(shù)據(jù)技術(shù)期末復(fù)習(xí)重點(diǎn),不掛科看這里~

    本篇文章是根據(jù)老師畫的重點(diǎn),作為期末大數(shù)據(jù)復(fù)習(xí)資料,持續(xù)更新中~ 目錄 一、大數(shù)據(jù)概念 1.什么是大數(shù)據(jù),大數(shù)據(jù)的意義是什么?大數(shù)據(jù)的特征是什么? 2.大數(shù)據(jù)的技術(shù)支撐是什么? 3.大數(shù)據(jù)的處理方法有哪些? 二、數(shù)據(jù)采集與預(yù)處理 1.Kafka數(shù)據(jù)采集 2.數(shù)據(jù)預(yù)處理原理

    2024年02月11日
    瀏覽(41)
  • openjudge-實(shí)用Python程序設(shè)計(jì)測驗(yàn)題目1-54

    ? 目錄 001:字符菱形 002:字符三角形 003:輸出第二個整數(shù) 004:求三個數(shù)的和 005:判斷子串 006:計(jì)算(a+b)*c的值 007:反向輸出一個三位數(shù) 008:字符串交換 009:字符串中的整數(shù)求和 010:計(jì)算2的冪 011:計(jì)算多項(xiàng)式的值 012:奇偶數(shù)判斷 013:點(diǎn)和正方形的關(guān)系 014:三角形判斷 015:計(jì)算郵資 016:分段函

    2024年02月07日
    瀏覽(49)
  • 浙大版PTA《Python 程序設(shè)計(jì)》題目集 參考答案

    本答案配套詳解教程專欄,歡迎訂閱: PTA浙大版《Python 程序設(shè)計(jì)》題目集 詳解教程_少俠PSY的博客-CSDN博客

    2024年02月08日
    瀏覽(22)
  • 【全解析 | PTA】浙大版《Python 程序設(shè)計(jì)》題目集-第二章

    一、判斷題 1. 輸入正整數(shù)6和5,要求和,6+66+666+6666+66666,下面程序正確嗎? F ? ? a=int(input())??? ??? n=int(input())??? ? ? print(sum([int(\\\'a\\\'*i) for i in range(1,n+1)])) ????????在代碼中,使用了字符串 ‘a(chǎn)’ 而不是變量 a 的值是因?yàn)樽址?‘a(chǎn)’ 在引號內(nèi)被視為文本常量,而不是變

    2024年03月12日
    瀏覽(49)
  • 【全解析 | PTA】浙大版《Python 程序設(shè)計(jì)》題目集-第三章

    【全解析 | PTA】浙大版《Python 程序設(shè)計(jì)》題目集-第三章

    一、判斷題 1.\\\'age\\\'+23不是正確的表達(dá)式。T 2 . 列表可以用find()函數(shù)來搜索數(shù)據(jù)是否在列表中。F ????????find()函數(shù)是字符串處理函數(shù);Python find() 方法檢測字符串中是否包含子字符串 str ,如果指定 beg(開始) 和 end(結(jié)束) 范圍,則檢查是否包含在指定范圍內(nèi),如果包含子

    2024年04月15日
    瀏覽(43)
  • 畢業(yè)設(shè)計(jì)做小程序可以做什么,基于微信小程序的畢業(yè)設(shè)計(jì)題目

    博主介紹 :《Vue.js入門與商城開發(fā)實(shí)戰(zhàn)》《微信小程序商城開發(fā)》圖書作者,CSDN博客專家,在線教育專家,CSDN鉆石講師;專注大學(xué)生畢業(yè)設(shè)計(jì)教育和輔導(dǎo)。 所有項(xiàng)目都配有從入門到精通的基礎(chǔ)知識視頻課程,免費(fèi) 項(xiàng)目配有對應(yīng)開發(fā)文檔、開題報(bào)告、任務(wù)書、PPT、論文模版

    2024年02月08日
    瀏覽(29)
  • 微信小程序 畢業(yè)設(shè)計(jì)題目大全 (新穎選題)

    每年一到這個時候就會有大量的學(xué)生問,計(jì)算機(jī)專業(yè)畢業(yè)設(shè)計(jì)題目、計(jì)算機(jī)畢業(yè)設(shè)計(jì)選題等相關(guān)問題。微信小程序的選題恰巧是近年來熱門的選題類型,所以今天精心為了大家整理出了最新計(jì)算機(jī)微信小程序畢業(yè)設(shè)計(jì)參考選題都有源碼+數(shù)據(jù)庫+文檔? 是近期作品 你的選題剛好

    2023年04月25日
    瀏覽(32)
  • 西安石油大學(xué) C++期末考試 重點(diǎn)知識點(diǎn)+題目復(fù)習(xí)(上)

    西安石油大學(xué) C++期末考試 重點(diǎn)知識點(diǎn)+題目復(fù)習(xí)(上)

    當(dāng)使用 const 修飾變量、函數(shù)參數(shù)、成員函數(shù)以及指針時,以下是一些代碼示例: 聲明只讀變量: 保護(hù)函數(shù)參數(shù): 防止成員函數(shù)修改對象狀態(tài): 防止指針修改指向的值: 這些示例展示了如何使用 const 來聲明常量、保護(hù)函數(shù)參數(shù)、防止成員函數(shù)修改對象狀態(tài)以及防止指

    2024年02月11日
    瀏覽(22)
  • 西安石油大學(xué) C++期末考試 重點(diǎn)知識點(diǎn)+題目復(fù)習(xí)(下)

    西安石油大學(xué) C++期末考試 重點(diǎn)知識點(diǎn)+題目復(fù)習(xí)(下)

    析構(gòu)函數(shù)的調(diào)用順序與對象的創(chuàng)建和銷毀順序相反。 對于單個對象,當(dāng)對象的生命周期結(jié)束時(例如離開作用域),會調(diào)用其析構(gòu)函數(shù)。因此,析構(gòu)函數(shù)會在對象銷毀之前被調(diào)用。 對于類的成員對象,它們的析構(gòu)函數(shù)的調(diào)用順序與它們在類中的聲明順序相反。即,在類的析

    2024年02月11日
    瀏覽(21)
  • C++程序設(shè)計(jì)期末考試復(fù)習(xí)試題及解析 3(自用~)

    C++程序設(shè)計(jì)期末考試復(fù)習(xí)試題及解析 3(自用~)

    可以很清楚看到淺拷貝所造成的錯誤:在析構(gòu)的時候會重復(fù)析構(gòu),這是由于淺拷貝時,b的buffer指針和a的buffer指針指向的是同一片空間 如何更改? 換為深拷貝! 即棄用默認(rèn)拷貝構(gòu)造函數(shù),自己寫一個拷貝構(gòu)造函數(shù) 改為深拷貝后,a、b對象不會相互影響,由于b未調(diào)用set()函

    2024年02月09日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包