課程:B站大學
記錄python學習,直到學會基本的爬蟲,使用python搭建接口自動化測試就算學會了,在進階webui自動化,app自動化
循環語句小作業
- for-in作業
- 斐波那契 for
- 固定數值計算
- 素數
- 字符統計
- 數字序列
- range 函數
- 水仙花數
- 循環嵌套
- 冒泡排序
- 選擇排序
- 數字組合
- 循環跳轉 for else
- 猜數字
- 字典實現(解析字典)
- 非固定數值計算
- 回文數
- 實踐是檢驗真理的唯一標準
for-in作業
斐波那契 for
作業要求:編寫一個Python程序,使用for循環,生成并輸出斐波那契數列的前n項,其中n是用戶指定的正整數。斐波那契數列,又稱黃金分割數列,指的是:1、1、2、3、5、8、13、21、34…從第三個數開始,每個數字都是前兩個數字之和。
# 用戶輸入
n = int(input("請輸入正整數 n:"))# 初始化斐波那契數列
fibs = [1, 1]# 生成數列
for i in range(2, n):next_num = fibs[i - 1] + fibs[i - 2]fibs.append(next_num)# 輸出結果
print(f"斐波那契數列的前 {n} 項為:{fibs}")
固定數值計算
作業要求:對數字列表中數字的求和,求平均值,求最值,求最小值
def case_2():nums = [12,34,3,6,56,33434,6,3,23,23,23,57,78,11,1,8,9]sum = 0avg = Nonemax_num = nums[0]min_num = nums[0]for n in nums:sum += nif n > max_num:max_num = nif n < min_num:min_num = nprint("SUM:", sum)avg = sum / len(nums)print("AVG:", avg)print("MAX:", max_num)print("MIN:", min_num)
素數
作業要求:編寫一個Python程序,輸入一個正整數,判斷這個數是否為素數(質數)。素數是指只能被1和它本身整除的正整數。
import math# 用戶輸入正整數
num = int(input("請輸入一個正整數:"))# 判斷是否為素數
def is_prime(n):if n <= 1:return False for i in range(2, int(math.sqrt(n)) + 1):if n % i == 0:return False return True # 輸出結果
if is_prime(num):print(f"{num} 是素數")
else:print(f"{num} 不是素數")
字符統計
作業要求:
從鍵盤輸入一個字符序列,統計,大寫字母,小寫字母,數字,其它字符各出現次數,將次數保存到字典中。
def func2():data = input("請輸入數據:")count = {"DX":0,"XX":0,"SZ":0,"QT":0}data = list(data)print(data)for c in data:if c >= '0' and c <= '9':count["SZ"] += 1elif c >= 'A' and c <= 'Z':count["DX"] += 1elif c >= 'a' and c <= 'z':count["XX"] += 1else:count["QT"] += 1print(count)
數字序列
range 函數
range() 函數是一個用于生成整數序列的內置函數,通過指定起始值、停止值和步長,它能夠生成一個按照指定規則遞增或遞減的整數序列。
for-in 結合 range 函數實現計次循環
result = 0
for i in range(1, 101):result += iprint(result)
Python 中 ,可以使用 random 模塊中的 randint() 函數獲取隨機數。
from random import randint
print(randint(1, 3))
小tips:
from random import randintplay = int(input("請輸入一個1-6之間的數字:"))
bot = randint(1, 6)if play == bot:print("點數相同,平局")
elif play > bot:print(f"玩家{play}點,電腦{bot}點,玩家勝")
else:print(f"玩家{play}點,電腦{bot}點,電腦勝")
水仙花數
作業要求:編寫一個 Python 程序,找出100-999范圍內的水仙花數。所謂"水仙花數"是指一個三位數,其各位數字立方和等于該數本身。例如:153是一個"水仙花數",因為153=1的三次方+5的三次方+3的三次方。
for n in range(100, 1000):# 獲取百位數i = n // 100 # 獲取十位數j = n // 10 % 10 # 獲取個位數k = n % 10 # 判斷是否為水仙花數if n == i**3 + j**3 + k**3: # 輸出水仙花數print(n)
循環嵌套
循環嵌套特征
- 循環嵌套不局限于某種循環形式,可任意相互嵌套
- 外層循環循環一次,內層循環循環一輪
使用 for-in 循環遍歷二維列表
data = [[1,2,3,4,5,6,7,8,9],["A","B","C","D","E"],["Hello","World","Python","Hogwarts"]
]
for item in data:for el in item:print(el)
使用 while 循環遍歷二維列表
data = [[1,2,3,4,5,6,7,8,9],["A","B","C","D","E"],["Hello","World","Python","Hogwarts"]
]
l1 = len(data)
i = 0
while i < l1:item = data[i]l2 = len(item)j = 0while(j < l2):el = item[j]print(el)j += 1i += 1
冒泡排序
def bubbleSort(obj, key=None, reverse=False):length = len(obj)# 外層循環用來確定找出剩余數據的最大值,N個數,找n-1次即可for i in range(length-1):for j in range(length-i-1):if key: # if key != None:if key(obj[j]) > key(obj[j + 1]):obj[j], obj[j + 1] = obj[j + 1], obj[j]else:if obj[j] > obj[j+1]:obj[j], obj[j+1] = obj[j+1], obj[j]# return obj if not reverse else obj[::-1]if reverse:return obj[::-1]else:return obj
選擇排序
def xuanze():data = [1,56,6,5,4,89,2]length = len(data)for i in range(length-1):small = data[i]for j in range(i+1,length):if data[j]<small:idx = jdata[idx],data[i] = data[i],data[idx]return dataresult = xuanze()
print(result)
數字組合
**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)
**
循環跳轉 for else
names = ["tom","jack","rose","tony"]inName = input("請輸入要查找的姓名:")# 不使用 else 形式
flag = False
for name in names:if name == inName:print("找到了")flag = Truebreak
if not flag:print("沒找到")# 使用 else 形式
for name in names:if name == inName:print("找到了")break
else:print("沒找到")
猜數字
import random# 生成目標數字
target_number = random.randint(1, 100)# 初始化猜測次數
guess_count = 0while True:# 接收玩家輸入guess = int(input("請輸入你的猜測數字:"))# 增加猜測次數guess_count += 1# 判斷猜測結果if guess == target_number:print(f"恭喜你猜對了!目標數字是 {target_number},你共猜了 {guess_count} 次。")breakelif guess < target_number:print("猜小了,請繼續猜測。")else:print("猜大了,請繼續猜測。")
字典實現(解析字典)
def func3():txt = '''#aTrans:art. 一;字母A#a.m.Trans:n. 上午#a/cTrans:n. 往來帳戶@往來:come - and - go; contact; intercourse@n. 往來帳戶#aardvarkTrans:n. 土豬#aardwolfTrans:n. 土狼#aasvogelTrans:n. 禿鷹之一種#abaciTrans:n. 算盤#abackTrans:ad. 向后地;朝后地#abacusTrans:n. 算盤#abaftTrans:ad. 向船尾@prep. 在...后#abaloneTrans:n. 鮑魚#abandonTrans:vt. 放棄;沉溺@n. 放任#abandonedTrans:a. 被拋棄的;自棄的;自甘墮落的#abandoneeTrans:n. 被遺棄者;被委付者#abandonerTrans:n. 遺棄者;委付者#abandonmentTrans:n. 放棄;自暴自棄;放縱#abasTrans:vt. 打倒#abaseTrans:vt. 降低...的地位;降低...的品格;貶抑#abasementTrans:n. 貶抑;屈辱;謙卑#abashTrans:vt. 使...羞愧;使困窘#abashmentTrans:n. 羞愧;#abateTrans:vt. 緩和;減弱;減少;廢除@vi. 緩和;減弱;減少#abatementTrans:n. 減少;減輕;緩和#abatisTrans:n. 鹿柴;拒木;鐵絲網#abatmentTrans:n. 消除,減除#abbTrans:n. 橫絲;緯;羊毛#abbacyTrans:n. 大修道院院長之職位;管區;任期#abbatialTrans:a. 大修道院的;大修道院長的;女大修道院長的#abbeTrans:n. 大修道院院長;僧侶;神父#abbessTrans:n. 女修道院院長;女庵主持#abbeyTrans:n. 修道院#abbotTrans:n. 修道院院長;方丈;住持#abbreviateTrans:vt. 縮寫;使...簡略;縮短#abbreviationTrans:n. 縮寫#abbreviatorTrans:n. 縮寫者#abcTrans:n. 基礎知識;美國廣播公司;澳大利亞廣播公司#abcoulombTrans:n. 絕對庫倫#abdicateTrans:vt. 放棄@vi. 遜位#abdicationTrans:n. 遜位;棄權;辭職#abdicatorTrans:n. 放棄者;讓位者#abdomenTrans:n. 腹部#abdominalTrans:a. 腹部的;腹式呼吸;開腹手術#abductTrans:vt. 誘拐;綁走#abductionTrans:n. 誘拐#abductorTrans:n. 誘拐者#abeTrans:n. 亞伯;Abraham 的昵稱#abeamTrans:ad. 與船的龍骨成直角#abecedarianTrans:n. 初學者@a. 字母的;初步的#abedTrans:ad. 在床上#abelmoskTrans:n. 秋葵#aberranceTrans:n. 脫離正道;越軌;脫離常軌#aberrantTrans:a. 脫離正道的;脫離常軌的;變體的#aberrationTrans:n. 越軌;光行差;心理失常;色差#abestrineTrans:adj. 石棉的#abetTrans:vt. 教唆;幫助'''data = txt.split("\n #")myDict = {}for item in data:# 處理第一個單詞字符串if item.startswith("#"):item = item[1:]# 拆分單詞項k, w = item.split("\n Trans:")myDict[k] = winw = input("請輸入一個單詞:")if inw in myDict:trans = myDict[inw]print(trans)else:print("輸入的單詞不存在")
非固定數值計算
def case_3():sum = 0avg = Nonenum = 0max_num = Nonemin_num = Nonewhile True:flag = Falsen = input("請輸入數字:")print(type(n))if n == "bye":breakelse:if n.startswith("-"): # -123123n = n[1:] # 123123flag = Trueif n.isdigit():n = int(n)if flag == True:n *= -1num += 1sum += nif max_num == None:max_num = nelif max_num < n:max_num = nif min_num == None:min_num = nelif max_num > n:min_num = n
回文數
作業要求:編寫一個Python程序,輸入一個5位數,判斷輸入的這個數字是否為回文數。回文數是指從左到右和從右到左讀都一樣的數。例如12321。如果輸入的是回文數,輸出是回文數,否則輸出不是回文數。(使用循環進行實現)
a = int(input("請輸入一個數字:\n"))
x = str(a)
flag = True# 遍歷字符串的一半字符
for i in range(len(x) // 2):if x[i] != x[-i - 1]:# 如果字符不相同,將標志變量設為False 并退出循環flag = Falsebreakif flag:print(f"{a} 是一個回文數!")
else:print(f"{a} 不是一個回文數!")