Day9_格式化字符串和函数基础

29 篇文章 0 订阅
11 篇文章 0 订阅
Day9_格式化字符串和函数基础

笔记:

格式化字符串

  1. 格式化字符串:格式占位符
"""
语法:包含格式占位符的字符串%(数据1,数据2,...)
说明:括号中数据的个数需要和格式占位符的个数保持一致
格式占位符:
%s - 任何类型数据
%d - 整数(可以转换为整数的数据)
%f - 浮点数; %.Nf - 保留N位小数
"""
  • 1).%s可以使用任意类型的数据填充(如果只有一个数据()可以省略)
  1. 格式化字符串:f-string
  • {表达式:.Nf} - 保留小数点后N位小数(4舍5入)
  • {表达式:,.Nf} - 处理银行数据
  • {表达式:.N%} - 将数转换为%制,且保留N位小数

函数基础

  1. 函数的定义:

    函数就是实现某一特定功能的代码的封装

  2. 函数的分类(根据函数是由谁来创造(定义)的来分类的)

    1. 系统函数(别人造好的机器) - 由python自带的函数,程序只需要在需要的时候调用。例如:print、input、type、…
    2. 自定义函数(自己造机器) - 由程序员自己定义的函数
  3. 定义函数

"""
语法:
def 函数名(形参列表):
    函数说明文档
    函数体
说明:
def  -  关键字;固定写法
函数名  -  程序员自己命名
          要求:是标识符、不能是关键字
          规范:见名知义(看到函数名,大概知道函数的功能)、字母都小写,多个单词之间用下划线隔开、不能使用系统名字
()      -  固定写法
形参列表  -  以'变量名1,变量名2,变量名3,...'的形式存在,变量也可以一个都没有
            这儿的一个变量就是一个形参,
            形参的作用:将函数外部的数据传递到函数内部
            一个函数需不需要形参,需要几个形参,就看实现这个函数的功能需不需要额外的数据,需要几个数据
函数说明文档 - 本质就是文档注释(相当于机器的说明书)     
函数体 -  和def保持一个缩进的一条或者多条语句,就是实现函数功能的代码段

初学者定义函数的步骤:
    第一步:确定函数功能
    第二步:根据函数功能确定函数名
    第三步:确定形参(看实现这个函数的功能需不需要额外的数据,需要几个数据)
    第四部:实现函数功能(写函数体)
    第五部:写函数说明文档
"""
  1. 调用函数(使用机器)
"""
特别重要的结论:定义函数的时候不会执行函数体,调用函数才会执行函数体
语法:
函数名(实参列表)

说明:
函数名 - 必须是已定义过的函数的函数名
() - 固定写法
实参列表 - 以'数据1,数据2,...'的形式存在


函数调用过程(非常重要!)
第一步:回到函数定义的位置
第二步:传参(用实参给形参赋值,传参的时候必须保证每个参数都有值)
第三步:执行函数体
第四步:确定函数返回值
第五步:回到函数调用的位置,接着往后执行
"""

