RomanticQq

保持对生活的热爱,唯有生活不可被辜负

0%

2015年:

  1. 求num各数字之和;
  2. 测试字符C在字符号串S中出现的次数;
  3. 中国有句俗话叫“三天打鱼两天晒网”。某人1990年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是打鱼还是晒网
    2017年:
  4. 选择分支结构,注意ceil函数
  5. 汉诺塔问题
  6. 字符串交换问题:字符串以A开头和以K结尾的单词进行交换
  7. 百钱买百鸡问题:百鸡问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?
  8. 最大约数辗转相除法;
  9. 文件操作:将数据写入fname.txt中
  10. 螺旋方阵
  11. 求方程组近似根:弦截法
  12. 斐波那契数列递归实现

因为Pyecharts高版本不兼容低版本的问题,相同的语法在不同的版本就可能会出现一个能正常运行而一个出现报错的情况
常见的有导包时就有可能出现错误

1
2
3
4
from pyecharts.charts import Bar,Pie,Line # 1.x版本的语法
from pyecharts import Bar,Pie,Line # 0.5.x版本的语法

#若交换使用就会报错

还有
1
2
3
bar_1 = Bar("每天被领劵的数量",width=1500,height=600)

# 在0.5.x版本下就是正确的,在1.x版本下就是错误的

在用pip命令安装时默认安装的是高版本,下面是卸载Pyecharts的命令和安装低版本的命令
1
2
3
pip install pyecharts # 默认安装高版本
pip uninstall pyecharts # 卸载pycharts(无论任何版本)
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyecharts==0.5.5 # 安装0.5.5

当使用document.('div').innerHTML=`` 向页面追加内容时可能会出现变量不解析的情况。
正确姿势:=后面是`` ,而不是单引号或双引号,只有`` 才能解析。

1
document.querySelector('div').innerHTML=`<h2>编号:${resp.id}</h2>`	

由于同源策略,经常会出现跨域问题,只需要在php代码前加上下面这些代码即可

1
2
3
header("Access-Control-Allow-Origin:*");
header('Access-Control-Allow-Methods:POST');
header('Access-Control-Allow-Headers:x-requested-with, content-type');

  1. http介绍

        HTTP基于TCP,是面向连接的协议,建立需要通过三次握手,断开需要通过四次挥手
        当连接断开时,客户端的最后一次挥手后会等待两个单位时间,若两个单位时间内没有收到任何响应,说明服务器关闭了,然后客户端也关闭;若两个单位时间内又收到了消息,说明服务器还没有关,客户端和服务端将继续沟通。

  2. http协议的构成

    请求

  • 请求头—request header
    • URL
    • method
    • query
  • 请求体—request body
    响应
  • 响应头—request header
    • content-type
  • 响应体—response body
    • 响应数据

当是get请求时,信息在URL中;当是post请求时,信息在request body中。
content-type中表示返回的数据类型,返回的数据在response body中。

  1. 同步和异步

        同步:代码按照前后顺序一行一行的执行;
        异步:同时执行多行代码;
        注:异步代码总是在同步代码之后执行;

    现在的前后端交互采取前后端分离,我们会采用异步的JavaScript和XML或JSON格式来完成数据的局部刷新。因为它是异步的,所以不等待整需要个页面的刷新,只需要发送一个异步请求,什么时候请求的内容过来了,什么时候刷新局部页面

  1. Ajax介绍

        传统的项目前后端不分离,用户触发一个http请求服务器,然后服务器收到之后再做出响应给用户,并且返回一个新的页面,也就是说交互都是通过页面刷新或页面跳转来实现的。

    这种方式对于用户体验来讲其实并不友好,少量的数据更新也会引发整个页面重新请求,浪费了很大一部分资源。

    因此,我们希望有一种更好的方式,可以不用重新请求整个页面而达到更新部分数据的效果。2005年,ajax(Asynchronous JavaScript And XML)出现,给前端带来了巨大的变化与革新。

  1. Ajax的特点

    优点:
  • 不需要插件支持(一般浏览器且默认开启JavaScript即可)
  • 用户体验极佳(不刷新页面即可获取可更新的数据)
  • 提升Web程序的性能(在传递数据方面做到按需发送,不必整体提交)
  • 减轻服务器和带宽的负担(将服务区的一些操作转移到客户端)

