day10作業(yè)

1.編寫函數(shù),求1+2+3+…N的和

def sum1(n:int):
    """
    求1到n的和
    :param n: 
    :return: 
    """
    sum2 = 0
    for i in range(1, n+1):
        sum2 += i
    return sum2


sum3 = sum1(10)
print(sum3)

2.編寫一個函數(shù)筋夏,求多個數(shù)中的最大值

def max1(*n: int):
  """
  求輸入數(shù)中的最大值
  :param n:
  :return:
  """
  max2 = max(n)
  return max2

max3 = max1(1, 2, 3, 9)
print(max3)

3.編寫一個函數(shù)扑眉,實現(xiàn)搖骰子的功能,打印N個骰子的點數(shù)和

import random
def sum1(n: int):
    """
   求n個骰子的點數(shù)和
   :param n:
   :return:
   """
   sum2 = 0
   num1 = 0
   d = 0
   for i in range(n):      # 幾個骰子基公,循環(huán)幾次
       d += 1
       num1 = random.randint(1, 6)     #每次產(chǎn)生一個1到6的隨機數(shù)
       print('第%s個骰子的點數(shù):%s' % (d, num1))
       sum2 += num1        # 進行累加

   return sum2
   s = int(input('輸入骰子個數(shù):'))

   sum3 = sum1(s)

   print('總點數(shù)為:', sum3)

4.編寫一個函數(shù)幅慌,交換指定字典的key和value。
例如:dict1={'a':1, 'b':2, 'c':3} --> dict1={1:'a', 2:'b', 3:'c'}

def exchange(**dict1):
    """
    使傳入的參數(shù)變?yōu)樽值浜涠梗⒔粨Qkey和value的值胰伍,輸出結(jié)果
    :param dict1:
    :return:
    """
    for i in dict1:
        s = dict1[i]
        m = i            # 使用2個變量保存當前元素的鍵值。
        del dict1[i]
        dict1[s] = i     # 刪除這個鍵值對秒咨,在創(chuàng)建新的鍵值對
    return dict1
  dict2 = exchange(a=1, b=2, c=3)

  print(dict2)

5.編寫一個函數(shù)喇辽,提取指定字符串中所有的字母,然后拼接在一起產(chǎn)生一個新的字符串
例如: 傳入'12a&bc12d-+' --> 'abcd'

   def joint(*str1: str) -> str:
       """
       提取指定字符串中所有的字母雨席,然后拼接在一起產(chǎn)生一個新的字符串
       :param str1:
       :return:
       """
       str2 = ''
       print(type(*str1))  # 為什么不能直接使用*str1
       str3 = str(*str1)   # 轉(zhuǎn)化為字符串賦值給str3
       for i in str3:
           if 'a' <= i <= 'z' or 'A' <= i <= 'Z':
               str2 += i
       return str2         # 提取字符串中的字母菩咨,并拼接到str2上


   str4 = joint('2a3ASSA12fdfsd3')
   print(str4)

6.寫一個函數(shù),求多個數(shù)的平均值

def avg(*num: int) -> int:
    """
    輸入數(shù)的平均值
    :param num:
    :return:
    """
    avg1 = sum(num)/len(num)
    return avg1

avg1 = avg(1, 2, 3, 4, 9, 10)
print(avg1)

7.寫一個函數(shù)陡厘,默認求10的階乘抽米,也可以求其他數(shù)字的階乘

   def factorial(num: int) -> int:
       """
       求num的階乘
       :param num: 
       :return: 
       """
       num2 = 1
       for i in range(1, num+1):
           num2 *= i     # 累乘
       return num2


   factorial1 = factorial(10)
   print(factorial1)

8.寫一個自己的capitalize函數(shù),能夠?qū)⒅付ㄗ址氖鬃帜缸兂纱髮懽帜?br> 例如: 'abc' -> 'Abc' '12asd' --> '12asd'

def capitalize(*str1: str) -> str:
    """
    提取指定字符串中所有的字母糙置,然后拼接在一起產(chǎn)生一個新的字符串
    :param str1:
    :return:
    """
    str3 = str(*str1)   # 轉(zhuǎn)化為字符串賦值給str3
    if 'a' <= str3[0] <= 'z':
        num1 = 65+(ord(str3[0])-97)
        list1 = list(str3)
        list1[0] = chr(num1)       # 獲取第一個字母在Unicode表上對應(yīng)的序號云茸,然后在轉(zhuǎn)換成大寫字母的序號。
        str2 = ''.join(list1)       # 變成字符串的樣式
        return str2
    else:
        return str3         # 提取字符串中的字母谤饭,并拼接到str2上

