Python基础教程(二)字符串和函数

news2025/1/9 14:53:23

6.字符串

6.1 字符串的表示方式

6.1.1 普通字符串

普通字符串指用单引号('')或双引号(”")括起来的字符串。例如:'Hello'或"Hello"

>>> 'Hello'
'Hello'
>>> "Hello"
'Hello'
>>> s='\u0048\u0065\u006c\u006c\u006f'
>>> s
'Hello'
>>> "Hello'world"
"Hello'world"
>>> 'Hello"world'
'Hello"world'

6.1.2 原始字符串

在 Python 中,以字母 r 或者 R 作为前缀的字符串,例如 r'...'和R'...',被称为原始字符串。

>>> s='hello\tworld\nPython\t3'
>>> print(s)
hello	world
Python	3
>>> s=r'hello\tworld\nPython\t3'
>>> print(s)
hello\tworld\nPython\t3

6.1.3 长字符串

使用三个单引号(''')或三个双引号(""")括起来.

>>> s='''
        xxx
        bfdzbd
        dfbd
        dfbd
        '''
>>> s
'\n        xxx\n        bfdzbd\n        dfbd\n        dfbd\n        '
>>> print(s)

        xxx
        bfdzbd
        dfbd
        dfbd

6.2 字符串与数字相互转换

6.2.1 将字符串转换为数字

>>> int("10")
10
>>> int("10.2")    #类型不同不能转换
Traceback (most recent call last):
  File "<pyshell>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '10.2'
>>> float("10.2")
10.2
>>> int("ab")    #类型不同不能转换
Traceback (most recent call last):
  File "<pyshell>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'ab'
>>> int("ab",16)    #按十六进制进行转换
171

6.2.2 将数字转换为字符串

>>> str(12)
'12'
>>> str(12.3)
'12.3'
>>> str(True)
'True'

6.3 格式化字符串

Python的字符串可通过占位符%、format ()方法和f-strings三种方式实现格式化输出。

6.3.1 占位符%

>>> name='xiaoqian'
>>> 'nihao,wojiao%s' % name
'nihao,wojiaoxiaoqian'
>>> age=20
>>> 'nihao,wojiao%s,今年%d岁'%(name,age)
'nihao,wojiaoxiaoqian,今年20岁'

6.3.2 format()方法

<字符串>.format (<参数列表>)

>>> name='小强'
>>> age=20
>>> '你好,我叫{},今年我{}岁了。'.format(name,age)
'你好,我叫小强,今年我20岁了。'
>>> '你好,我叫{1},今年我{0}岁了。'.format(age,name)    #可以指定参数序号顺序
'你好,我叫小强,今年我20岁了。'

format (方法还可以对数字进行格式化,包括保留n位小数、数字补齐和显示百分比。
①保留 n位小数。格式为“{:.nf}”
②数字补齐。格式为“{:m>nd]”,其中m 表示补齐的数字,n 表示补齐后数字的长度,>表示在原数字左侧进行补充。
③显示百分比。可以将数字以百分比形式显示。其格式为“{:.n%)”,其中n 表示保留的小数位。

>>> pi=3.1415
>>> '{:.2f}'.format(pi)
'3.14'
>>> num=1
>>> '{:0>3d}'.format(num)
'001'
>>> num
1
>>> num=0.1
>>> '{:.0%}'.format(num)
'10%'

6.3.3 f-strings

>>> addr='广州'
>>> f'欢迎来到{addr}'
'欢迎来到广州'
>>> name='小强'
>>> age=20
>>> gender='男'
>>> f'我的名字是{name},今年{age}岁,性别{gender}。'
'我的名字是小强,今年20岁,性别男。'

6.4 操作字符串

6.4.1 字符串拼接

>>> str_one='人生苦短,'
>>> str_two='我用python。'
>>> str_one+str_two
'人生苦短,我用python。'
>>> str_three=12
>>> str_one+str_three    #类型要一样
Traceback (most recent call last):
  File "<pyshell>", line 1, in <module>
TypeError: can only concatenate str (not "int") to str
>>> str_one+str(str_three)
'人生苦短,12'

6.4.2 字符串查找

str.find(sub[,start[,end]])查找子字符串,在索引start到end之间查找子字符串sub,如果找到,则返回最左端位置的索引;如果没有找到,则返回-1。

6.4.3 字符串替换

str.replace(old,new, count=None)字符串替换,new子字符串替换old子字符串。count参数指定了替换old子字符串的个数,count被省略,则替换所有old子字符串。

>>> word='我是小强,我今年20岁。'
>>> word.replace('我','他')
'他是小强,他今年20岁。'
>>> word.replace('我','他',1)
'他是小强,我今年20岁。'
>>> word.replace('他','你')
'我是小强,我今年20岁。'

 6.4.4 字符串分割

str.splite(sep=None,maxsplit=-1),使用sep子字符串分割字符串str,返回一个分割以后的字符串列表。maxsplit是最大分割次数,如果maxsplit被省略,则表示不限制分割次数。

>>> word="1 2 3 4 5"
>>> word.split()
['1', '2', '3', '4', '5']
>>> word="a,b,c,d,e"
>>> word.split(',')
['a', 'b', 'c', 'd', 'e']
>>> word.split(',',3)
['a', 'b', 'c', 'd,e']

 6.4.5 去除字符串两侧空格

str.strip(chars=None),一般用于去除字符串两侧的空格,参数chars用于设置要去除的字符,默认要去除的字符为空格

>>> word=' strip '
>>> word.strip()
'strip'
>>> word='**strip*'
>>> word.strip('*')
'strip'

 7.函数

7.1 定义函数

def 函数名([参数列表]):
        ["函数文档字符串"]
        函数体
        [return 语句]

>>> def rect_area():
    print("*" * 13)
    print('长方形面积:%d'%(12*2))
    print("*" * 13)
    
>>> rect_area    #函数地址
<function rect_area at 0x0391C270>
>>> rect_area()    #函数调用
*************
长方形面积:24
*************
>>> def rect_area(width,heigth):
    area=width*heigth
    return area

>>> print(rect_area(10,2))
20

 7.2 调用函数

函数名([参数列表])

>>> def rect_area():
    print("*" * 13)
    print('长方形面积:%d'%(12*2))
    print("*" * 13)
    
>>> rect_area    #函数地址
<function rect_area at 0x0391C270>
>>> rect_area()    #函数调用
*************
长方形面积:24
*************

7.3 函数参数传递

7.3.1 位置参数 

>>> def division(num_one,num_two):
    print(num_one/num_two)
    
>>> division(6,2)    #传递的参数与定义的参数一一对应
3.0

7.3.2 关键字参数 

>>> def division(num_one,num_two):
    print(num_one/num_two)
    
>>> division(num_one=10,num_two=2)
5.0

 7.3.3 默认参数

默认的参数要放到参数列表的最后面,否则会报错

>>> def info(name,age,sex='男'):
    print(f'姓名:{name}')
    print(f'年龄:{age}')
    print(f'性别:{sex}')
    
>>> info(name='xiao',age=20)
姓名:xiao
年龄:20
性别:男
>>> info('xiao',20)
姓名:xiao
年龄:20
性别:男
>>> info(name='xiao',age=20,sex='女')
姓名:xiao
年龄:20
性别:女
>>> def info(name,sex='男',age):
    print(f'姓名:{name}')
    print(f'年龄:{age}')
    print(f'性别:{sex}')
    
  File "<pyshell>", line 1
SyntaxError: non-default argument follows default argument

 7.3.4 不定长参数

def 函数名([formal_args,] *args, **kwargs):        #两个参数可以同时存在
        ["函数文档字符串"]
        函数体
        [return 语句]

①*args:接收的参数按原始方式保存

>>> def test(*args):
    print(args)
    
>>> test(1,2,3,'a','b')
(1, 2, 3, 'a', 'b')

②**kwargs:接收的参数按字段(键值对)方式保存

>>> def test(**kwargs):
    print(kwargs)
    
>>> test(a=1,b=2,c=3,d='a',e='b')
{'a': 1, 'b': 2, 'c': 3, 'd': 'a', 'e': 'b'}

 7.4 变量作用域

7.4.1 局部变量

>>> def use_var():
    name='python'
    print(name)
    
>>> use_var()
python
>>> print(name)   #name是局部变量,作用在use_var函数内
Traceback (most recent call last):
  File "<pyshell>", line 1, in <module>
NameError: name 'name' is not defined
>>> 

 7.4.2 全局变量

>>> count=10    #定义一个全局变量
>>> def use_var():
    print(count)
    
>>> use_var()
10
>>> def use_var():
    global count        #声明count是全局变量,不声明会报错
    count+=10
    print(count)
    
>>> use_var()
20
>>> def use_var():
    count+=10
    print(count)
    
>>> use_var()
Traceback (most recent call last):
  File "<pyshell>", line 1, in <module>
  File "<pyshell>", line 2, in use_var
UnboundLocalError: local variable 'count' referenced before assignment
>>> print(count)
20

 7.5 函数特殊形式

7.5.1 匿名函数

匿名函数是一种不需要命名的函数。它通常用于简单的函数操作,可以在需要时直接定义和使用,而不需要为其分配一个特定的名称。匿名函数在很多编程语言中都存在,例如Python、JavaScript和Ruby等。在Python中,使用lambda关键字来定义匿名函数。

lambda [argl [,arg2,...argn]]:expression

[argl [,arg2,...argn]]:参数列表

expression:单一的函数表达式,用于实现简单的功能

>>> area=lambda a,h:(a*h)*0.5
>>> print(area)
<function <lambda> at 0x0380EBB8>
>>> print(area(3,4))
6.0

 7.5.2 递归函数

递归函数是指在函数的定义中使用函数自身的一种编程技巧。简单来说,递归函数是通过调用自身来解决问题的函数。

>>> def factorial(num):
    if num==1:
        return 1
    else:
        return num*factorial(num-1)
    
>>> factorial(5)
120

 7.6 常用内置函数

abs(): 计算绝对值,其参数必须是数字类型。
len(): 返回序列对象 (字符串、列表、元组等) 的长度。
map(): 根据提供的函数对指定的序列做映射。
help(): 用于查看函数或模块的使用说明。
ord(): 用于返回 Unicode 字符对应的码值。
chr():与 ord0功能相反,用于返回码值对应的 Unicode 字符。
filter(): 用于过滤序列,返回由符合条件的元素组成的新列表

>>> abs(-5)
5
>>> abs(3.14)
3.14
>>> len('python')
6
>>> ord('A')
65
>>> chr(65)
'A'
>>> help(len)
Help on built-in function len in module builtins:

len(obj, /)
    Return the number of items in a container.

>>> 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1969407.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Oracle19c数据库system密码锁定

一、在oracle 19c数据库中&#xff0c;cdb中system用户被锁定&#xff0c;locked 二、所在的pdb中的system用户状态是正常的&#xff0c;但不可用&#xff0c;连接的时候提示账号已锁定 三、解决 在cdb中将system用户解锁。 alter user system account unlock;

LeetCode面试150——45跳跃游戏II

题目难度&#xff1a;中等 默认优化目标&#xff1a;最小化平均时间复杂度。 Python默认为Python3。 目录 1 题目描述 2 题目解析 3 算法原理及代码实现 3.1 反向查找 3.2 正向查找 参考文献 1 题目描述 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]…

使用 Java 8 的 BiPredicate 和 Stream API 进行数据过滤和分组

在本文中&#xff0c;我们将学习如何使用 Java 8 的 BiPredicate 和 Stream API 来进行数据过滤和分组。我们将通过一个具体的例子来演示这一过程&#xff0c;例子中包含学生成绩的筛选和基于考试时间段的分组。 案例介绍 我们有两个实体类&#xff1a;StudentScore 和 ExamT…

满客宝智慧食堂系统 selectUserByOrgId 未授权访问漏洞复现

0x01 产品简介 满客宝智慧食堂系统由正奇晟业&#xff08;北京&#xff09;科技有限公司开发&#xff0c;旨在通过科技手段提升食堂的服务水平和就餐体验。该系统支持多种食堂就餐形式&#xff0c;如自选餐、自助餐、档口就餐、预订取餐等&#xff0c;满足不同场景下的餐饮需求…

从理论到实践网络编程模型:(BIO、NIO、AIO)同步与异步模型的原理与应用 (四)

我是写Java的就用Java及所需要的基础来写的本篇文章&#xff0c;其他语言的讲解和应用暂时也不会&#xff0c;欢迎大佬在评论区指导&#xff0c;给出其他语言的讲解分析与应用 Java数据传输字符流和字节流 java.io 是 Java 编程语言中的一个包&#xff0c;主要用于输入和输出&…

Linux 和 Unix 的关系

Linux 和 Unix 的关系 2.2.1unix 是怎么来的 2.2.2Linux 是怎么来的 GNU计划的另一个目的是构建自由的软件文化&#xff0c;以支持以无条件自由软件和开放源码程序这种文化理念为核心的一整套系统&#xff0c;来推动软件在世界范围内的普及及发展。其中包括支持点&#xff08;推…

java开发环境搭建基础之2----开发工具eclipse在windows的安装

一.背景 公司安排了带徒弟任务&#xff0c;写点基础的环境搭建这些吧。搭建基础开发环境&#xff0c;主要是jdk、eclipse、git、maven、mysql。后续再考虑编写jenkins、nexus、docker、1panel等CI/CD环境搭建。本次主要内容是eclipse的下载安装及运行。我的开发环境&#xff0c…

Linux内核(4)——Linux设备文件open函数从应用到内核全过程解析

学习并整理了下open等系统调用&#xff0c;从用户态如何调用到内核态的全过程。 1.Linux内核目录总览 2.Linux文件系统与设备驱动关系 这是在Linux设备驱动开发详解里找的两张图&#xff0c;内容很形象。 当用户程序通过系统调用陷入内核态时&#xff0c;会先经过VFS&#xf…

Hive3:表操作常用语句-内部表、外部表

一、内部表 1、基本介绍 &#xff08;CREATE TABLE table_name ......&#xff09; 未被external关键字修饰的即是内部表&#xff0c; 即普通表。 内部表又称管理表,内部表数据存储的位置由hive.metastore.warehouse.dir参数决定&#xff08;默认&#xff1a;/user/hive/ware…

多线程处理

1、使用两个线程完成两个文件的拷贝&#xff0c;分支线程1拷贝前一半&#xff0c;分支线程2拷贝后一半&#xff0c;主线程回收两个分支线程的资源 #include<myhead.h>struct Buf {int start;//起始位置int end;//结束位置const char *arr;//源文件const char *brr;//目标…

Spring-component-scan标签详解

<context:component-scan base-package"cn.ybzy.springtest"/> 首先&#xff0c;这标签是需要context的命名空间的。 base-package&#xff1a; 指定spring扫描注解的类所在的包。当需要扫描多个包的时候&#xff0c;可以使用逗号分隔。 如果只希望扫描特定…

Linux防火墙2

一、SNAT和DNAT SNAT&#xff1a;让内网机器可以访问外网服务器 DNAT: 让外网机器可以访问内网服务器 1.1、SNAT原理与应用 SNAT 应用环境 局域网主机共享单个公网IP地址接入Internet (私有IP不能在Internet中正常路由)&#xff0c;私转公 SNAT原理:源地址转换&#xff0c;…

水平直逼高级病理学家!清华团队提出AI基础模型ROAM,实现胶质瘤精准诊断

胶质瘤是一种源自脑内神经胶质细胞的肿瘤&#xff0c;占据所有原发性中枢神经系统肿瘤的 40&#xff05;~60&#xff05;&#xff0c;并以成年人最常见的颅内原发性肿瘤而闻名。胶质瘤的组织病理分类非常复杂&#xff0c;通常分为三种亚型&#xff1a;星形细胞瘤、少突胶质细胞…

使用go的tls库搭建客户端服务器加密通信

文章目录 使用OpenSSL生成证书Win系统安装openssl生成证书 非HTTP 直接tcp通信服务器代码客户端代码通信效果 使用OpenSSL生成证书 Win系统安装openssl 安装地址 https://slproweb.com/products/Win32OpenSSL.html设置环境变量 cmd命令检验 openssl version 生成证书 生成C…

2024.7.28 记录一次悲惨的笔试——作业帮NLP校招

小红的奇偶抽取 题目描述 题解 #include <iostream> #include<stack> using namespace std;int main() {long long n;stack <int> ji, ou;cin >> n;while (n) {int a n % 10;if (a % 2 0)ou.push(a);elseji.push(a);n n / 10;}long long jN 0, o…

Spring Cloud中怎么使用Resilience4j Retry对OpenFeign进行重试

在微服务架构中&#xff0c;服务之间的通信是非常频繁的。而使用OpenFeign可以极大简化微服务之间的HTTP通信。但在复杂的分布式系统中&#xff0c;服务之间的调用可能会因为网络问题、服务故障等原因而失败。因此&#xff0c;实现服务调用的重试机制显得尤为重要。Resilience4…

DDR3的使用(四)利用XILINX MIGIP核(native)读写DDR3—IP核信号分析

我们这一节继续结合仿真波形和逻辑分析仪测试波形来分析下MIGIP核的各个信号使用&#xff0c;这里主要说的是用户端的信号&#xff0c;这些信号直接与ip核进行交互&#xff0c;只有正确使用才能按我们的要求来读写数据。 1.我们先打开modelsim仿真软件&#xff0c;查看下examp…

机器学习笔记 - RAFT 光流简读

一、光流 光流是图像序列中像素的表观运动。为了估计光流,场景中物体的移动必须具有相应的亮度位移。这意味着一个图像中移动的红球在下一个图像中应该具有相同的亮度和颜色,这使我们能够确定它以像素为单位移动了多少。下图显示了光流示例,其中一系列图像捕获了逆时针旋转的…

使用 宝塔面板 部署 语料库php网站

【语料库网站】宝塔面板 在线部署全过程 代码仓库&#xff1a;https://github.com/talmudmaster/RedCorpus 网站介绍 语料库提供双语文本检索和分享功能。供英语、翻译相关专业的爱好者&#xff0c;学生和老师学习使用。 该网站是对BiCorpus开源项目的二次开发。 技术栈&am…

一文全面了解高性能计算平台是什么、怎么选型?高性能计算平台CHPC 都能做什么?

一. 概述 随着技术的发展和数据量的爆炸性增长&#xff0c;企业面临的挑战日益复杂&#xff0c;对计算能力的需求也在不断增加。这些问题的解决超出了传统计算方法的能力范围&#xff0c;高性能计算&#xff08;HPC&#xff09;正是为解决这类问题而生。 高性能计算&#xff…