缺点:

  • 前进、后退功能被破坏(因为Ajax永远在当前页面,不会记录前后页面)
  • 搜索引擎的支持度不够(因为搜索引擎爬虫还不能理解JS引起变化数据的内容)
  1. 常见状态码

  • 100-199:表示连接继续
  • 200-299:表示各种意义上的成功
  • 300-399:表示重定向
  • 400-499:表示各种客户端错误
  • 500-599:表示各种服务端错误
  1. Ajax原理

        1.准备页面请求,创建XMLHttpRequest对象
        2.使用XMLHttpRequest对象的open()和send()方法发送资源请求给服务器
        3.后台计算
        4.onreadystatechange函数,状态改变时发送数据回客户端,使用XMLHttpRequest对象的responseText或responseXML属性获得服务器的响应

    注:open()打开连接,send()向服务器发送资源;调用send()方法后要去监听onreadystatechange事件,当onreadystatechange状态改变时,说明后端发送数据给客户端,客户端接收数据。

  1. Ajax(get)

    具体流程看注释

client代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<button onclick="sendMsg()">发送请求</button>
<div id="id1"></div>
<script type="text/javascript">
function sendMsg(){
// 1.创建一个XMLHttpRequest对象
var xhr=new XMLHttpRequest();
// 2.调用open方法打开连接
// open方法有三个参数
// 1.请求的method
// 2.请求的url
// 3.是否异步,默认值为true
xhr.open('get','http://127.0.0.1/data.php?id=1');
//3.发送请求
xhr.send();
//4.监听状态的改变
xhr.onreadystatechange=function (){
// 判断状态值 0-4 五种状态,4代表最终的完成
if(xhr.readyState === 4){
// 判断状态码
if(xhr.status === 200){
//将返回的字符串转换成json对象
var resp=JSON.parse(xhr.responseText);
console.log(resp);
document.querySelector('div').innerHTML=`
<h2>编号:${resp.id}</h2>
<h2>标题:${resp.title}</h2>`
}
}
}
}
</script>
</body>
</html>

server代码:
1
2
3
4
5
6
7
8
9
<?php
// 解决跨域问题
header("Access-Control-Allow-Origin:*");
header('Access-Control-Allow-Methods:POST');
header('Access-Control-Allow-Headers:x-requested-with, content-type');
//获取客户端get请求过来的数据
$id=$_GET['id'];
//转换成json格式
echo json_encode(array('id'=>$id,'title'=>'Hello Ajax'));

  1. Ajax(post)

    get请求和post请求有很多地方都相同,注意不同的地方(注释处)
    client代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    <!DOCTYPE html>
    <html>
    <head>
    <title></title>
    </head>
    <body>
    <button onclick="sendMsg()">发送请求</button>
    <div id="id1"></div>
    <script type="text/javascript">
    function sendMsg(){
    var xhr=new XMLHttpRequest();
    // method为post
    xhr.open('post','http://127.0.0.1/data.php');
    //设置请求头的content-type 指定了参数的发送方式
    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    // 在send里写需要发送的数据
    xhr.send('name=zhangsan&age=18');
    xhr.onreadystatechange=function (){
    if(xhr.readyState === 4){
    if(xhr.status === 200){
    var resp=JSON.parse(xhr.responseText);
    console.log(resp);
    document.querySelector('div').innerHTML=`
    <h2>姓名:${resp.name}</h2>
    <h2>年龄:${resp.age}</h2>`
    }
    }
    }
    }
    </script>
    </body>
    </html>

    server代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    // 解决跨域问题
    header("Access-Control-Allow-Origin:*");
    header('Access-Control-Allow-Methods:POST');
    header('Access-Control-Allow-Headers:x-requested-with, content-type');
    //获取客户端get请求过来的数据
    $name=$_POST['name'];
    $age=$_POST['age'];
    //转换成json格式
    echo json_encode(array('name'=>$name,'age'=>$age));
  2. 封装ajax(1)

    get封装:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    </head>
    <body>
    <button onclick="sendMsg()">发送请求</button>
    <script type="text/javascript">
    function sendMsg(){
    //若无参数query为null
    //若有参数,{}
    get('http://127.0.0.1/data.php',{name:'xiaoming',age:18},function(resp){
    console.log(resp)
    },true)
    }
    //封装get请求
    //query: string,请求的地址
    //query: Object,请求携带的参数
    //callback: function,成功之后的回调
    //isJSON: boolean,是否转化为json格式
    function get(url,query,callback,isJSON){
    //若有参数,先把参数拼接在url后面
    if(query){
    url+='?'
    for(var key in query){
    url+=`${key}=${query[key]}&`
    }
    //取出最后多余的&
    url=url.slice(0,-1)
    }
    var xhr=new XMLHttpRequest()
    xhr.open('get',url)
    xhr.send()
    xhr.onreadystatechange=function(){
    if(xhr.readyState === 4){
    if(xhr.status === 200){
    var res=isJSON?JSON.parse(xhr.responseText):xhr.responseText
    callback(res)
    }
    }
    }
    }
    </script>
    </body>
    </html>