str4 = capitalize('g34fdgd23')
print(str4)

9 寫一個自己的endswith函數(shù)标捺,判斷一個字符串是否已指定的字符串結(jié)束.
例如: 字符串1:'abc231ab' 字符串2:'ab' 函數(shù)結(jié)果為: True
字符串1:'abc231ab' 字符串2:'ab1' 函數(shù)結(jié)果為: False

   def endswith(str1: str, str2: str):
       """
       判斷一個字符串是否包含另一個字符串
       :param str1:
       :param str2:
       :return:
       """
       count1 = str1.count(str2)
       if count1 == 0:
           print('False')
       else:
           print('True')


   endswith('adadsad', 'adsd')

10.寫一個自己的isdigit函數(shù)懊纳,判斷一個字符串是否是純數(shù)字字符串
例如: '1234921' 結(jié)果: True
'23函數(shù)' 結(jié)果: False
'a2390' 結(jié)果: False

def endswith(str1: str)-> str:
    """
    判斷一個字符串是否是純數(shù)字字符串
    :param str1:
    :return:
    """
    for i in str1:        # 遍歷字符串中所以的元素,只要是空或者不是純數(shù)字元素組成的字符串輸出False亡容,否則輸出True
        if not('0' <= i <= '9'):
            print('False')
            break
    else:
        if str1 == '':
            print(False)
        else:
            print('True')


endswith('12312sdfs')

11.寫一個自己的upper函數(shù)嗤疯,將一個字符串中所有的小寫字母變成大寫字母
例如: 'abH23好rp1' 結(jié)果: 'ABH23好RP1

def capitalize(str1: str) -> str:
    """
    將一個字符串中所有的小寫字母變成大寫字母
    :param str1:
    :return:
    """
    d = 0
    list1 = list(str1)
    for i in list1:
        if 'a' <= i <= 'z':
            num1 = 65+(ord(str1[d])-97)
            list1[d] = chr(num1)  # 獲取字母在Unicode表上對應(yīng)的序號,然后在轉(zhuǎn)換成大寫字母的序號,并修改列表的值闺兢。
        d += 1
    str4 = ''.join(list1)
    print(str4)

capitalize('sd42fg45353fa')

12.寫一個自己的rjust函數(shù)茂缚,創(chuàng)建一個字符串的長度是指定長度,原字符串在新字符串中右對齊屋谭,剩下的部分用指定的字符填充
例如: 原字符:'abc' 寬度: 7 字符:'^' 結(jié)果: '^^^^abc'
原字符:'你好嗎' 寬度: 5 字符:'0' 結(jié)果: '00你好嗎'

def rjust(str1: str, wide1: int, str2: str) -> str:
    """
    創(chuàng)建一個字符串的長度是指定長度脚囊,原字符串在新字符串中右對齊,剩下的部分用指定的字符填充
    :param str1:
    :param wide1:
    :param str2:
    :return:
    """
    str3 = str2*(wide1-len(str1))
    print(str3+str1)


rjust('abc', 10, '*')

13.寫一個自己的index函數(shù)桐磁,統(tǒng)計指定列表中指定元素的所有下標悔耘,如果列表中沒有指定元素返回-1
例如: 列表: [1, 2, 45, 'abc', 1, '你好', 1, 0] 元素: 1 結(jié)果: 0,4,6
列表: ['趙云', '郭嘉', '諸葛亮', '曹操', '趙云', '孫權(quán)'] 元素: '趙云' 結(jié)果: 0,4
列表: ['趙云', '郭嘉', '諸葛亮', '曹操', '趙云', '孫權(quán)'] 元素: '關(guān)羽' 結(jié)果: -1

def index(list1: list, str1: str) -> str:
    """
    統(tǒng)計指定列表中指定元素的所有下標,如果列表中沒有指定元素返回-1
    :param list1:
    :param str1:
    :return:
    """
    d = 0
    list2 = []
    for i in list1:
        if i == str1:
            list2.append(str(d))
        d += 1
    str4 = ','.join(list2)
    if list2 == []:
        print('-1')
    else:
        print(str4)

