三. Python基础(3)--语法

1. 字符串格式化的知识补充

tpl = "我是%s,年龄%d,学习进度100%" %('Arroz',18)

print(tpl)

# 会提示:ValueError: incomplete format# 占位符只有格式化时才有意义

 

msg = "我是%s,年龄%d,学习进度100%"

print(msg)

# 结果:我是%s,年龄%d,学习进度100%

 

# 如果想要格式化输出字符串,同时又想要打印%,需要写两个%

msg = "我是%s,年龄%d,学习进度100%%"%("Arroz",19)

print(msg)

,学习进度100%

 

# 字符串格式化的一种写法:

tpl = "我是%s, 年龄%d, 学习进度100%%" % ('Arroz', 19)

print(tpl)

 

判断字符串是否为数值:isdecimal()

 

2. 整数(int)类型

v1 = 15

print(v1.bit_length()) # 4

# 当十进制用二进制表示时,最少使用的位数(excluding the sign and leading zeros)

# bit_length()不能用于字符串类型

 

# bit_length()可用于布尔类型

v2 = True

print(v2.bit_length()) # 1,布尔类型实际上也是数值型

 

v3 = -37

print(bin(v3)) # -0b100101

print(v3.bit_length()) # 6

 

# 也可以写成(-37).bit_length()

# 不能写成-37.bit_length()

 

3. 布尔(bool)类型

整数0和空字符串""相当于False

非0 的整数/浮点数,和非空的字符串相当于True

也就是说while True相当于while "天天向上", while 7, while 4.5, while -4.5等

 

wihle 1的执行时间约为while True的2/3,为什么?

由于Python2中,True、False不是关键字,因此我们可以对其进行任意的赋值,这就导致程序在每次循环时都需要对True。False的值进行检查;而对于1,则被程序进行了优化,而不进行检查。

 


注意:

v = 0 or 6

print(v)

v = 6 or 0

print(v)

v = 2 or 1

print(v)

v = 1 or 2

print(v)

v = 9 or 2 > 3

print(v)

v = 9 or 2 < 3

print(v)

v = 2 > 3 or 9

print(v)

v = 2 < 3 or 9

print(v)

# "逻辑或"的运算原则是从左向右判断, 一旦判断出一个表达式为True, 那么整个逻辑运算的值就是这个表达式的值.

6

6

2

1

9

9

9

True

print("=======")

v = 0 and 6

print(v)

v = 6 and 0

print(v)

v = 2 and 1

print(v)

v = 1 and 2

print(v)

v = 9 and 2 > 3

print(v)

v = 9 and 2 < 3

print(v)

v = 2 > 3 and 9

print(v)

v = 2 < 3 and 9

print(v)

# "逻辑与"的运算原则是从左向右判断, 若有一个表达式为False, 那么整个表达式都为False(或者是代表False的对象), 若几个表达式都为真, 那么整个逻辑运算的值就是最后一个表达式的值.

0

0

1

2

False

True

False

 

4. 字符串(str)类型

● 类提供的功能:

① upper()

② lower()

③ capitalize()

④ strip(); lstrip(); rstrip()

⑤ replace()

⑥ split()


变量本身的值不变, 函数返回变化后的值

 

● 公共功能:

①len()

②索引 indexing

③切片 slicing (切片都是"左闭右开"的区间)

string = 'abcdefg'

new_str = string[:4] + string[4]+ string[4:]

print(string, new_str, sep = "→") # abcdefg→abcdeefg

 

5. 列表(list)类型

● 类提供的功能:

①append()

②insert()

 

● 公共功能:

① len()

② 索引(取, 改,删): [], =, del

特殊的: list[0:2] = ["Eric",]

③ 遍历: for

注意下面的案例:

v = ["Peter", "Paul", "Mary", "Harry", "Jerry"]

# v[3] = "Leo" # ['Peter', 'Paul', 'Mary', 'Leo', 'Jerry']

# v[3] = ["Leo",] # ['Peter', 'Paul', 'Mary', ['Leo'], 'Jerry']

# v[3:4] = "Leo" # ['Peter', 'Paul', 'Mary', 'L', 'e', 'o', 'Jerry']

# v[3:4] = ["Leo",] # ['Peter', 'Paul', 'Mary', 'Leo', 'Jerry']