post封装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<button onclick="sendMsg()">发送请求</button>
<script type="text/javascript">
function sendMsg(){
//若无参数query为null
//若有参数,{}
post('http://127.0.0.1/data.php',{'name':'xiaoming','age':18},function(resp){
console.log(resp)
},true)
}
//封装post请求
//query: string,请求的地址
//query: Object,请求携带的参数
//callback: function,成功之后的回调
//isJSON: boolean,是否转化为json格式
function post(url,query,callback,isJSON){
//若有参数,先把参数拼接起来
var str=''
if(query){
for(var key in query){
str+=`${key}=${query[key]}&`
}
//取出最后多余的&
str=str.slice(0,-1)
}
var xhr=new XMLHttpRequest()
xhr.open('post',url)
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded')
xhr.send(str)
xhr.onreadystatechange=function(){
if(xhr.readyState === 4){
if(xhr.status === 200){
var res=isJSON?JSON.parse(xhr.responseText):xhr.responseText
callback(res)
}
}
}
}
</script>
</body>
</html>

:测试时一定要注意,当前端发的方式和后端接受的方式不一样时,可能会报json格式错误

  1. ajax封装(2)

    创建util.js
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    //创建一个util对象,切记对象内的数据之间要有逗号隔开
    var util={
    //封装get
    get:function (url,query,callback,isJSON){
    //若有参数,先把参数拼接起来
    var str=''
    if(query){
    for(var key in query){
    str+=`${key}=${query[key]}&`
    }
    //取出最后多余的&
    str=str.slice(0,-1)
    }
    var xhr=new XMLHttpRequest()
    xhr.open('post',url)
    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded')
    xhr.send(str)
    xhr.onreadystatechange=function(){
    if(xhr.readyState === 4){
    if(xhr.status === 200){
    var res=isJSON?JSON.parse(xhr.responseText):xhr.responseText
    callback(res)
    }
    }
    }
    },

    //封装post
    post:function (url,query,callback,isJSON){
    //若有参数,先把参数拼接起来
    var str=''
    if(query){
    for(var key in query){
    str+=`${key}=${query[key]}&`
    }
    //取出最后多余的&
    str=str.slice(0,-1)
    }
    var xhr=new XMLHttpRequest()
    xhr.open('get',url)
    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded')
    xhr.send(str)
    xhr.onreadystatechange=function(){
    if(xhr.readyState === 4){
    if(xhr.status === 200){
    var res=isJSON?JSON.parse(xhr.responseText):xhr.responseText
    callback(res)
    }
    }
    }
    }
    }

    //调用时
    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    </head>
    <body>
    <button onclick="sendMsg()">发送请求</button>
    //先引入js文件,然后调用即可
    <script src="./util.js"></script>
    <script type="text/javascript">
    function sendMsg(){
    //若无参数query为null
    //若有参数,{}
    util.post('http://127.0.0.1/data.php',{'name':'xiaoming','age':18},function(resp){
    console.log(resp)
    },true)
    }
    </script>
    </body>
    </html>
  2. ajax封装(3)

    server代码:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    var util={
    //param : Object{method,url,query,callback,isJSON}
    ajax:function(params){
    var xhr=new XMLHttpRequest()
    if(params.method === 'get'){
    params.url+='?'
    for(var key in params.query){
    params.url+=`${key}=${params.query[key]}&`
    }
    params.url=params.url.slice(0,-1)
    xhr.open('get',params.url)
    xhr.send()
    }else{
    var str=''
    if(params.query){
    for(var key in params.query){
    str+=`${key}=${params.query[key]}&`
    }
    //取出最后多余的&
    str=str.slice(0,-1)
    }
    var xhr=new XMLHttpRequest()
    xhr.open('post',params.url)
    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded')
    xhr.send(str)
    }
    xhr.onreadystatechange=function(){
    if(xhr.readyState === 4){
    if(xhr.status === 200){
    var resp=params.isJSON ? JSON.parse(xhr.responseText) : xhr.responseText
    params.callback(resp)
    }
    }
    }
    }
    }
    client代码
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    </head>
    <body>
    <button onclick="sendMsg()">发送请求</button>
    <script src="./util.js"></script>
    <script type="text/javascript">
    function sendMsg(){
    util.ajax({
    method:'get',
    isJSON:true,
    url:'http://127.0.0.1/data.php',
    query:{
    'name':'xiaoming',
    'age':18
    },
    callback:function(resp){
    console.log(resp)
    }
    })
    }
    </script>
    </body>
    </html>

