欧美日韩国产亚洲图片成人网,久久久久免费看成人影片,成人国内精品久久久久影院VR,亚洲最大成人网色

題目1:水仙花數(shù)

水仙花數(shù)(Narcissistic number)也被稱為超完全數(shù)字不變數(shù)(pluperfect digital invariant, PPDI)、自戀數(shù)、自冪數(shù)、阿姆斯壯數(shù)或阿姆斯特朗數(shù)(Armstrong number),水仙花數(shù)是指一個 3 位數(shù),它的每個位上的數(shù)字的 3次冪之和等于它本身。例如:1^3 + 5^3+ 3^3 = 153。

 復(fù)制代碼 隱藏代碼
for i in range(100, 1000):     i1 = i // 100       # 取百位數(shù)字 123//100=1    i2 = i // 10 % 10   # 取十位數(shù)字 123//10=12  12%10=2    i3 = i % 10         # 取個位數(shù)字 123%10=3    if i1 ** 3 + i2 ** 3 + i3 ** 3 == i:         print(f"{i}是水仙花數(shù)")         # 153 是水仙花數(shù)        # 370 是水仙花數(shù)        # 371 是水仙花數(shù)        # 407 是水仙花數(shù)

題目2:四葉玫瑰數(shù)

四葉玫瑰數(shù)是4位數(shù)的自冪數(shù)。自冪數(shù)是指一個 n 位數(shù),它的每個位上的數(shù)字的 n 次冪之和等于它本身。(例如:當(dāng)n為3時,有1^3 + 5^3 + 3^3 = 153,153即是n為3時的一個自冪數(shù),3位數(shù)的自冪數(shù)被稱為水仙花數(shù))。

 復(fù)制代碼 隱藏代碼
for i in range(1000,10000):     i1 = i // 1000      # 取千位數(shù)字 1234//1000=1    i2 = i // 100 % 10  # 取百位數(shù)字 1234//100=12  12%10=2    i3 = i // 10 % 10   # 取十位數(shù)字 1234//10=123  123%10=3    i4 = i % 10         # 取個位數(shù)字 1234%10=4    # print(i,i1,i2,i3,i4)    if i1 ** 4 + i2 ** 4 + i3 ** 4 + i4 ** 4 == i:         print(f'{i}是四葉玫瑰數(shù)')         # 1634 是四葉玫瑰數(shù)        # 8208 是四葉玫瑰數(shù)        # 9474 是四葉玫瑰數(shù)

題目3:逆序輸出字符串

 復(fù)制代碼 隱藏代碼
# 寫法1:切片方式str = input("請輸入字符串")print(str[::-1])# 寫法2:循環(huán)轉(zhuǎn)換str = input("請輸入字符串")list = []for x in range(len(str) -1,-1,-1):     list.append(str[x])print(''.join(list))

題目4:猜數(shù)字小游戲

需求分析:

  1. 隨機生成一個100以內(nèi)的整數(shù),共有10次機會

  2. 開始游戲,輸入猜測的數(shù)字

  3. 如果猜小了,提示猜小了

  4. 如果猜大了,提示猜大了

  5. 猜對了,提示猜對了,并且結(jié)束游戲

  6. 10次機會用完還沒猜對,提示游戲結(jié)束,沒有猜到。

 復(fù)制代碼 隱藏代碼
import random as rd number = rd.randint(0,100)for i in range(10):     choice = int(input("請輸入你要猜測的數(shù)字:"))     if choice > number:         print("你猜大了")     elif choice < number:         print("你猜小了")     else:         print("你猜對了,真棒!")         print(f'你一共用了{i + 1}次機會')         break    print(f'還剩{9 - i}次機會')else:     print('游戲結(jié)束,你沒有猜到')

題目5:百雞百錢

需求分析:

  1. 公雞每只5元,母雞每只3元,小雞3只一元,現(xiàn)要求用100元錢買100只雞(三種類型的雞都要買),問公雞、母雞、小雞各買幾只?

  2. 數(shù)學(xué):

  3. 設(shè)公雞買了x只,母雞買了y只,小雞買了z只

  4. x+y+z= 100

  5. 5x+3y+z/3 = 100

    算法思路

    1. 以公雞為突破點,公雞5元一只,100元最多只能買20只,

    2. 由于三種雞都要買,所以公雞數(shù)一定是小于20的。

    3. 母雞每只3元,100全拿來買母雞,最多也不能超過33只

    4. 設(shè)公雞數(shù)為x,母雞數(shù)為y,小雞z只

    5. 只要滿足5x+3y+z/3=100 和 x+y+z==100 就可以輸出此種組合的結(jié)果.

 復(fù)制代碼 隱藏代碼
count = 0for x in range(1,20):     for y in range(1,33):         z = 100 - x -y         if z > 0 and 5 * x + 3 * y + z / 3 == 100:             count += 1            print("="*60)             print(f'第{count}種買法,公雞買了{x}只,母雞買了{y}只,小雞買了{z}只')             # == == == == == == == == == == == == == == == == == == == == == == == == == == == == == ==            # 第1種買法,公雞買了4只,母雞買了18只,小雞買了78只            # == == == == == == == == == == == == == == == == == == == == == == == == == == == == == ==            # 第2種買法,公雞買了8只,母雞買了11只,小雞買了81只            # == == == == == == == == == == == == == == == == == == == == == == == == == == == == == ==            # 第3種買法,公雞買了12只,母雞買了4只,小雞買了84只

題目6:閏年問題升級版

輸入年月日,輸出該日期是否是閏年,并且輸出該日期是此年份的第幾天

閏年判斷條件:

  1. 能被4整除,并且不能被100整除

  2. 能被400整除

  3. 兩個條件滿足任意一個就為閏年

算法思路

  1. 接收用戶輸入的年月日,創(chuàng)建保存12個月份天數(shù)的列表

  2. 根據(jù)年份判斷是否是閏年,如果是把二月份設(shè)為29天,否則把二月份設(shè)為28天

  3. 根據(jù)月份和日期統(tǒng)計是當(dāng)年的第幾天

 復(fù)制代碼 隱藏代碼
