Day10-task

作业1
1.编写函数,求1+2+3+…N的和
# 如果生成了一个新的数据,用返回值
def n_sum(nums):
    sum1 = 0
    for num in range(1, nums + 1):
        sum1 += num
    return sum1


def lcx_sum1(nums):
    return sum(range(1, nums +1))


print(n_sum(3))
print(lcx_sum1(4))
2.编写一个函数,求多个数中的最大值
def nums_max(*nums):
    return max(nums)


print(nums_max(34, 56, 8, 3))
3.编写一个函数,实现摇骰子的功能,打印N个骰子的点数和
import random


def point_sum(nums):
    sum1 = 0
    for i in range(nums):
        a = random.randint(1, 6)
        sum1 += a
        # sum1 += random.randint(1, 6)
    print(sum1)


point_sum(4)
4.编写一个函数,交换指定字典的key和value。

例如:dict1={'a':1, 'b':2, 'c':3} --> dict1={1:'a', 2:'b', 3:'c'}

dict1={'a':1, 'b':2, 'c':3}
def exchange_k_v(dictx: dict):
    # 注意:遍历删除和增加,遍历对象应该原来没有进行修改的元容器的值
    for key in dictx.copy():
        value = dictx[key]
        dictx.pop(key)
        dictx[value] = key
    print(dict1)


exchange_k_v(dict1)
5.编写一个函数,提取指定字符串中所有的字母,然后拼接在一起产生一个新的字符串

例如: 传入'12a&bc12d-+' --> 'abcd'



def extract_string(str1):
    list1 = []
    for i in str1:
        if 'A' <= i <= 'Z' or 'a' <= i <= 'z':
            list1.append(i)
    return ''.join(list1)


print(extract_string('12a&bc12d-+'))
6.写一个函数,求多个数的平均值


def nums_avg(*nums):
    sum1 = 0
    for num in nums:
        sum1 += num
    print('这些数的平均值是:', sum1 / len(nums))


nums_avg(1, 2, 3, 4, 5, 6)
7.写一个函数,默认求10的阶乘,也可以求其他数字的阶乘
def factorial(num = 10):
    sum1 = 1
    for n in range(1, num + 1):
        sum1 *= n
    print(sum1)


factorial()

**注意:以下方法不能使用系统提供的方法和函数,全部自己写逻辑 **

8.写一个自己的capitalize函数,能够将指定字符串的首字母变成大写字母

例如: 'abc' -> 'Abc' '12asd' --> '12asd'

def lcx_capitalize(str1):
    if 'a' <= str1[0] <= 'z':
        new_char = chr(ord(str1[0]) - 32)
        new_str1 = new_char + str1[1:]
        return new_str1
    else:
        return str1


print(lcx_capitalize('asd'))
9.写一个自己的endswith函数,判断一个字符串是否已指定的字符串结束

例如: 字符串1:'abc231ab' 字符串2:'ab' 函数结果为: True
字符串1:'abc231ab' 字符串2:'ab1' 函数结果为: False

def lcx_endswith(str1, str2):
    list1 = []    # 存储第一个字符串的最后几位
    list2 = []    # 存储第二个字符串的列表
    if str2 in str1:    # 如果字符串1包含字符串2就进入循环
        for i in str1[-1:-(len(str2) + 1):-1]:   # 遍历字符串1,从最后一位到字符串2的长度的那位字符
            list1.append(i)      # 依次加入列表1
        # print(list1)
        for j in str2[-1::-1]:     # 遍历字符串2 ,从最后一位开始向左遍历
            list2.append(j)        # 依次加入列表2
        # print(list2)
        if list1 == list2:       # 对列表1和列表2 进行比较
            print('True')
        else:
            print('False')
    else:
        print('False')


lcx_endswith('abc231ab', 'ab1')
def endswith(str1: str, str2: str):
    len2 = len(str2)
    end = str1[-len2:]
    return end == str2

if endswith('text.py', '.py'):
    print('是python源文件')
else:
    print('不是python源文件')
10.写一个自己的isdigit函数,判断一个字符串是否是纯数字字符串

例如: '1234921' 结果: True
'23函数' 结果: False
'a2390' 结果: False

def lcx_isdigit(str1):
    for i in str1:
        if i < '0' or i > '9':
            print('False')
            break
    else:
        print('True')


lcx_isdigit('1234921')
def lcx_isdigit1(str1):
    for char in str1:
        if not '0' <= char <= '9':
            return False
    return True


print(lcx_isdigit1('2ag4557'))
11.写一个自己的upper函数,将一个字符串中所有的小写字母变成大写字母

例如: 'abH23好rp1' 结果: 'ABH23好RP1'

def lcx_upper(str1):
    new_str1 = ''
    for char in str1:
        if 'a' <= char <= 'z':
            new_char = chr(ord(char) - 32)
            new_str1 += new_char
        else:
            new_str1 += char
    return new_str1


print(lcx_upper('abH23好rp1'))
12.写一个自己的rjust函数,创建一个字符串的长度是指定长度,原字符串在新字符串中右对齐,剩下的部分用指定的字符填充

