day10作业

1.编写函数,求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.编写一个函数,求多个数中的最大值

def max1(*n: int):
  """
  求输入数中的最大值
  :param n:
  :return:
  """
  max2 = max(n)
  return max2

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

3.编写一个函数,实现摇骰子的功能,打印N个骰子的点数和

import random
def sum1(n: int):
    """
   求n个骰子的点数和
   :param n:
   :return:
   """
   sum2 = 0
   num1 = 0
   d = 0
   for i in range(n):      # 几个骰子,循环几次
       d += 1
       num1 = random.randint(1, 6)     #每次产生一个1到6的随机数
       print('第%s个骰子的点数:%s' % (d, num1))
       sum2 += num1        # 进行累加

   return sum2
   s = int(input('输入骰子个数:'))

   sum3 = sum1(s)

   print('总点数为:', sum3)

4.编写一个函数,交换指定字典的key和value。
例如:dict1={'a':1, 'b':2, 'c':3} --> dict1={1:'a', 2:'b', 3:'c'}

def exchange(**dict1):
    """
    使传入的参数变为字典,并交换key和value的值,输出结果
    :param dict1:
    :return:
    """
    for i in dict1:
        s = dict1[i]
        m = i            # 使用2个变量保存当前元素的键值。
        del dict1[i]
        dict1[s] = i     # 删除这个键值对,在创建新的键值对
    return dict1
  dict2 = exchange(a=1, b=2, c=3)

  print(dict2)

5.编写一个函数,提取指定字符串中所有的字母,然后拼接在一起产生一个新的字符串
例如: 传入'12a&bc12d-+' --> 'abcd'

   def joint(*str1: str) -> str:
       """
       提取指定字符串中所有的字母,然后拼接在一起产生一个新的字符串
       :param str1:
       :return:
       """
       str2 = ''
       print(type(*str1))  # 为什么不能直接使用*str1
       str3 = str(*str1)   # 转化为字符串赋值给str3
       for i in str3:
           if 'a' <= i <= 'z' or 'A' <= i <= 'Z':
               str2 += i
       return str2         # 提取字符串中的字母,并拼接到str2上


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

6.写一个函数,求多个数的平均值

def avg(*num: int) -> int:
    """
    输入数的平均值
    :param num:
    :return:
    """
    avg1 = sum(num)/len(num)
    return avg1

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

7.写一个函数,默认求10的阶乘,也可以求其他数字的阶乘

   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函数,能够将指定字符串的首字母变成大写字母
例如: 'abc' -> 'Abc' '12asd' --> '12asd'

def capitalize(*str1: str) -> str:
    """
    提取指定字符串中所有的字母,然后拼接在一起产生一个新的字符串
    :param str1:
    :return:
    """
    str3 = str(*str1)   # 转化为字符串赋值给str3
    if 'a' <= str3[0] <= 'z':
        num1 = 65+(ord(str3[0])-97)
        list1 = list(str3)
        list1[0] = chr(num1)       # 获取第一个字母在Unicode表上对应的序号,然后在转换成大写字母的序号。
        str2 = ''.join(list1)       # 变成字符串的样式
        return str2
    else:
        return str3         # 提取字符串中的字母,并拼接到str2上

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

9 写一个自己的endswith函数,判断一个字符串是否已指定的字符串结束.
例如: 字符串1:'abc231ab' 字符串2:'ab' 函数结果为: True
字符串1:'abc231ab' 字符串2:'ab1' 函数结果为: 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函数,判断一个字符串是否是纯数字字符串
例如: '1234921' 结果: True
'23函数' 结果: False
'a2390' 结果: False

def endswith(str1: str)-> str:
    """
    判断一个字符串是否是纯数字字符串
    :param str1:
    :return:
    """
    for i in str1:        # 遍历字符串中所以的元素,只要是空或者不是纯数字元素组成的字符串输出False,否则输出True
        if not('0' <= i <= '9'):
            print('False')
            break
    else:
        if str1 == '':
            print(False)
        else:
            print('True')


endswith('12312sdfs')

11.写一个自己的upper函数,将一个字符串中所有的小写字母变成大写字母
例如: 'abH23好rp1' 结果: '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表上对应的序号,然后在转换成大写字母的序号,并修改列表的值。
        d += 1
    str4 = ''.join(list1)
    print(str4)

capitalize('sd42fg45353fa')

12.写一个自己的rjust函数,创建一个字符串的长度是指定长度,原字符串在新字符串中右对齐,剩下的部分用指定的字符填充
例如: 原字符:'abc' 宽度: 7 字符:'^' 结果: '^^^^abc'
原字符:'你好吗' 宽度: 5 字符:'0' 结果: '00你好吗'

def rjust(str1: str, wide1: int, str2: str) -> str:
    """
    创建一个字符串的长度是指定长度,原字符串在新字符串中右对齐,剩下的部分用指定的字符填充
    :param str1:
    :param wide1:
    :param str2:
    :return:
    """
    str3 = str2*(wide1-len(str1))
    print(str3+str1)


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