index([1, 2, 3, 'a', '趙云', 'a', 2, '趙云', 1], 1)

14.寫一個自己的len函數(shù)所意,統(tǒng)計指定序列中元素的個數(shù)
例如: 序列:[1, 3, 5, 6] 結(jié)果: 4
序列:(1, 34, 'a', 45, 'bbb') 結(jié)果: 5
序列:'hello w' 結(jié)果: 7

def len(sequence) -> int:
    """
    統(tǒng)計指定序列中元素的個數(shù)
    :param sequence:
    :return:
    """
    d = 0
    for i in sequence:
        d += 1
    print(d)

len([1, 2, 3, 'sdfs'])

15.寫一個自己的max函數(shù)淮逊,獲取指定序列中元素的最大值。如果序列是字典扶踊,取字典值的最大值
例如: 序列:[-7, -12, -1, -9] 結(jié)果: -1
序列:'abcdpzasdz' 結(jié)果: 'z'
序列:{'小明':90, '張三': 76, '路飛':30, '小花': 98} 結(jié)果: 98

def max(sequence):
    """
    獲取指定序列中元素的最大值泄鹏。如果序列是字典,取字典值的最大值
    :param sequence:
    :return:
    """
    if type(sequence) == dict:      # 當輸入為字典時秧耗,求最大值
        list1 = []
        for i in sequence:
            list1.append(sequence[i])
        print(list1)
        s = int(list1[0])
        for z in list1[1::]:
            if z > s:
                s = z
        print(s)
    elif type(sequence[0]) == int:    # 當輸入為全為數(shù)字的列表
        s = int(sequence[0])
        for z in sequence[1::]:
            if z > s:
                s = z
        print(s)
    else:
        s = sequence[0]     # 當輸入全為字母或數(shù)字的字符串
        for z in sequence[1::]:
            if ord(z) > ord(s):
                s = z
        print(s)

max('12312312367')

16.寫一個函數(shù)實現(xiàn)自己in操作备籽,判斷指定序列中,指定的元素是否存在
例如: 序列: (12, 90, 'abc') 元素: '90' 結(jié)果: False
序列: [12, 90, 'abc'] 元素: 90 結(jié)果: True

def cunzai(sequence, str1):
    """
    判斷指定序列中分井,指定的元素是否存在
    :param sequence:
    :param str1:
    :return:
    """
    for i in sequence:
        if i == str1:
            print(True)
            break
    else:
        print(False)

cunzai((1,2,3,90),'90')