作业:

  1. 编写一个函数,交换指定字典的key和value。

    例如:dict1={'a':1, 'b':2, 'c':3}  -->  dict1={1:'a', 2:'b', 3:'c'}  
    def exchange_dict(dict1):
        """
        交换字典数据中的键和值,如果输入数据类型不是字典会报错!
        :param dict1: 一个字典数据
        :return: None
        """
        if type(dict1) == dict:
            for x in dict1:
                key = x
                value = dict1[x]
                dict1.setdefault(value, key)
                del dict1[x]
            print(dict1)
        else:
            print('数据类型错误!')
    
  2. 编写一个函数,提取指定字符串中所有的字母,然后拼接在一起产生一个新的字符串

    例如: 传入'12a&bc12d-+'   -->  'abcd'  
    def get_letter(str1):
        """
        提取指定字符串中所有的字母,然后拼接成一个新字符串
        :param str1: 被提取的字符串
        :return: None
        """
        if type(str1) == str:
            print(''.join(x for x in str1 if 'a' <= x <= 'z' or 'A' <= x <= 'Z'))
        else:
            print('数据类型错误!')
    
  3. 写一个自己的capitalize函数,能够将指定字符串的首字母变成大写字母

    例如: 'abc' -> 'Abc'   '12asd'  --> '12asd'
    def capitalize(str1):
        """
        将指定字符串的首字母变成大写字母
        :param str1: 指定的字符串
        :return: None
        """
        if type(str1) == str:
            str0 = ''.join(chr(ord(str1[0]) - 32) if 'a' <= str1[0] <= 'z' else str1[0])
            print(f'{str0}{str1[1:]}')
        else:
            print('数据类型错误!')
    
  4. 写一个自己的endswith函数,判断一个字符串是否已指定的字符串结束

    例如: 字符串1:'abc231ab' 字符串2:'ab' 函数结果为: True
            字符串1:'abc231ab' 字符串2:'ab1' 函数结果为: False
    def endswith(str0, str1):
        """
        判断一个字符串是否已指定的字符串的结束字符串
        :param str0: 一个字符串
        :param str1: 指定的字符串
        :return: None
        """
        if type(str0) == str and type(str1) == str:
            len0 = len(str0)
            if str1[-len0:] == str0:
                print(True)
            else:
                print(False)
        else:
            print('数据类型错误!')
    
  5. 写一个自己的isdigit函数,判断一个字符串是否是纯数字字符串

    例如: '1234921'  结果: True
             '23函数'   结果: False
             'a2390'    结果: False
    def isdigit(str1):
        """
        一个字符串是否是纯数字字符串
        :param str1: 一个字符串
        :return: None
        """
        if type(str1) == str:
            for x in str1:
                if '0' <= x <= '9':
                    continue
                else:
                    print(False)
                    break
            else:
                print(True)
        else:
            print('数据类型错误!')
    
  6. 写一个自己的upper函数,将一个字符串中所有的小写字母变成大写字母

    例如: 'abH23好rp1'   结果: 'ABH23好RP1'   
    def upper(str1):
        """
        将一个字符串中所有的小写字母变成大写字母
        :param str1: 一个字符串
        :return: None
        """
        if type(str1) == str:
            print(''.join(chr(ord(x) - 32) if 'a'<= x <= 'z'else x for x in str1))
        else:
            print('数据类型错误!')
    
  7. 写一个自己的rjust函数,创建一个字符串的长度是指定长度,原字符串在新字符串中右对齐,剩下的部分用指定的字符填充

    例如: 原字符:'abc'  宽度: 7  字符:'^'    结果: '^^^^abc'
         原字符:'你好吗'  宽度: 5  字符:'0'    结果: '00你好吗'
    def rjust(str1, width, sign):
        """
        创建一个字符串的长度是指定长度,原字符串在新字符串中右对齐,剩下的部分用指定的字符填充
        :param str1: 原字符串
        :param width: 新字符串宽度
        :param sign: 填充用的字符
        :return: 
        """
        if type(str1) == str and type(width) == int and type(sign) == str:
            print(sign*(width-len(str1))+str1)
        else:
            print('数据类型错误!')    
    
  8. 写一个自己的index函数,统计指定列表中指定元素的所有下标,如果列表中没有指定元素返回-1

       例如: 列表: [1, 2, 45, 'abc', 1, '你好', 1, 0]  元素: 1   结果: 0,4,6  
            列表: ['赵云', '郭嘉', '诸葛亮', '曹操', '赵云', '孙权']  元素: '赵云'   结果: 0,4
            列表: ['赵云', '郭嘉', '诸葛亮', '曹操', '赵云', '孙权']  元素: '关羽'   结果: -1   
    def index(list0, element):
        """
        统计指定列表中指定元素的所有下标,如果列表中没有指定元素返回-1
        :param list0: 指定列表
        :param element: 指定元素
        :return: None
        """
        if type(list0) == list:
            str0 = ''
            count = 0
            for index1 in range(len(list0)):
                if list0[index1] == element:
                    str0 += str(index1) + ','
                    count += 1
            else:
                if count == 0:
                    print('-1')
                else:
                    print(str0[:-1])
        else:
            print('数据类型错误!')
    
  9. 写一个自己的len函数,统计指定序列中元素的个数

        例如: 序列:[1, 3, 5, 6]    结果: 4
             序列:(1, 34, 'a', 45, 'bbb')  结果: 5  
             序列:'hello w'    结果: 7
    def len_seq(seq):
        """
        统计指定序列中元素的个数
        :param seq: 指定序列
        :return: None
        """
        count = 0
        for x in seq:
            count += 1
        else:
            print(count)
    
  10. 写一个自己的max函数,获取指定序列中元素的最大值。如果序列是字典,取字典值的最大值

       例如: 序列:[-7, -12, -1, -9]    结果: -1   
            序列:'abcdpzasdz'    结果: 'z'  
            序列:{'小明':90, '张三': 76, '路飞':30, '小花': 98}   结果: 98
    def max_seq(seq):
        """
        指定序列如果是无下标序列,将序列转化为列表,取序列中元素的最大值
        :param seq: 指定序列
        :return: None
        """
        if type(seq) == dict:
            seq = [seq[x] for x in seq ]
        if type(seq) == set:
            seq = [x for x in seq]
        max0 = seq[0]
        for x in seq[1:]:
            if x > max0:
                max0 = x
        print(max0)
    
  11. 写一个函数实现自己in操作,判断指定序列中,指定的元素是否存在

        例如: 序列: (12, 90, 'abc')   元素: '90'     结果: False
             序列: [12, 90, 'abc']   元素: 90     结果: True     
    def in_seq(seq, element):
        """
        判断指定序列中指定元素是否存在
        :param seq: 指定序列
        :param element: 指定元素
        :return: None
        """
        count = 0
        for x in seq:
            if x == element:
                print(True)
                count += 1
        else:
            if count == 0:
                print(False)
    
  12. 写一个自己的replace函数,将指定字符串中指定的旧字符串转换成指定的新字符串

        例如: 原字符串: 'how are you? and you?'   旧字符串: 'you'  新字符串:'me'  结果: 'how are me? and me?'
    def replace_str(old, new, str0):
        """
        将指定字符串中指定的旧字符串转换成指定的新字符串
        :param old: 旧字符串
        :param new: 新字符串
        :param str0: 指定字符串
        :return: None
        """
        print(f'{new}'.join(str0.split(old)))
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值