# v[3:5] = ["Leo",] # ['Peter', 'Paul', 'Mary', 'Leo']

# v[3:9] = ["Leo",] # ['Peter', 'Paul', 'Mary', 'Leo'] # 不会提示"list index out of range"

# 如果列表只有一个元素,推荐加上一个逗号

# v[3:5] = "Leo" # ['Peter', 'Paul', 'Mary', 'L', 'e', 'o']

# v[3:9] = "Leo" # ['Peter', 'Paul', 'Mary', 'L', 'e', 'o'] # 不会提示"list index out of range"

# print(v[7]) # 会提示"list index out of range"

del v[3]

del(v[3]) # 一般不这么用, 此时del仍然不是一个函数

v[3].del() # del是语句,不是list的方法


变量本身的值发生变化, 函数返回None

 

6. 元组(Tuple)类型

● 元素不可变(immutable)的容器(container), 但是它内部可以包含可变元素(如列表)

 

● 类提供的功能: 无

 

● 公共功能:

① len()

② 索引(取) :[]

③ 遍历:for

 

7. 字典(dict)类型

● 类提供功能

①get()

get()--如果不存在查询的键, 不报错, 返回关键字'None'

v[键]--如果不存在查询的键, 报错

print(dict["k1"]) # v1

#print(dict["k3"])

print(dict.get("k1")) # v1

print(dict.get("k3")) # None

 

● 字典元素的顺序:

字典元素的书写顺序不是它们实际的存储顺序, 字典将根据每个元素的Hashcode值进行排序.


原因

因为python字典的本质是一个Hash表hash表的数据结构注定它就是无序的。

 

● "键"的要求

1)一个键不允许出现两次。

2) 键必须不可变(也就是hashable),所以可以用数值, 字符串或元组充当键,列表就不行

 

● 公共功能:

①len()

dict = {

    "k1" : "v1",

    "k2" : "v2"

}

print(len(dict)) #2

②索引(取,改,删): =, del

# del dict["k1"]

# print(dict) # {'k2': 'v2'}


由于字典是不排序的,所以不能像列表那样通过切片生成新字典

 

③循环

- for i in dict.keys() # dict_keys(['k1', 'k2'])

- for i in dict.values() # dict_values(['v1', 'v2'])

- for i in dict.items() # dict_items([('k1', 'v1'), ('k2', 'v2')])

 

for i in dict.keys():

    print(i)

# 等价于:

for j in dict:

    print(j)

# 注意, 字典没有切片, 因为字典是无序的.

 

● 案例: 注意下面三种遍历"键-值"对的方法

v = {

    "k1":"v1",

    "k2":"v2"

}

 

for i in v.items():

    print(i)

 

for a,b in v.items():

    print(a, b)

for (a,b) in v.items():

    print(a, b)

('k1', 'v1') # 元组

('k2', 'v2')

k1 v1

k2 v2

k1 v1

k2 v2

 

● 案例

n = input("Your name:")

a = input("Your age:")

user_list = [{"name": "Peter","age": 18}, {"name": "Paul", "age": 19}, {"name": "Mary", "age": 20}]

 

temp ={"name": n, "age": int(a)}

user_list.append(temp)

for item in user_list:

    print(item["name"], item["age"])

    #print(a, b for a, b in item.items())

Your name:Leo

Your age:21

Peter 18

Paul 19

Mary 20

Leo 21

 

8. 强制转换(casting)

int()

float()

str()

bool()

 

知识补充

● 字面量, 变量

a = 11

注意区分作为字面量(literal)的"11",和作为变量的a,它们在计算机中存储是不一样的。

 

● 在Pycharm中查看文档

 

 

● 切片&步长

text = "洞庭湖位于长江中游荆江南岸"

slice = text[1:20:2]# 即使这里的20 > len(text), 也不会提示越界

print(slice)

print(text)

# del text[1:15:2] # 报错, 'str' object does not support item deletion

# print(text)

 

li = [11,22,33,44,55,66]

del li[1:15:2] # 把奇数索引的元素删去

print(li)