例如: 原字符:'abc' 宽度: 7 字符:'^' 结果: '^^^^abc'
原字符:'你好吗' 宽度: 5 字符:'0' 结果: '00你好吗'

def lcx_r_just(str1: str, width: int, char: str):
    count = width - len(str1)
    return count * char + str1

print(lcx_r_just('你好吗', 5, '0'))
print(lcx_r_just('abc', 7, '^'))
13.写一个自己的index函数,统计指定列表中指定元素的所有下标,如果列表中没有指定元素返回-1

例如: 列表: [1, 2, 45, 'abc', 1, '你好', 1, 0] 元素: 1 结果: 0,4,6
列表: ['赵云', '郭嘉', '诸葛亮', '曹操', '赵云', '孙权'] 元素: '赵云' 结果: 0,4
列表: ['赵云', '郭嘉', '诸葛亮', '曹操', '赵云', '孙权'] 元素: '关羽' 结果: -1

def lcx_index(list1: list, item):
    if item not in list1:
        return -1
    indexs = []
    for x in range(len(list1)):
        if list1[x] == item:
            indexs.append(x)
    return indexs


names = ['赵云', '郭嘉', '诸葛亮', '曹操', '赵云', '孙权']
print(lcx_index(names, '赵云'))
print(lcx_index(names, '关羽'))
14.写一个自己的len函数,统计指定序列中元素的个数

例如: 序列:[1, 3, 5, 6] 结果: 4
序列:(1, 34, 'a', 45, 'bbb') 结果: 5
序列:'hello w' 结果: 7

def lcx_len(nums):
    """
    实现len函数
    :param nums: 序列
    :return:
    """
    count = 0
    for num in nums:
        count += 1
    return count


print(lcx_len('hello w'))
15.写一个自己的max函数,获取指定序列中元素的最大值。如果序列是字典,取字典值的最大值

例如: 序列:[-7, -12, -1, -9] 结果: -1
序列:'abcdpzasdz' 结果: 'z'
序列:{'小明':90, '张三': 76, '路飞':30, '小花': 98} 结果: 98

def lcx_max(seq):
    if isinstance(seq, dict):
        values = list(seq.values())
    else:
        values = list(seq)
    max1 = values[0]
    for item in values[1:]:
        if item > max1:
            max1 = item
    return max1


print(lcx_max([-7, -12, -1, -9]))
print(lcx_max('abcdpzasdz'))
print(lcx_max({'小明':90, '张三': 76, '路飞':30, '小花': 98}))
16.写一个函数实现自己in操作,判断指定序列中,指定的元素是否存在

例如: 序列: (12, 90, 'abc') 元素: '90' 结果: False
序列: [12, 90, 'abc'] 元素: 90 结果: True

def lcx_in(char, *nums):
    """
    实现in操作
    :param char: 元素
    :param nums: 序列
    :return: 
    """
    for num in nums:
        if char == num:
            print('True')
            break
    else:
        print('False')


lcx_in(90, 12, '90', 'abc')
17.写一个自己的replace函数,将指定字符串中指定的旧字符串转换成指定的新字符串

例如: 原字符串: 'how are you? and you?' 旧字符串: 'you' 新字符串:'me' 结果: 'how are me? and me?'


18.写四个函数,分别实现求两个列表的交集、并集、差集、补集的功能

作业2
1.写一个匿名函数,判断指定的年是否是闰年

2.写一个函数将一个指定的列表中的元素逆序( 如[1, 2, 3] -> [3, 2, 1])(注意:不要使用列表自带的逆序函数)
def lcx_inverted(*nums):
    """
    逆序
    :param nums:序列
    :return:
    """
    list1 = []
    list2 = list(nums)
    print(list2)
    for num in list2[-1::-1]:
        list1.append(num)
    print(list1)


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

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


4.写一个函数,能够将一个字典中的键值对添加到另外一个字典中(不使用字典自带的update方法)

5.写一个函数,能够将指定字符串中的所有的小写字母转换成大写字母;所有的大写字母转换成小写字母(不能使用字符串相关方法)
def lcx_upper_lower(str1):
    new_str1 = ''
    for char in str1:
        if 'a' <= char <= 'z':
            new_char = chr(ord(char) - 32)
            new_str1 += new_char
        elif 'A'<= char <= 'Z':
            new_char = chr(ord(char) + 32)
            new_str1 += new_char
        else:
            new_str1 += char
    print(new_str1)


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

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


7.写一个函数,实现学生的添加功能:
=============添加学生================
输入学生姓名: 张胜
输入学生年龄: 23
输入学生电话: 15634223
===添加成功!
'姓名':'张胜', '年龄':23, '电话:15634223', '学号':'0001'
=====================================
1.继续
2.返回  
请选择: 1
=============添加学生================
输入学生姓名: 李四
输入学生年龄: 18
输入学生电话: 157234423
===添加成功!
'姓名':'张胜', '年龄':23, '电话:15634223', '学号':'0001'
'姓名':'李四', '年龄':18, '电话:157234423', '学号':'0002'          
=====================================
1.继续
2.返回 
请选择:

你可能感兴趣的:(Day10-task)