C语言中,向函数传值的问题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// 方法一
#include<stdio.h>
int duplicate(int* number);
int main(){
int number[5]={1,2,3,4,5};
duplicate(number);
return 0;
}
int duplicate(int *number)
{
printf("%d",number[0]);
}
//方法二
#include<stdio.h>
int duplicate(int number[]);
int main(){
int number[5]={1,2,3,4,5};
duplicate(number);
return 0;
}
int duplicate(int number[])
{
printf("%d",number[0]);
}

浅拷贝

浅拷贝只拷贝一层,当列表中有嵌套时,嵌套的列表是指向而不是拷贝

1
2
3
4
5
6
7
8
9
10
11
12
13
x=[1,2,[3,4],5]
y=x.copy()
print('列表x的值为:',x) #列表x的值为: [1, 2, [3, 4], 5]
print('列表y的值为:',y) #列表y的值为: [1, 2, [3, 4], 5]
x[2][0]=100
print('列表x修改后,列表x的值为:',x) #列表x修改后,列表x的值为: [1, 2, [100, 4], 5]
print('列表x修改后,列表y的值为:',y) #列表x修改后,列表y的值为: [1, 2, [100, 4], 5]
#当修改列表x第一层时因为数据是拷贝过去的,所以对y无影响;
#当修改列表x第二层时因为数据是指向,当修改列表x时,y也跟着修改

# 浅拷贝方法
1. 用copy函数
2. 引用copy模块,用copy模块里的copy函数

深拷贝

深拷贝是对列表所有数据都拷贝,新列表和原列表没有一点关系

1
2
3
4
5
6
7
8
9
import copy
x=[1,2,[3,4],5]
y=copy.deepcopy(x)
print('列表x的值为:',x) #列表x的值为: [1, 2, [3, 4], 5]
print('列表y的值为:',y) #列表y的值为: [1, 2, [3, 4], 5]
x[2][0]=100
print('列表x修改后,列表x的值为:',x) #列表x修改后,列表x的值为: [1, 2, [100, 4], 5]
print('列表x修改后,列表y的值为:',y) #列表x修改后,列表y的值为: [1, 2, [3, 4], 5]
# 深拷贝只能用copy模块里的deepcopy函数进行拷贝

  1. 交换两个变量的值

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    a=1
    b=2
    # 方法一:利用第三个变量实现
    c=b
    b=a
    a=c

    # 方法二:利用运算符实现
    a=a+b
    b=a-b
    a=a-b

    # 方法三:利用异或运算符实现
    a=a^b
    b=a^b
    a=a^b
    # 原理 a^b^b==a

    # 方法四:使用Python特有的方法实现
    a,b=b,a
  2. for…in循环删除元素