year = int(input("請輸入年份")) month = int(input("請輸入月份")) day = int(input("請輸入日期")) date_list = [31,29,31,30,31,30,31,31,30,31,30,31] count_day = dayif year % 4 == 0 and year % 100 !=0 or year % 400 == 0:     print(f'{year}年是閏年')     date_list[1]=29else:     print(f'{year}年是平年')     date_list[1]=28for i in range(month-1):     count_day += date_list[i]print(f'{year}{month}{day}日是當(dāng)年的第{count_day}天')

題目7:猴子吃桃問題

需求分析:

  1. 猴子第一天摘下若干個桃子,當(dāng)即吃了一半,還不過癮,又多吃了一個。

  2. 第二天早上又將剩下的桃子吃掉一半,又多吃了一個。

  3. 以后每天早上都吃了前一天剩下的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。

  4. 求原來它一共摘了多少個桃子。

  5. 這題得倒著推。第10天還沒吃,就剩1個,說明第9天吃完一半再吃1個還剩1個。

  6. 假設(shè)第9天還沒吃之前有桃子p個

  7. 可得:p/2 - 1 = 1,得出第九天的桃子數(shù)p=4。

  8. 以此類推,即可算出第一天摘了多少桃子.

算法思路

  1. 第10天還沒吃之前的桃子數(shù)量初始化p=1

  2. 從9至1循環(huán)9次,根據(jù)上述公式反推為p=(p+1)*2可得

  3. 第1天還沒吃之前的桃子數(shù)量

 復(fù)制代碼 隱藏代碼
p = 1print(f'第10天還剩下{p}個桃子')for i in range(9,0,-1):     p = (p + 1) * 2    print(f'第{i}天還剩下{p}個桃子')print(f'第一天一共摘了{p}個桃子')# 第10天還剩下1個桃子# 第9天還剩下4個桃子# 第8天還剩下10個桃子# 第7天還剩下22個桃子# 第6天還剩下46個桃子# 第5天還剩下94個桃子# 第4天還剩下190個桃子# 第3天還剩下382個桃子# 第2天還剩下766個桃子# 第1天還剩下1534個桃子# 第一天一共摘了1534個桃子

題目8:冒泡排序

冒泡排序算法由來
這個算法的名字由來是因為越小的元素會經(jīng)由交換慢慢“浮”到數(shù)列的頂端(升序或降序排列),就如同碳酸飲料中二氧化碳的氣泡最終會上浮到頂端一樣,故名“冒泡排序”

從前到后(即從下標較小的元素開始) 依次比較相鄰元素的值,若發(fā)現(xiàn)比后一個值大則交換位置,使值較大的元素逐漸從前移向后部。

假設(shè)有一個列表 [29 ,12 ,19 ,37 ,14] 想升序

第一輪

  • 比較 29 > 12 交換位置

  • [12,29,19,37,14]

  • 比較 29 > 19 交換位置

  • [12,19,29,37,14]

  • 比較 29 > 37 不大于 不交換,列表同上

  • 比較 37 > 14 交換位置

  • [12,19,29,14,37]

第二輪

  • 比較 12 > 19 不大于 不交換,列表同上

  • 比較 19 > 29 不大于 不交換,列表同上

  • 比較 29 > 14 交換位置

  • [12,19,14,29,37]

第三輪

  • 比較 12 > 19 不大于 不交換,列表同上

  • 比較 19 > 14 交換位置

  • [12,14,19,29,37]

第四輪

  • 比較 12 > 14 不大于 不交換,列表同上

  • 完成

  • [12,14,19,29,37]

 復(fù)制代碼 隱藏代碼
import numpy as np pop_list = np.random.randint(100,size=6)# pop_list = [82,15,15,41,37,31]# pop_list = [29,12,19,37,14]count = len(pop_list)print('沒排序之前的列表',pop_list)for i in range(count-1):     for j in range(count-i-1):         if pop_list[j] > pop_list[j + 1]: # 如果要降序就是改成 < 號            pop_list[j],pop_list[j+1] = pop_list[j+1],pop_list[j]print('排好序的列表為',pop_list)# 排好序的列表為 [15, 15, 31, 37, 41, 82]# 排好序的列表為 [12, 14, 19, 29, 37]

題目9:二分查找法

二分法是一種效率比較高的搜索方法

回憶之前做過的猜數(shù)字的小游戲,預(yù)先給定一個小于100的正整數(shù)x,讓你猜,猜測過程中給予大小判斷的提示,問你怎樣快速地猜出來? 我們之前做的游戲給定的是10次機會,如果我們學(xué)會二分查找法以后,不管數(shù)字是多少,最多只需要7次就能猜到數(shù)字

二分查找法

首先先猜50,如果猜對了,結(jié)束;如果猜大了,往小的方向猜,再猜25;如果猜小了,往大的方向猜,再猜75;...每猜測1次就去掉一半的數(shù),這樣我們就可以逐步逼近預(yù)先給定的數(shù)字.這種思想就是二分法。

二分法適用情況

  1. 必須是有序的序列。

  2. 對數(shù)據(jù)量大小有要求。

  3. 數(shù)據(jù)量太小不適合二分查找,與直接遍歷相比效率提升不明顯。

  4. 數(shù)據(jù)量太大也不適合用二分查找,因為數(shù)組需要連續(xù)的存儲空間,若數(shù)據(jù)量太大,往往找不到存儲如此大規(guī)模數(shù)據(jù)的連續(xù)內(nèi)存空間

算法思路

  1. 假設(shè)有一個有序列表

  2. [5,7,11,22,27,33,39,52,58] 請問數(shù)字11是否在此列表中,如果在它的索引值為多少?

  3. 首先我們?nèi)∮行蛄斜淼闹虚g位置 27 和 11 進行比較 我們發(fā)現(xiàn) 11 是小于 27 的

  4. 所以我們排除 27 右邊的數(shù)字

  5. [5,7,11,22,27(排除了右邊的),33,39,52,58]

  6. 接著我們?nèi)?[5,7,11,22] 位置中間的 7 和 11 比較 發(fā)現(xiàn) 11 是大于 7 的 所以我們排除 7 左邊的數(shù)字

  7. 最后我們?nèi)?11到22 的中間位置

  8. 剛好到了11 這時候就可以返回 11 的索引值了,如果沒有找到就提示不存在