三. Python基础(3)--语法的更多相关文章

  1. 五. Python基础(5)--语法

    五. Python基础(5)--语法 1 ● break结束的是它所在的循环体, continue是让它所在的循环体继续循环 # 打印: 1 10 2 10 3 10 4 10 5 10 6 10 7 ...

  2. 四. Python基础(4)--语法

    四. Python基础(4)--语法 1 ● 比较几种实现循环的代码 i = 1 sum = 0 while i <= 10: # 循环10-1+1=10次     sum += i     i ...

  3. 二. Python基础(2)--语法

    二. Python基础(2)--语法 1.实现一个简单的登录系统 '''# 形式1 n = 1 while n < 4:     name = input("请输入姓名\n" ...

  4. 一. Python基础(1)--语法

    一. Python基础(1)--语法 1. 应用程序 1.1 什么是计算机(Computer)? 组成 ①运算器 arithmetic unit; ※ Arithmetic unit and cont ...

  5. 六. Python基础(6)--语法

    六. Python基础(6)--语法 1 ● Python3中, Unicode转字节的方法 print(bytes("李泉", encoding = 'utf-8')) prin ...

  6. Python基础:语法基础(3)

    本篇主要介绍Python中一些基础语法,其中包括:标识符.关键字.常量.变量.表达式.语句.注释.模块和包等内容. 1. 标识符和关键字 1.1 标识符 标识符是变量.常量.函数.属性.类.模块和包等 ...

  7. Python基础系列----语法、数据类型、变量、编码

    1.基本语法                                                                                        Python ...

  8. [Python基础]003.语法(2)

    语法(2) 运算符 数学运算 比较运算 逻辑运算 位运算 赋值运算 其他运算 代码规范 代码缩进 多行 注释 流程控制 pass if while for break continue 运算符 数学运 ...

  9. [Python基础]002.语法(1)

    语法(1) 变量 基本数据类型 空值 布尔值 数字 字符串 列表 元组 字典 结构嵌套 变量 定义变量 i = 10 这样就定义了一个名为 i 的变量,它的值是 10 . 变量名必须是大小写英文.数字 ...

随机推荐

  1. 第一个dubbo程序

    Dubbo是一个高性能服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案,使得应用可通过高性能RPC实现服务的输出和输入功能,和Spring框架可以无缝集成. 作为一个 ...

  2. boke练习: springboot整合springSecurity出现的问题,post,delete,put无法使用

    springboot 与 SpringSecurity整合后,为了防御csrf攻击,只有GET|OPTIONS|HEAD|TRACE|CONNECTION可以通过. 其他方法请求时,需要有token ...

  3. Oracl 12c (课本)

    一.安装和部署:https://www.cnblogs.com/-xuan/p/10211387.html 二. (1)体系结构 Oracle体系结构 实例:实例是后台进程和内存的集合 数据库:数据库 ...

  4. Maxim and Array CodeForces - 721D (贪心)

    大意: 给定序列, 每次操作选择一个数+x或-x, 最多k次操作, 求操作后所有元素积的最小值 贪心先选出绝对值最小的调整为负数, 再不断选出绝对值最小的增大它的绝对值 #include <io ...

  5. 160. Intersection of Two Linked Lists(剑指Offer-两个链表的第一个公共结点)

    题目: Write a program to find the node at which the intersection of two singly linked lists begins. Fo ...

  6. vue 监听store中的数值

      computed: {   isFollow () {     return this.$store.state.demo.id; //需要监听的数据   } }, watch: {   isFo ...

  7. python中list、tuple、dict、set的使用

    1.list列表 list是一种可变的,有序的列表,可以随时添加和删除其中的元素. 其格式如下:list-name=[element1,element2,....] >>> nums ...

  8. MYSQL--三大范式

    MYSQL--三大范式 范式简介: 设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小.目前关系数据库有六 ...

  9. 关于Oracle RAC中SCN原理和机制的探索

    今天看书时看到了关于RAC中SCN的问题,为了进一步搞清楚其内部原理和机制,对该问题进行了广泛的查阅和搜索,遗憾的是,可以参考的资料很少,网上大部分是人云亦云的帖子,其中,详细介绍其内部原理和机制的资 ...

  10. Android 常用动画

    一.动画类型 Android的animation由四种类型组成:alpha.scale.translate.rotate XML配置文件中 alpha :渐变透明度动画效果 scale :渐变尺寸伸缩 ...