17.寫一個自己的replace函數(shù)车猬,將指定字符串中指定的舊字符串轉(zhuǎn)換成指定的新字符串
例如: 原字符串: 'how are you? and you?' 舊字符串: 'you' 新字符串:'me' 結(jié)果: 'how are me? and me?'`

def replace(str1: str, str2: str, str3: str):
    d = 0
    s = 0
    str5 = ''
    list4 = []
    for a in str1:
        d += 1
        if a == str2[0]:
            if str1[d-1:d-1+len(str2)] == str2:
                list4.append(d-1)
    for i in list4:
        if i == list4[-1]:
            str5 = str5 + str1[s+len(str2):i:]+str3+str1[i+len(str3):-1:]
        else:
            if i == list4[0]:
                str5 = str5 + str1[s:i:]+str3
            else:
                str5 = str5 + str1[s+len(str2):i:] + str3
        s = i
    print(str5)


replace('you and you yo you sd youfds', 'you', 'me')

18.寫四個函數(shù),分別實現(xiàn)求兩個列表的交集尺锚、并集珠闰、差集、補集的功能

def bingji(list1: list, list2: list):
    list3 = list1+list2
    print(list3)
    
    
bingji([1, 2, 3, 4, 5, 5], [4, 5, 5, 5, 8])

def jiaoji(list1: list, list2: list):
    list3 = []
    list4 = []
    for i in list1:
        if i in list2:
            list3.append(i)
    for z in list2:
        if z in list1:
            list4.append(z)
    print(list3+list4)
jiaoji([1, 2, 3, 4, 5, 5], [4, 5, 5, 5, 8])

def buji(list1: list, list2: list):
    list3 = []
    list4 = []
    for i in list1:
        if i not in list2:
            list3.append(i)

    for z in list2:
        if z not in list1:
            list4.append(z)
    print(list3 + list4)
buji([1, 2, 3, 4, 5, 5], [4, 5, 5, 5, 8])

def chaji(list1: list, list2: list):
    list3 = []
    for i in list1:
        if i not in list2:
            list3.append(i)
    print(list3)
chaji([1, 2, 3, 4, 5, 5], [4, 5, 5, 5, 8])

19.寫一個匿名函數(shù)瘫辩,判斷指定的年是否是閏年

def years(num: int):
    """
    判斷指定的年是否是閏年  
    :param num:
    :return:
    """
    if (num % 4 == 0 and num % 100 != 0) or num % 400 == 0:
        print('輸入的年份為閏年')
    else:
        print('輸入的年份不為閏年')


years(2001)

20.寫一個函數(shù)將一個指定的列表中的元素逆序( 如[1, 2, 3] -> [3, 2, 1])(注意:不要使用列表自帶的逆序函數(shù))

def reversed(list1: list):
    """
    將一個指定的列表中的元素逆序
    :param list1:
    :return:
    """
    list2 = []
    for i in list1[::-1]:
        list2.append(i)
    print(list2)


reversed([1, 2, 3, 4])

21.寫一個函數(shù)伏嗜,獲取指定列表中指定元素的下標(如果指定元素有多個,將每個元素的下標都返回)

例如: 列表是:[1, 3, 4, 1] ,元素是1, 返回:0,3

def appoint(list1: list, num):
    """
    獲取指定列表中指定元素的下標
    :param list1:
    :param num:
    :return:
    """
    d = 0
    list2 = []
    for i in list1:
        if i == num:
            list2.append(str(d))
        d += 1
    str2 = ','.join(list2)

    print(str2)


appoint([1, 2, 3, 4, 5, 1, 1], 1)

22.寫一個函數(shù)伐厌,能夠?qū)⒁粋€字典中的鍵值對添加到另外一個字典中(不使用字典自帶的update方法)

def update(dict1: dict, dict2: dict):
    """
    將一個字典中的鍵值對添加到另外一個字典中
    :param dict1:
    :param dict2:
    :return:
    """
    for i in dict1:
        dict2[i] = dict1[i]

    print(dict2)


update({1: 'a', 2: 'b'}, {3: 'c', 4: 'd', 5: 'e'})

23.寫一個函數(shù)承绸,能夠?qū)⒅付ㄗ址械乃械男懽帜皋D(zhuǎn)換成大寫字母;所有的大寫字母轉(zhuǎn)換成小寫字母(不能使用字符串相關(guān)方法)

def capitalize(str1: str) -> str:
    """
    將指定字符串中的所有的小寫字母轉(zhuǎn)換成大寫字母挣轨;所有的大寫字母轉(zhuǎn)換成小寫字母
    :param str1:
    :return:
    """
    d = 0
    list1 = list(str1)
    for i in list1:
        if 'a' <= i <= 'z':
            num1 = 65+(ord(str1[d])-97)
            list1[d] = chr(num1)  # 獲取字母在Unicode表上對應(yīng)的序號军熏,然后在轉(zhuǎn)換成大寫字母的序號,并修改列表的值。
        elif 'A' <= i <= 'Z':
            num1 = 97 + (ord(str1[d]) - 65)  # # 獲取字母在Unicode表上對應(yīng)的序號卷扮,然后在轉(zhuǎn)換成小寫字母的序號,并修改列表的值荡澎。
            list1[d] = chr(num1)

        d += 1
    str4 = ''.join(list1)
    print(str4)

capitalize('sdAAAAA2fg45AAAAAA53fa')

24.實現(xiàn)一個屬于自己的items方法均践,可以將自定的字典轉(zhuǎn)換成列表。列表中的元素是小的列表摩幔,里面是key和value (不能使用字典的items方法)

例如:{'a':1, 'b':2} 轉(zhuǎn)換成 [['a', 1], ['b', 2]]

def items(dict1: dict):
    """
    將自定的字典轉(zhuǎn)換成列表浊猾。列表中的元素是小的列表,里面是key和value
    :param dict1:
    :return:
    """
    list1 = []
    list2 = []
    for i in dict1:
        list1.append(i)
        list1.append(dict1[i])
        list2.append(list1)
        list1 = []
    print(list2)


items({1: 'a', 2: 'b', 'a': 'sfsd'})

25.寫一個函數(shù)热鞍,實現(xiàn)學(xué)生的添加功能:
=============添加學(xué)生================
輸入學(xué)生姓名: 張勝
輸入學(xué)生年齡: 23
輸入學(xué)生電話: 15634223
===添加成功!
'姓名':'張勝', '年齡':23, '電話:15634223', '學(xué)號':'0001'
=====================================
1.繼續(xù)
2.返回
請選擇: 1
=============添加學(xué)生================
輸入學(xué)生姓名: 李四
輸入學(xué)生年齡: 18
輸入學(xué)生電話: 157234423
===添加成功衔彻!
'姓名':'張勝', '年齡':23, '電話:15634223', '學(xué)號':'0001'
'姓名':'李四', '年齡':18, '電話:157234423', '學(xué)號':'0002'
=====================================
1.繼續(xù)
2.返回
請選擇:

def append1(name: str, age: int, tel: str):
    global d
    str1 = '姓名:%s,年齡:%s,電話:%s,學(xué)號:%s' % (name, age, tel, str(d).rjust(4, '0'))
    return str1


d = 0
list1 = []
while True:
    d += 1
    print("==============================添加學(xué)生==============================")
    name = input('輸入姓名:')
    age = input('輸入年齡:')
    tel = input('輸入電話:')

    str2 = append1(name, age, tel)
    list1.append(str2)
    print("====添加成功")
    for i in list1:
        print(i)
    print("===============")
    print('1.繼續(xù)')
    print('2.返回')
    num1 = int(input('請輸入:'))
    if num1 == 1:
        pass
    else:
        break
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末薇宠,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子艰额,更是在濱河造成了極大的恐慌澄港,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件柄沮,死亡現(xiàn)場離奇詭異回梧,居然都是意外死亡,警方通過查閱死者的電腦和手機祖搓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進店門狱意,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人拯欧,你說我怎么就攤上這事详囤。” “怎么了镐作?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵藏姐,是天一觀的道長。 經(jīng)常有香客問我该贾,道長羔杨,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任杨蛋,我火速辦了婚禮兜材,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘六荒。我一直安慰自己护姆,他們只是感情好,可當我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布掏击。 她就那樣靜靜地躺著卵皂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪砚亭。 梳的紋絲不亂的頭發(fā)上灯变,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天殴玛,我揣著相機與錄音,去河邊找鬼添祸。 笑死滚粟,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的刃泌。 我是一名探鬼主播凡壤,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼耙替!你這毒婦竟也來了亚侠?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤俗扇,失蹤者是張志新(化名)和其女友劉穎硝烂,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體铜幽,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡滞谢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了除抛。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片狮杨。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖到忽,靈堂內(nèi)的尸體忽然破棺而出禾酱,到底是詐尸還是另有隱情,我是刑警寧澤绘趋,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布颤陶,位于F島的核電站,受9級特大地震影響陷遮,放射性物質(zhì)發(fā)生泄漏滓走。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一帽馋、第九天 我趴在偏房一處隱蔽的房頂上張望搅方。 院中可真熱鬧,春花似錦绽族、人聲如沸姨涡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽涛漂。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間匈仗,已是汗流浹背瓢剿。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留悠轩,地道東北人间狂。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像火架,于是被迫代替她去往敵國和親鉴象。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,779評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,381評論 0 5
  • ORA-00001: 違反唯一約束條件 (.) 錯誤說明:當在唯一索引所對應(yīng)的列上鍵入重復(fù)值時何鸡,會觸發(fā)此異常炼列。 O...
    我想起個好名字閱讀 5,311評論 0 9
  • 概要 64學(xué)時 3.5學(xué)分 章節(jié)安排 電子商務(wù)網(wǎng)站概況 HTML5+CSS3 JavaScript Node 電子...
    阿啊阿吖丁閱讀 9,196評論 0 3
  • 一、Python簡介和環(huán)境搭建以及pip的安裝 4課時實驗課主要內(nèi)容 【Python簡介】: Python 是一個...
    _小老虎_閱讀 5,744評論 0 10
  • 0.寫一個匿名函數(shù)音比,判斷指定的年是否是閏年程序: 結(jié)果: 1.寫一個函數(shù)將一個指定的列表中的元素逆序( 如[1, ...
    2333_11f6閱讀 218評論 0 0