第一種 純算法的方式

 復(fù)制代碼 隱藏代碼
arr_list = [5,7,11,22,27,33,39,52,58] number = 11count = 0left = 0right = len(arr_list)-1while left<=right:     middle = (left+right)//2    count += 1    if number > arr_list[middle]:         left = middle +1    elif number < arr_list[middle]:         right = middle - 1    else:         print(f'數(shù)字{number}已找到,索引值為{middle}')         breakelse:     print(f'數(shù)字{number}沒有找到')print(f'一共用了{count}次查找') 數(shù)字11已找到,索引值為2 一共用了3次查找

第二種 遞歸函數(shù)的方式

 復(fù)制代碼 隱藏代碼
arr_list = [5,7,11,22,27,33,39,52,58]def binary_search(number,left,right):    if left <= right:         middle = (left + right) // 2        if number < arr_list[middle]:             right = middle - 1        elif number > arr_list[middle]:             left = middle + 1        else:             return middle         return binary_search(number,left,right)     else:         return -1print(binary_search(11,0,len(arr_list)-1))

題目10:選擇排序

基本思想:從未排序的序列中找到一個最小的元素,放到第一位,再從剩余未排序的序列中找到最小的元素,放到第二位,依此類推,直到所有元素都排序完畢

  • 若列表 [6,8,3,5,9,10,7,2,4,1]

  • 先找到 1 最小 調(diào)換

  • [1, 8, 3, 5, 9, 10, 7, 2, 4, 6]

  • 接著是 2 最小 調(diào)換

  • [1, 2, 3, 5, 9, 10, 7, 8, 4, 6]

  • 接著是 3 最小 位置不變

  • 接著是 4 最小 調(diào)換

  • [1, 2, 3, 4, 9, 10, 7, 8, 5, 6]

  • 接著是 5 最小 調(diào)換

  • [1, 2, 3, 4, 5, 10, 7, 8, 9, 6]

  • 接著是 6 最小 調(diào)換

  • [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

  • 接著是 7 最小 位置不變

  • 接著是 8 最小 位置不變

  • 接著是 9 最小 位置不變

  • 接著是 10 最小 位置不變

 復(fù)制代碼 隱藏代碼
import random as rd sec_list = [rd.randint(1,100) for i in range(8)]# sec_list = [91,30,93,98,26,98,20,90]length = len(sec_list)print(f'未排序的列表為:{sec_list}')for i in range(length -1):     min_index = i     for j in range(i + 1,length):         if sec_list[min_index] > sec_list[j]:             min_index = j     sec_list[min_index],sec_list[i] = sec_list[i],sec_list[min_index]     print(f'第{i+1}輪排好序是:{sec_list}')print(f'最終排好序的列表為:{sec_list}')# 未排序的列表為:[91, 30, 93, 98, 26, 98, 20, 90]# 第1輪排好序是:[20, 30, 93, 98, 26, 98, 91, 90]# 第2輪排好序是:[20, 26, 93, 98, 30, 98, 91, 90]# 第3輪排好序是:[20, 26, 30, 98, 93, 98, 91, 90]# 第4輪排好序是:[20, 26, 30, 90, 93, 98, 91, 98]# 第5輪排好序是:[20, 26, 30, 90, 91, 98, 93, 98]# 第6輪排好序是:[20, 26, 30, 90, 91, 93, 98, 98]# 第7輪排好序是:[20, 26, 30, 90, 91, 93, 98, 98]# 最終排好序的列表為:[20, 26, 30, 90, 91, 93, 98, 98]

題目11:剪刀石頭布

游戲開始,初始狀態(tài)下用戶和電腦都有100分,贏一局+10分,輸一局-10分。當(dāng)用戶為0分時,游戲結(jié)束,提示游戲結(jié)束,比賽輸了,當(dāng)用戶為200分時,游戲結(jié)束,提示游戲結(jié)束,贏得比賽、每輪比賽都輸出當(dāng)前的分數(shù)

1代表剪刀 2代表石頭 3代表布

 復(fù)制代碼 隱藏代碼
import random as rdprint('=' * 60)print(' ' * 20, '剪刀石頭布游戲')print('1代表剪刀 2代表石頭 3代表布') game_info = {1: "剪刀", 2: "石頭", 3: "布"} score = 100while True:     robots_choice = rd.randint(1, 3)     user_choice = input("請出拳")     if user_choice not in '123':         print('出拳錯誤,請重新出拳')         continue    user_choice = int(user_choice)     print('*' * 60)     print(f'電腦出{game_info[robots_choice]}')     print(f'你出{game_info[user_choice]}')     print('*' * 60)     if user_choice == 1 and robots_choice == 3 or user_choice == 2 \             and robots_choice == 1 or user_choice == 3 and robots_choice == 2:         score += 10        print(f'你贏得本輪游戲,當(dāng)前分數(shù)為{score}')     elif user_choice == robots_choice:         print(f'本輪游戲平局,當(dāng)前分數(shù)為{score}')     else:         score -= 10        print(f'你輸了本輪游戲,當(dāng)前分數(shù){score}')     if score >= 200:         print('游戲結(jié)束,你贏得比賽')         break    elif score <= 0:         print('游戲結(jié)束,你輸了')         break

題目12:快樂數(shù)

在給定的數(shù)字下,該數(shù)字所有數(shù)位(digits)的平方和,得到的新數(shù)再次求所有數(shù)位的平方和,如此重復(fù)進行,最終結(jié)果必定為1

比如數(shù)字:19

  • 1 = 1 9 9 = 81 = 1 + 81 = 82

  • 8 = 64  2 2 = 4 = 64 + 4 = 68

  • 6 = 36  8 8 = 64 = 36 + 64 = 100

  • 1 + 0 + 0 = 1

 復(fù)制代碼 隱藏代碼
def sum_square(n):    sum = 0    for i in str(n):         sum += int(i) ** 2    return sumlist1 = [] n = int(input('請輸入數(shù)字:'))while sum_square(n) not in list1:     n = sum_square(n)     list1.append(n)if n == 1:     print('是快樂數(shù)')else:     print('不是快樂數(shù)')

題目13:猜年齡(一)

  1. 小明帶兩個妹妹參加元宵燈會。別人問她們多大了,她們調(diào)皮地說:“我們倆的年齡之積是年齡之和的6倍“。

  2. 小明又補充說:“她們可不是雙胞胎,年齡差肯定也不超過8歲啊?!?/p>

  3. 請你寫出:小明的較小的妹妹的年齡。

 復(fù)制代碼 隱藏代碼
for i in range(1,100):     for j in range(1,i):         if i*j == 6*(i+j) and i-j<8:             print(i,j)# 15 10

題目14:猜年齡(二)

美國數(shù)學(xué)家維納(N.Wiener)智力早熟,11歲就上了大學(xué)。
他曾在1935~1936年應(yīng)邀來中國清華大學(xué)講學(xué)。
一次,他參加某個重要會議,年輕的臉孔引人注目。于是有人詢問他的年齡,
他回答說:“我年齡的立方是個4位數(shù)。我年齡的4次方是個6位數(shù)。
這10個數(shù)字正好包含了從0到9這10個數(shù)字,每個都恰好出現(xiàn)1次?!?br style='overflow-wrap: break-word;'/>請你推算一下,他當(dāng)時到底有多年輕

 復(fù)制代碼 隱藏代碼
for i in range(10,30):     i3 = str(i ** 3)     i4 = str(i ** 4)     if len(i3) == 4 and len(i4) == 6:         if len(set(i3+i4)) == 10:             print(i)             print(i3 + i4)# 18# 5832104976

題目15:split算法實現(xiàn)

  • split是python字符串內(nèi)置的一個非常有用的方法它可以將一個字符串通過分隔符切成我們想要的列表比如現(xiàn)在我們有個字符串

  • life-is-short-you-need-python

  • 每一個單詞之間使用橫桿進行分割,當(dāng)我們?nèi)フ{(diào)用字符串split的方法之后傳入我們的分隔符橫桿 - 那我們就會得到一個列表列表里面每個元素其實就是通過分隔符切出來的子字符串

  • 那這個算法該怎么樣去實現(xiàn)呢?python內(nèi)置的split方法是通過C語言實現(xiàn)的,我們今天去寫一個函數(shù),去實現(xiàn)和split相同的功能

  • 我們先來講下算法該怎么樣去實現(xiàn)這個算法需要我們對字符串進行迭代,我們先去定義一個初始化的指針,因為我們切片的時候需要從哪一個開始的位置進行切,所以我們先要初始化一個指針

  • 我們可以定義一個指針變量,默認值為0,緊接著我們開始對字符串進行迭代,當(dāng)碰到第一個分隔符的時候,我們是不是會獲取到當(dāng)前分隔符的索引,那這個時候,我們就把初始的指針開始到分隔符結(jié)束對字符串進行切片

  • 因為我們字符串是遵守左閉右開的,你的結(jié)束索引寫的是分隔符的索引,所以只會切到life,我們并把它添加到列表里面,緊接著添加完之后呢,我們需要把初始化的指針修改一下位置,修改到哪個地方呢?修改到我們第一次碰到的分隔符的下一個位置

  • 也就是i,緊接著繼續(xù)進行迭代,迭代之后發(fā)現(xiàn)第二個分隔符,是不是還有一個分隔符的索引,這個時候我們繼續(xù)向字符串進行切片,切片的開始位置是你的i這個位置的指針,結(jié)束的位置是第二個 - 的指針,那遵循左閉右開,所以我們is這個單詞,也可以添加進列表

  • 就這樣一直到最后呢,當(dāng)我們?nèi)サ阶詈笠粋€字符n的時候,發(fā)現(xiàn)后面是沒有橫桿分隔符了,這個時候我們需要進行處理一下,需要進行去判斷一下,如果我們迭代到的字符是最后一個字符,那么我們進行切片的時候,就應(yīng)該從哪個地方切呢?

  • 從p開始 ,如果切到n,我們只能取到pytho,少切一個n,所以到n + 1的位置,好,知道這個流程我們就用代碼去實現(xiàn)這個算法

 復(fù)制代碼 隱藏代碼