字符串

  1. 单引号和双引号

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    在Python中可以使用一对单引号或双引号;也可以使用三对单引号或双引号
    eg:
    'hello'
    "hello"
    '''hello'''
    """hello"""

    当字符串里面还有引号时,用单双引号嵌套使用,使表达的意思清晰
    eg:
    msg='xiaoming say"I am xiaoming"'
  2. 字符串的转义字符\

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    # \' ==> 显示一个普通的单引号
    # \" ==> 显示一个普通的双引号
    # \n ==> 表示一个换行
    # \t ==> 表示一个制表符
    # \\ ==> 表示一个普通的\
    # r'字符串' ==> 表示原生字符串,\n等会原生输出,不会表现特殊含义(r,R都可以)
    eg:
    x1='I\'m xiaoming' # 若不用转移字符对'进行转义,则在m之前最会被截断,从而报错,不是一个字符串
    x2='你好\n世界'
    # 打印是:
    你好
    世界
    #中间会转行
    #若x3='你好\\n世界'
    #打印结果是 你好\n世界 #因为已经对\进行转义,转义后仅表示一个普通的\字符
    m='hello\tworld'
    n=r'hello\tworld'
    print(m) # 打印 hello world
    print(n) # 打印 hello\tworld,因为r会使字符串保持原生
  3. 字符串下标

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    # 下标又被称为索引,表示第几个数据
    # str,list,tuple类型的数据可以通过下标获取或操作数据
    # 切记,字符串是不可变数据类型(原数据永远不会修改,是在原数据的基础上新产生的数据)
    # 下标是用0开始

    # 可以通过下标来获取或则修改指定位置的数据
    word='zhangsan'
    print(word[4]) # 打印n

    # 字符串是不可变数据类型
    # 对于字符串的任何操作,都不会改变原有的字符串!!!
    word='zhangsan'
    # 不管对word做任何操作
    print(word) # word打印的结果恒为 zhangsan
  4. 字符串切片

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    # 切片就是从字符串里复制一段指定的内容,生成一个新的字符串

    # 切片语法
    m[star:end:step] # m是字符串的变量名
    # 复制的内容中包含stat位,不包含end位
    # step表示步长,每步取一个数据,step默认为1
    m[Index] # 获取字符串指定下标的数据
    m[star:end] # 获取从star到end的数据
    m[star:] # 获取从star开始的所有数据
    m[:end] # 获取从头开始到end的数据
    m[::] # 从复制整个字符串
    m[::step] #整个字符串每step复制一个数据
    m[star:end:step] #获取从star到end,没step取一个数据

    #注意
    # 1.步长不能为0,但可以为负
    # 2.当步长为负时,从star位开始向前运算
    # 3.当step<0且star<end时,截取的内容为空(因为从star开始向前找不到end)
    # 4.当star和end都为负数,表示从右向左数
  5. 字符串常见操作

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    len(x) # 获取字符串长度

    # 查找相关方法
    x.find(a) # 查找字符串x中,字符c串a的下标,失败返回-1(返回a第一次出现的)
    x.index(a) # 查找字符串x中,字符串a的下标,失败会报错(返回a第一次出现的)
    x.rfind(a) # 查找字符串x中,字符串a的下标,失败返回-1(返回a最后一次出现的)
    x.rindex(a) # 查找字符串x中,字符串a的下标,失败会报错(返回a最后一次出现的)

    # 判断相关方法
    # is开头的都是判断结果是bool值
    x.startswith(a) # 判断是否以字符串a开头
    x.endswith(a) # 判断是否以字符串a结尾
    x.isdigit() # 判断是否是纯数字
    x.isalpha() # 判断是否是纯字母
    x.isalnum() # 判断是否由纯字母数字组成(纯数字,纯字母,字母数字混合都为True,但当有其他字符如空格时就是False)
    x.isspace() # 检测字符串是否只由空格组成,只有空格返回True,否则返回False

    # 替换
    x.replace(a,b) # 用b替换字符串x中的a

    # 分割
    #按照指定字符串分割
    x.split(a) # 用字符串a将字符串x分割成一个列表
    x.rsplit(a,b) # 用字符串a将字符串x从左切b次分割成一个列表
    x.split(a) # 用字符串a将字符串x分割成一个列表
    x.rsplit(a,b) # 用字符串a将字符串x从右切b次分割成一个列表
    #按照行分割
    x.splitlines() # 在有换行出\n处分割
    #按照指定字符串分成三部分
    x.partition(a) # 在第一个a处将字符串x分成三部分:a左侧,a,a右侧
    x.rpartition(a) # 在最后一个a处将字符串x分成三部分:a左侧,a,a右侧
  6. 修改大小写

    1
    2
    3
    4
    x.capitalize() # 让字符串x第一个字符大写
    x.upper() # 让字符串x中所有字符都大写
    x.lower() # 让字符串x中所有字符都小写
    x.title() # 让字符串x中所有单词首字母大写
  7. 字符串填充

    1
    2
    3
    4
    5
    6
    x.ljust(width) # 在字符串x的左边填空格,使字符串长度变为width(len(x)大于width,不做任何操作)
    x.rjust(width) # 在字符串x的右边填空格,使字符串长度变为width(len(x)大于width,不做任何操作)
    x.center(width) # 在字符串两侧平均填空格,使字符串长度变为width(len(x)大于width,不做任何操作)
    x.ljust(width,fillchar) # 在字符串x的左边填filechar,使字符串长度变为width(len(x)大于width,不做任何操作)
    x.rjust(width,fillchar) # 在字符串x的右边填filechar,使字符串长度变为width(len(x)大于width,不做任何操作)
    x.center(width,fillchar) # 在字符串两侧平均填fillchar,使字符串长度变为width(len(x)大于width,不做任何操作)
  8. 增删空格

    1
    2
    3
    4
    x.lstrip() #去除x中左侧的空格
    x.rstrip() #去除x中右侧的空格
    x.lstrip(chars) #去除x中左侧的chars
    x.rstrip(chars) #去除x中右侧的chars
  9. 列表、字符串之间的转化

    1
    2
    3
    x.split(str) # 用字符str把x分成一个list
    str.join(chars) # 用字符str把chars连接成一个字符串
    # chars是一个可迭代的对象
  10. 字符串的运算符

    1
    2
    3
    4
    5
    # 1.字符串和字符串之间可以相加
    # 2.字符串和数字之间可以相乘
    # 3.字符串和数字之前:==为False;!=为True
    # 4.字符串和字符串之间做比较运算,会逐个比较字符串的编码值
    # 5.不支持其他运算符
  11. 利用内置函数实现数字、字符间的转化(ASCII码)

    1
    2
    ord(char) # 查看字符char的ASCII码
    chr(num) # 查看ASCII码num所对应的字符
  12. in 和 not in

    1
    2
    in # 用来判断一个内容是否在可迭代对象中
    not in # 用来判断一个内容是否不在可迭代对象中
  13. 使用% 占位符来格式化字符串

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # %s    表示的是字符串的占位符
    # %d 表示的整数的占位符
    # %nd 打印时显示n位,如果不够,n>0在前面用空格补齐,n<0在后面补空格
    # %0d 打印时显示n位,如果不够,在前面用0补齐
    # %f 表示浮点数的占位符
    # %nf 表示浮点数的占位符,四舍五入保留n为小数
    # %% 打印一个%
    # %x 将数字按16进制输出,字符为小写
    # %X 将数字按16进制输出,字符为大写
    # print('%3d'% 15) ##语法
  14. format方法

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    # {} 可以用来占位,用format中的数据进行填充

    # 一一对应填充
    # x='大家好,我是{},今年{}岁'.format('xiaoming',18)

    # {数字},数字从0开始
    # x='大家好,我是{1},今年{0}岁'.format(18,'xiaoming')

    # {变量名},相当于键值对
    # x='大家好,我是{name},今年{age}岁'.format(name='xiaoming',age=18)

    # {数字}{变量名}混合使用
    # x='大家好,我是{name},今年{1}岁,身高{0}cm'.format(180,18,name='xiaoming')
    # 要先写数字的值,再写变量名的值

    # 用list填充
    # data=['xiaoming',18,180]
    # x='大家好,我是{},今年{}岁,身高{}cm'.format(*data)
    # 切记加*

    # 用dictionary填充
    # data={'name':'xiaoming','age':18,'high':180}
    # x='大家好,我是{name},今年{age}岁,身高{high}cm'.format(**data)
    # 切记加**

Python中的数据分为可变数据类型和不可变数据类型

可变数据类型

定义:如果修改值,内存地址不会发生变化
可变数据类型:列表,字典,集合

不可变数据类型

定义:如果修改值,内存地址会发生变化
可变数据类型:字符串,数字,元组

看图理解