13.写一个自己的index函数,统计指定列表中指定元素的所有下标,如果列表中没有指定元素返回-1
例如: 列表: [1, 2, 45, 'abc', 1, '你好', 1, 0] 元素: 1 结果: 0,4,6
列表: ['赵云', '郭嘉', '诸葛亮', '曹操', '赵云', '孙权'] 元素: '赵云' 结果: 0,4
列表: ['赵云', '郭嘉', '诸葛亮', '曹操', '赵云', '孙权'] 元素: '关羽' 结果: -1

def index(list1: list, str1: str) -> str:
    """
    统计指定列表中指定元素的所有下标,如果列表中没有指定元素返回-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函数,统计指定序列中元素的个数
例如: 序列:[1, 3, 5, 6] 结果: 4
序列:(1, 34, 'a', 45, 'bbb') 结果: 5
序列:'hello w' 结果: 7

def len(sequence) -> int:
    """
    统计指定序列中元素的个数
    :param sequence:
    :return:
    """
    d = 0
    for i in sequence:
        d += 1
    print(d)

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

15.写一个自己的max函数,获取指定序列中元素的最大值。如果序列是字典,取字典值的最大值
例如: 序列:[-7, -12, -1, -9] 结果: -1
序列:'abcdpzasdz' 结果: 'z'
序列:{'小明':90, '张三': 76, '路飞':30, '小花': 98} 结果: 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:    # 当输入为全为数字的列表
        s = int(sequence[0])
        for z in sequence[1::]:
            if z > s:
                s = z
        print(s)
    else:
        s = sequence[0]     # 当输入全为字母或数字的字符串
        for z in sequence[1::]:
            if ord(z) > ord(s):
                s = z
        print(s)

max('12312312367')

16.写一个函数实现自己in操作,判断指定序列中,指定的元素是否存在
例如: 序列: (12, 90, 'abc') 元素: '90' 结果: False
序列: [12, 90, 'abc'] 元素: 90 结果: 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函数,将指定字符串中指定的旧字符串转换成指定的新字符串
例如: 原字符串: 'how are you? and you?' 旧字符串: 'you' 新字符串:'me' 结果: '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.写四个函数,分别实现求两个列表的交集、并集、差集、补集的功能

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.写一个匿名函数,判断指定的年是否是闰年

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.写一个函数将一个指定的列表中的元素逆序( 如[1, 2, 3] -> [3, 2, 1])(注意:不要使用列表自带的逆序函数)

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


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

21.写一个函数,获取指定列表中指定元素的下标(如果指定元素有多个,将每个元素的下标都返回)

例如: 列表是:[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.写一个函数,能够将一个字典中的键值对添加到另外一个字典中(不使用字典自带的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.写一个函数,能够将指定字符串中的所有的小写字母转换成大写字母;所有的大写字母转换成小写字母(不能使用字符串相关方法)

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表上对应的序号,然后在转换成大写字母的序号,并修改列表的值。
        elif 'A' <= i <= 'Z':
            num1 = 97 + (ord(str1[d]) - 65)  # # 获取字母在Unicode表上对应的序号,然后在转换成小写字母的序号,并修改列表的值。
            list1[d] = chr(num1)

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

capitalize('sdAAAAA2fg45AAAAAA53fa')

24.实现一个属于自己的items方法,可以将自定的字典转换成列表。列表中的元素是小的列表,里面是key和value (不能使用字典的items方法)

例如:{'a':1, 'b':2} 转换成 [['a', 1], ['b', 2]]

def items(dict1: dict):
    """
    将自定的字典转换成列表。列表中的元素是小的列表,里面是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.写一个函数,实现学生的添加功能:
=============添加学生================
输入学生姓名: 张胜
输入学生年龄: 23
输入学生电话: 15634223
===添加成功!
'姓名':'张胜', '年龄':23, '电话:15634223', '学号':'0001'
=====================================
1.继续
2.返回
请选择: 1
=============添加学生================
输入学生姓名: 李四
输入学生年龄: 18
输入学生电话: 157234423
===添加成功!
'姓名':'张胜', '年龄':23, '电话:15634223', '学号':'0001'
'姓名':'李四', '年龄':18, '电话:157234423', '学号':'0002'
=====================================
1.继续
2.返回
请选择:

def append1(name: str, age: int, tel: str):
    global d
    str1 = '姓名:%s,年龄:%s,电话:%s,学号:%s' % (name, age, tel, str(d).rjust(4, '0'))
    return str1


d = 0
list1 = []
while True:
    d += 1
    print("==============================添加学生==============================")
    name = input('输入姓名:')
    age = input('输入年龄:')
    tel = input('输入电话:')

    str2 = append1(name, age, tel)
    list1.append(str2)
    print("====添加成功")
    for i in list1:
        print(i)
    print("===============")
    print('1.继续')
    print('2.返回')
    num1 = int(input('请输入:'))
    if num1 == 1:
        pass
    else:
        break
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,287评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,346评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,277评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,132评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,147评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,106评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,019评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,862评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,301评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,521评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,682评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,405评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,996评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,651评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,803评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,674评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,563评论 2 352

推荐阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,380评论 0 5
  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 5,306评论 0 9
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,180评论 0 3
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,744评论 0 10
  • 0.写一个匿名函数,判断指定的年是否是闰年程序: 结果: 1.写一个函数将一个指定的列表中的元素逆序( 如[1, ...
    2333_11f6阅读 218评论 0 0