def split_s(string, sep="", num=0):    split_words = []     last_index = 0    count = 0    for index, char in enumerate(string):         if count == num and num > 0:             split_words.append(string[last_index:len(string)])             break        if char == sep:             split_words.append(string[last_index:index])             last_index = index + 1            count += 1        elif index + 1 == len(string):             split_words.append(string[last_index:index + 1])     return split_wordsprint(split_s("life-is-short-you-need-python",'-'))# ['life', 'is', 'short', 'you', 'need', 'python']print(split_s("life-is-short-you-need-python",'-',2))# ['life', 'is', 'short-you-need-python']

題目16:大衍數(shù)列

中國古代文獻中,曾記載過“大衍數(shù)列”,主要用于解釋中國傳統(tǒng)文化中的太極衍生原理
它的前幾項是:0、2、4、8、12、18、24、32、40、50...
其規(guī)律是:偶數(shù)項,是序號平方再除2,奇數(shù)項,是序號平方減1再除2。
打印大衍數(shù)列的前100項

 復(fù)制代碼 隱藏代碼
for x in range(1,101):     if x % 2 == 0: # 偶數(shù)        a = int((x ** 2) / 2)     else: # 奇數(shù)        a = int((x ** 2 - 1) / 2)     print(a)# 0# 2# 4# 8# 12# 18# 24# 32# 40# 50

題目17:單詞分析

  • 小藍正在學(xué)習(xí)一門神奇的語言,這門語言中的單詞都是由小寫英文字母組成,有些單詞很長,遠遠超過正常英文單詞的長度。小藍學(xué)了很長時間也記不住一些單詞,他準備不再完全記憶這些單詞,而是根據(jù)單詞中哪個字母出現(xiàn)得最多來分辨單詞

  • 現(xiàn)在,請你幫助小藍,給了一個單詞后,幫助他找到出現(xiàn)最多的字母和這個字母出現(xiàn)的次數(shù)

  • 其實就是讓你輸入一段字符串后,得到當(dāng)前字符串出現(xiàn)最多的字母和它的次數(shù)

  • 輸入:HelloWorld

  • 輸出:

  • l

  • 3

  • 我們可以對當(dāng)前的字符串進行循環(huán)迭代,然后把字符串當(dāng)前每個字符當(dāng)作key值,把它存到字典里面,如果當(dāng)前key在字典里面,我們就讓它加一,如果不在那我們就讓它的次數(shù)初始化為1,最終我們再從字典找到次數(shù)最多的key值和value值

 復(fù)制代碼 隱藏代碼
def analyse_words(words):    word_dict = {}     for i in words:         if i in word_dict:             word_dict[i] += 1        else:             word_dict[i] = 1    max_key = max(word_dict,key=word_dict.get)     print(max_key)     print(word_dict[max_key])     # l    # 3analyse_words('helloworld')

題目18:利用棧打印菱形

輸入邊長n,打印對應(yīng)邊長的菱形

分析:

  1. 打印幾行

  2. 每一行打印幾個空格,幾個星星

  3. 前幾行打印之前加入到棧,利用棧的后進先出原則打印后幾行的內(nèi)容

 復(fù)制代碼 隱藏代碼
def diamond(n):    stack = []     for i in range(1, 2 * n):         if i <= n:             p_str = ' ' * (n - i) + '*' * (2 * i - 1)             if i != n:                 stack.append(p_str)             print(p_str)         else:             print(stack.pop()) diamond(5)# 為了區(qū)分我把空格換成了點# ....*# ...***# ..*****# .*******# *********# .*******# ..*****# ...***# ....*

題目19:深入理解遞歸函數(shù)

什么是遞歸函數(shù)?
遞歸函數(shù)就是一個函數(shù)在它的函數(shù)體內(nèi)調(diào)用它自身。執(zhí)行遞歸函數(shù)將反復(fù)調(diào)用其自身,每調(diào)用一次就進入新的一層。
遞歸函數(shù)必須有結(jié)束條件。

設(shè)計遞歸函數(shù)三要素:

  1. 明確你這個函數(shù)想要干什么

  2. 尋找遞歸結(jié)束條件

  3. 找出函數(shù)的等價關(guān)系式

 復(fù)制代碼 隱藏代碼
def p(n):    if n == 0:         return    print('遞歸前->',n)     p(n-1)     print('遞歸后->',n) p(5)# 遞歸前-> 5# 遞歸前-> 4# 遞歸前-> 3# 遞歸前-> 2# 遞歸前-> 1# 遞歸后-> 1# 遞歸后-> 2# 遞歸后-> 3# 遞歸后-> 4# 遞歸后-> 5

題目20:斐波那契遞歸函數(shù)

斐波那契數(shù)列(Fibonacci sequence),又稱黃金分割數(shù)列,因數(shù)學(xué)家萊昂納多·斐波那契(Leonardo Fibonacci)以兔子繁殖為例子而引入,故又稱為“兔子數(shù)列”,指的是這樣一個數(shù)列:
1、1、2、3、5、8、13、21、34、...
這個數(shù)列,前兩項都是數(shù)字1,從第三項開始,每一項數(shù)字是前兩項數(shù)字之和

關(guān)系表達式【f(n) = f(n-1)+f(n-2)】

 復(fù)制代碼 隱藏代碼
def fib(n):    if n<=2:         return 1    return fib(n-1)+fib(n-2)print(fib(10)) # 55print(fib(2)) # 1

遞歸與棧的關(guān)系
遞歸函數(shù)原理:每一次調(diào)用都會把當(dāng)前調(diào)用壓入到棧里,最后按照后進先出的原則,不停返回返回
由遞歸程序的執(zhí)行過程,我們得知遞歸程序的調(diào)用是一層層向下的,而返回過程則恰好相反,一層層向上。

換個說法:最先一次的函數(shù)調(diào)用在最后返回,而最后一次的函數(shù)調(diào)用則是最先返回。這就跟棧的“后進先出”次序是一樣的。因此,在實現(xiàn)遞歸調(diào)用的時候,通常就會使用棧來保存每一次調(diào)用的現(xiàn)場數(shù)據(jù):

  • 當(dāng)一個函數(shù)被調(diào)用的時候,系統(tǒng)會把調(diào)用時的現(xiàn)場數(shù)據(jù)壓入到系統(tǒng)調(diào)用棧,壓入棧的現(xiàn)場數(shù)據(jù)稱為棧幀。

  • 當(dāng)函數(shù)返回時,要從調(diào)用棧的棧頂取得返回地址,恢復(fù)現(xiàn)場,彈出棧幀,按地址返回。

題目21:三個數(shù)取最大數(shù)

己知數(shù)字a,b,c分別為10,6,18
找出a,b,c中最大的數(shù)字(不借助函數(shù)以及列表等方式)
我們知道函數(shù)max可以直接獲取到最大值,或者可以把數(shù)字添加到列表里,通過排序也能獲取到最大數(shù)字,我們單純使用if分支來實現(xiàn)

 復(fù)制代碼 隱藏代碼
a, b, c = 10, 6, 18if a > b:     max_num = aelse:     max_num = bif max_num < c:     max_num = cprint(max_num) # 18

題目22:因子之和“完數(shù)”

什么是因子?
因子就是所有可以整除這個數(shù)的數(shù)字,包括1但不包括這個數(shù)自身。比如8的因子有1,2,4

什么是完數(shù)?
一個數(shù)如果恰好等于它的因子之和,這個數(shù)就稱為“完數(shù)”,打印輸出1000以內(nèi)的完數(shù),例如6=1+2+3,6就是“完數(shù)

 復(fù)制代碼 隱藏代碼
def factor_sum(n):    s_sum = 0    for i in range(1, n):         if n % i == 0:             s_sum += i     return s_sumfor j in range(1, 1000):     if j == factor_sum(j):         print(j)         # 6        # 28        # 496

題目23:遞歸階乘求和

一個正整數(shù)的階乘(factorial)是所有小于及等于該數(shù)的正整數(shù)之積,并且0的階乘為1

 復(fù)制代碼 隱藏代碼
如5!=1*2*3*4*5 計算1!+2!+3!+4!+5!+…+10! 關(guān)系表達式【f(n) = n*f(n-1)】
 復(fù)制代碼 隱藏代碼
def factor(n):    if n < 2:         return 1    return n * factor(n - 1) s_sum = 0for i in range(1, 11):     s_sum += factor(i)print(s_sum)  # 4037913

題目24:有效的括號

給定一個只包括'(',')','{','}','[',']' 的字符串,判斷字符串是否有效。

有效字符串需滿足:

  • 左括號必須用相同類型的右括號閉合

  • 左括號必須以正確的順序閉合

  • 空字符串可被認為是有效字符串

示例 1:
輸入:"()"
輸出:True

示例 2:
輸入:"()[]{}"
輸出:True

示例 3:
輸入:"(]"
輸出:False

示例 4:
輸入:"([)]"
輸出:False

解法一:字符串替換法
在字符串中找成對的()、[]、{},找到后替換成空
使用while循環(huán),不停判斷是否存在成對的小括號中括號大括號,如果存在就使用replace替換成空
直到無法再替換的時候,再判斷下當(dāng)前的字符串是否為空,如果為空說明字符串是有效的,如果不為空說明字符串是無效的

 復(fù)制代碼 隱藏代碼
def valid_str(string):    if len(string) % 2 == 1:         return False    while '()' in string or '[]' in string or '{}' in string:         string = string.replace('()', '')         string = string.replace('[]', '')         string = string.replace('{}', '')     return string == ''print(valid_str('()'))  # Trueprint(valid_str('()[]{}'))  # Trueprint(valid_str('()[]{[()]}'))  # Trueprint(valid_str('()[]{[(}]}'))  # False

解法二:利用棧的后進先出原則
先去定義一個空棧,對當(dāng)前棧進行循環(huán)遍歷,遇到左括號我們就把當(dāng)前的左括號添加到棧里面,遇到右括號,我們就和棧頂元素進行比對
看它們是不是成對的括號,如果是,就把當(dāng)前的元素出棧,直到字符串遍歷結(jié)束之后,我們再來看下字符串是不是空的,如果是空的說明字符串是有效的,如果不為空說明字符串是無效的

 復(fù)制代碼 隱藏代碼
def valid_str(string):    if len(string) % 2 == 1:         return False    stack = []     char_dict = {         ')': '(',         '}': '{',         ']': '['    }     for char in string:         if char in char_dict:             # 右括號            if not stack or char_dict[char] != stack.pop():                 return False        else:             # 左括號            stack.append(char)     return not stackprint(valid_str('(){}[({[]})]'))  # Trueprint(valid_str('(){}[({[)})]'))  # Falseprint(valid_str(''))  # True

題目25:回文數(shù)的兩種解法

回文數(shù)是指正序(從左向右)和倒序(從右向左)都是一樣的整數(shù)。例如,1221是回文,而1222不是。

解法一:通過逆轉(zhuǎn)字符串進行比對

 復(fù)制代碼 隱藏代碼
def is_palindrome(x):    if x < 0 or x > 0 and x % 10 == 0:         return False    str_x = str(x)     return str_x == str_x[::-1]print(is_palindrome(121))  # Trueprint(is_palindrome(120))  # False

解法二:反轉(zhuǎn)一半數(shù)字和前半部分的數(shù)字進行比較

流程

  • 對于整數(shù)x,后半部分reverted

  • 每次循環(huán)x%10拿到末尾數(shù)字

  • 然后x/10去除末尾的數(shù)字

  • 循環(huán)結(jié)束條件x<=reverted

數(shù)字長度(奇數(shù))
12321

數(shù)字長度(偶數(shù))
1221

 復(fù)制代碼 隱藏代碼
def is_palindrome(x):    if x < 0 or x > 0 and x % 10 == 0:         return False    reverted = 0    while x > reverted:         # 我們看下 1221        # 第一次循環(huán)我們需要把末尾數(shù)字1取出來 第二次取末尾數(shù)字2 我們需要把21變成12        reverted = reverted * 10 + x % 10        # 把x的末尾數(shù)字刪除掉        x //= 10    return x == reverted or x == reverted // 10print(is_palindrome(1221))  # Trueprint(is_palindrome(1223))  # Falseprint(is_palindrome(123321))  # True


評論(0條)

請登錄后評論
ziyuan

ziyuan Rank: 16

0

0

1

( 此人很懶并沒有留下什么~~ )

首頁

欄目

搜索

會員
欧美日韩国产亚洲图片成人网,久久久久免费看成人影片,成人国内精品久久久久影院VR,亚洲最大成人网色

      <rt id="eqjw4"><noframes id="eqjw4"><rt id="eqjw4"></rt>
    • 
      
      成人av午夜电影| 91亚洲资源网| 福利一区在线观看| 99久久免费精品| 久久国产精品99精品国产| 国产精品亚洲人在线观看| 成人污视频在线观看| 免费在线视频一区| 国产99精品在线观看| 日韩av在线发布| 国产成a人亚洲精品| 日韩av一区二区三区四区| 粉嫩高潮美女一区二区三区| 丝袜美腿成人在线| 成人少妇影院yyyy| 国产资源精品在线观看| 三级欧美韩日大片在线看| 国产精品一区二区在线观看不卡 | 91亚洲国产成人精品一区二区三 | 免费成人在线观看视频| 大胆亚洲人体视频| 国产在线麻豆精品观看| 日韩av午夜在线观看| 粉嫩av亚洲一区二区图片| 久久99在线观看| 日韩精品国产欧美| 99久久er热在这里只有精品66| 国产精品自在欧美一区| 日韩精品1区2区3区| av在线一区二区| 国产成人精品1024| 日韩精品电影一区亚洲| 成年人国产精品| 懂色中文一区二区在线播放| 国产一区在线看| 蜜桃一区二区三区在线| 日韩精品成人一区二区三区| 日日夜夜一区二区| 视频在线观看91| 91麻豆福利精品推荐| www.欧美色图| av在线不卡观看免费观看| 成人免费高清在线观看| 成人性视频免费网站| 国产999精品久久久久久绿帽| 国产成人av福利| 成人午夜av电影| 99久久免费国产| 日韩精品亚洲一区| 秋霞电影一区二区| 久久国产三级精品| 国产在线精品免费| 国产在线视频一区二区| 国产成人免费在线视频| 成人一级片在线观看| av成人免费在线| 丝袜美腿亚洲色图| 裸体一区二区三区| 国产麻豆精品视频| 成年人网站91| 美腿丝袜在线亚洲一区| 久久电影网站中文字幕| 国产精品99久久久久| 成人性视频网站| 日韩国产精品久久久久久亚洲| 青青草精品视频| 国产真实乱对白精彩久久| 成熟亚洲日本毛茸茸凸凹| 日日夜夜免费精品视频| 极品少妇一区二区| 成人综合婷婷国产精品久久免费| 91在线小视频| 狠狠色综合日日| 成人av资源在线| 六月丁香综合在线视频| 国产成人免费xxxxxxxx| 99riav久久精品riav| 麻豆中文一区二区| 国产成人av一区二区三区在线 | 精品中文字幕一区二区| 国产成人精品一区二 | 国产激情91久久精品导航| 国产成人午夜99999| 日韩电影在线免费观看| 成人精品国产免费网站| 日本欧美在线看| 国产成人综合在线播放| 日韩av中文字幕一区二区| 国产成人综合精品三级| 日本欧美在线看| 成人少妇影院yyyy| 蜜桃久久精品一区二区| 波波电影院一区二区三区| 久久99精品久久久久久| 91视频精品在这里| 国产激情视频一区二区三区欧美| 麻豆久久久久久| 91在线精品一区二区| 国产一区二区三区精品欧美日韩一区二区三区 | 成人免费看的视频| 激情综合网av| 日韩成人免费电影| av亚洲精华国产精华| 国产一区二区按摩在线观看| 不卡一卡二卡三乱码免费网站 | 国产麻豆精品视频| 麻豆一区二区99久久久久| www.爱久久.com| 国产成人免费xxxxxxxx| 狠狠色综合日日| 久久精品国产一区二区三 | 91在线视频官网| 粉嫩一区二区三区在线看| 国产一区二区三区蝌蚪| 激情图片小说一区| 免费成人在线影院| 日韩电影在线一区二区三区| aaa欧美日韩| 国产91精品露脸国语对白| 激情文学综合丁香| 国产专区综合网| 国产精品一区不卡| 国产精品一区二区果冻传媒| 国产精品18久久久久久久久久久久 | 99久久精品一区| 成人免费高清视频在线观看| 国产福利91精品| 国产成人精品免费看| 粉嫩av一区二区三区粉嫩| 国产mv日韩mv欧美| 丰满白嫩尤物一区二区| 成人激情黄色小说| 99精品欧美一区二区三区小说 | 99视频一区二区| 99久久久国产精品| 91视频在线看| 轻轻草成人在线| 麻豆91在线播放| 国产精品一区二区在线看| 粉嫩欧美一区二区三区高清影视| 懂色中文一区二区在线播放| 99热国产精品| 日本少妇一区二区| 国产原创一区二区| 懂色av一区二区夜夜嗨| 首页国产欧美久久| 国内精品伊人久久久久av一坑 | 国产精品一品视频| www.成人网.com| 男人的j进女人的j一区| 国产综合成人久久大片91| 成人性生交大片免费看中文网站| 91视频com| 激情偷乱视频一区二区三区| 大白屁股一区二区视频| 日韩和欧美一区二区| 国产精品一区二区三区四区| 国产很黄免费观看久久| 99国产欧美另类久久久精品| 精品制服美女丁香| 首页国产欧美日韩丝袜| 久久99精品久久久久久国产越南| 国产成人精品免费看| 日韩不卡手机在线v区| 国产精品香蕉一区二区三区| 日韩主播视频在线| 国产不卡在线播放| 裸体在线国模精品偷拍| 成人avav影音| 国产精品一区二区x88av| 日日摸夜夜添夜夜添国产精品| 国产在线日韩欧美| 日韩制服丝袜先锋影音| 成人免费的视频| 国内精品视频666| 日韩中文字幕区一区有砖一区| 国产成人一区在线| 六月丁香综合在线视频| 91视频免费看| 成人av免费在线观看| 国产精品888| 久久激情综合网| 丝袜脚交一区二区| 成人少妇影院yyyy| 国产激情偷乱视频一区二区三区| 美女www一区二区| 99久久婷婷国产| 成人午夜电影网站| 国产福利一区二区三区视频 | 国产真实乱子伦精品视频| 97久久久精品综合88久久| 久久爱www久久做| 青娱乐精品视频在线| 99久久久精品| 成人av网站在线| 高清免费成人av| 国产成人综合视频| 国产剧情一区在线| 国产中文一区二区三区| 国产主播一区二区三区| 精品一区二区日韩| 国产专区欧美精品| 国内成人精品2018免费看| 麻豆91精品91久久久的内涵| 轻轻草成人在线| 蓝色福利精品导航| 精品亚洲欧美一区| 激情文学综合插| 国产精品主播直播| 国产成人av一区二区三区在线| 国产成人精品一区二| 高清不卡在线观看av| 成人高清视频在线观看| 成人一级片网址| 99久久综合国产精品| 91亚洲精品久久久蜜桃| 手机精品视频在线观看| 日本成人在线不卡视频| 欧美aaaaa成人免费观看视频| 久久精品国产亚洲aⅴ| 精品在线观看免费| 国产精品综合网| 成人免费视频网站在线观看| 成人精品视频一区| 天堂资源在线中文精品 | 国产69精品久久久久777| 国产成人综合自拍| 99精品视频一区| 日韩精品成人一区二区三区| 久久99热狠狠色一区二区| 国内精品不卡在线| 粉嫩aⅴ一区二区三区四区五区| 波多野结衣中文字幕一区二区三区| 成人黄色在线看| 91免费版在线看| 久久国产精品区| 懂色av一区二区三区免费观看| 99re这里只有精品首页| 美女免费视频一区二区| 国产精品主播直播| 丝袜美腿亚洲综合| 国产精品一二一区| 91亚洲男人天堂| 国产麻豆精品theporn| 不卡的av在线| 狠狠色综合播放一区二区| 波波电影院一区二区三区| 麻豆国产精品视频| 成人教育av在线| 麻豆精品新av中文字幕| 岛国精品在线观看| 久草精品在线观看| 99久久精品一区二区| 国产乱一区二区| 日韩高清在线不卡| 粉嫩av亚洲一区二区图片| 久久精品理论片| 91在线视频在线| 国产成人日日夜夜| 激情六月婷婷久久| 天堂成人国产精品一区| 国产不卡视频在线观看| 国产成人三级在线观看| 99精品欧美一区二区蜜桃免费 | 蜜臀va亚洲va欧美va天堂| 国产精品夜夜嗨| 免费观看30秒视频久久| 成人动漫一区二区| 精品一区二区三区免费毛片爱 | 国产在线国偷精品产拍免费yy| 日韩影院免费视频| 成人视屏免费看| 国产精品影音先锋| 免费在线观看一区二区三区| 盗摄精品av一区二区三区| 国内不卡的二区三区中文字幕| 日韩经典中文字幕一区| 波多野结衣在线一区| 国产精品亚洲专一区二区三区 | 精品一二三四区| 日本欧美一区二区在线观看| 91丝袜国产在线播放| 成人免费看的视频| 成人免费看视频| 国产99久久久精品| 丁香六月综合激情| 成人美女视频在线观看| 国产成人综合自拍| 国产·精品毛片| 国产suv精品一区二区883| 国产乱一区二区| 国产精品一区二区91| 国产一区二区免费在线| 国产最新精品精品你懂的| 狠狠色丁香久久婷婷综合丁香| 久久精品国产77777蜜臀| 日本美女一区二区三区视频| 视频精品一区二区| 全国精品久久少妇| 久久国产精品99久久人人澡| 久久99九九99精品| 国产自产高清不卡| 国产黄色91视频| 成人av资源网站| 91农村精品一区二区在线| 91免费看视频| 蜜臀a∨国产成人精品| 精品一二三四区| 国产成人在线电影| 99天天综合性| 免费观看30秒视频久久| 国产在线精品国自产拍免费| 国产风韵犹存在线视精品| 不卡一区二区三区四区| 日韩高清不卡一区二区三区| 久久精品二区亚洲w码| 国产裸体歌舞团一区二区| 国产ts人妖一区二区| 97成人超碰视| 久久99久久久久久久久久久| 国产成人啪免费观看软件| 95精品视频在线| 狠狠色狠狠色合久久伊人| 大尺度一区二区| 秋霞午夜鲁丝一区二区老狼| 国产一区视频导航| 成人h精品动漫一区二区三区| 日本免费新一区视频| 国产精品亚洲第一| 99re成人精品视频| 激情图片小说一区| 不卡一区在线观看| 精品一区二区三区av| av中文字幕一区| 麻豆久久久久久| 成人av片在线观看| 激情久久久久久久久久久久久久久久| 成人午夜精品一区二区三区| 免费在线观看一区二区三区| 粉嫩蜜臀av国产精品网站| 另类专区欧美蜜桃臀第一页| 成人免费视频免费观看| 精品一区二区免费看| 天堂资源在线中文精品 | 久久精品99久久久| 99久久精品免费看| 黑人巨大精品欧美一区| 99久久精品免费| 国产不卡免费视频| 国内精品伊人久久久久av影院 | 天堂午夜影视日韩欧美一区二区| 久久99最新地址| 91蜜桃传媒精品久久久一区二区| 国产资源精品在线观看| 日韩精品成人一区二区三区| 成人激情免费电影网址| 国产一区二区在线视频| 六月丁香综合在线视频| 日韩精品国产欧美| 91在线视频官网| 大桥未久av一区二区三区中文| 精品一区二区日韩| 老色鬼精品视频在线观看播放| 99国产一区二区三精品乱码| 成人一级视频在线观看| 国产伦理精品不卡| 国产一区二区三区在线观看免费视频 | 男女男精品视频网| 精品影院一区二区久久久| 91在线视频免费观看| 成人免费高清视频| 国产ts人妖一区二区| 国产揄拍国内精品对白| 麻豆成人综合网| 看片的网站亚洲| 麻豆久久一区二区| 男女男精品视频| 日本aⅴ精品一区二区三区| 99精品黄色片免费大全| 91在线视频在线| 91蜜桃婷婷狠狠久久综合9色| 97久久超碰精品国产| 91免费版在线| 日韩电影免费在线看| 蜜臀久久久99精品久久久久久| 日韩精品成人一区二区三区| 日本不卡视频在线| 美女mm1313爽爽久久久蜜臀| 另类小说综合欧美亚洲| 老司机午夜精品| 韩国欧美一区二区| 国产98色在线|日韩| aaa亚洲精品一二三区| 视频一区二区三区在线| 日本不卡不码高清免费观看| 蜜臀av一区二区| 国产麻豆9l精品三级站| 大胆亚洲人体视频| 天堂久久一区二区三区| 久久99精品久久久久|