当前位置: 首页 > news >正文

python系统学习Day2

section3 python Foudamentals

part one:data types and variables

数据类型:整数、浮点数、字符串、布尔值、空值

#整型,没有大小限制
>>>9 / 3 #3.0
>>>10 // 3 #3  地板除
>>>10 % 3 #1 取余#浮点型,没有大小限制,但超过一定范围表示为inf(无限大)
>>>print(2*100 == 2e2)  #True#字符串
>>>print('I\'m \"OK\"!') #I'm "OK"!
>>>print(r'\\\n\\') #\\\n\\    ##r默认字符串内部不转义
>>>print('''ready?
...line2
...line3''')        #多行输入保留原换行符用三个单引号#布尔值
>>>True and False #False
>>>not 1 > 2 #True#空值用None表示

此外还有:列表、字典等。

变量在计算机中可以是任意数据类型,在程序中用变量名表示,规范编程要遵循一定的命名规则。

变量是一个名称,指向内存中的某个地址,地址中存储了一个常量,也就是变量的值。

>>>a = 'ABC'
>>>b = a
>>>a = 'XYZ'
>>>print(b)
ABC
#理解过程

在这里插入图片描述

常量通常用大写字母表示,但在python中没有确保常量名称代表的值不会被修改的机制

part two:strings and encoding

字符串需要转化为01串存储在计算机中,字符串编码方式包括

  • ASCII(一字节)
  • GB2312(中文编码)
  • Unicode(二字节通用编码)
  • UTF-8(可变长通用编码,为了节省存储空间)

在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或传输的时候,转化为UTF-8编码。

  • 例一:记事本使用Unicode编码,但txt类型的文件存储时使用的是UTF-8编码
  • 例二:服务器使用的是Unicode编码,但输出到浏览器的网页使用的是UTF-8编码

python3中,使用Unicode编码

>>>ord('A')     #获取字符的整数表示
65
>>>chr(66)     #把编码转化为对应的字符
'B'
>>>'\u4e2d\u6587    #中文也有编码
'中文'>>>'ABC'.encode('ascii')     #编码为指定的bytes
b'ABC'    #bytes数据用带 b 前缀的单引号或双引号表示
>>> '中文'.encode('utf-8')
b'\xe4\xb8\xad\xe6\x96\x87'>>> b'ABC'.decode('ascii')    #bytes变为str
'ABC'
>>> b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')
'中文'
>>> b'\xe4\xb8\xad\xff'.decode('utf-8', errors='ignore')    #忽略错误部分
'中'>>>len(xxx)    #len计算str字符数、bytes字节数

格式化输出字符串有多种形式

# %格式化
>>>'Hello, %s' % 'python'
'Hello, python'
>>>'%2d - %02d' %(3, 1)
3 - 01
>>>'%.2f' %3.1415926
3.14
>>> 'Age: %s. Gender: %s' % (25, True)
'Age: 25. Gender: True'# format()格式化
>>>'Hello, {0}. This is {1:.1f}%'.format('小牛', 17.125)
'Hello, 小牛. This is 17.1%'# f-string格式化
>>> r = 2.5
>>> s = 3.14 * r ** 2
>>> print(f'The area of a circle with radius {r} is {s:.2f}')
The area of a circle with radius 2.5 is 19.62

part three:list and tumple

list列表,有序集合,可随时删改元素

>>>List = ['Bob', 35, 44.0]
>>>List[2]  
44.0
>>>list[-1]
44.0
>>>len(List)
3#插入删除
>>>List.append('Tom')  
>>>List
['Bob', 35, 44.0, 'Tom']
>>>List.insert(1, 'Mack')
>>>List
['Bob', 'Mack', 35, 44.0, 'Tom']
>>>List.pop()   #可添加参数指定位置,缺省默认为最后一个
['Bob', 'Mack', 35, 44.0]
# list元素可为不同类型,可嵌套

** tips about insert**

list使用insert(pos, val)插入值,由于list是可变对象,该函数返回值是None
写法L_1 = L.insert(x, y)返回的L_1是空值!!!

tumple元组与list类似,但一旦初始化就不能修改

>>>t = ()       #空元组
>>>t = (1,)     #一个元素的元组后面要加逗号
>>>t = (1, 3)   #多元素元组
>>>t = ('a', 'b', ['X', 'Y'])  #元组不可变,但固定指向列表,但列表内元素可变

part four:Conditional judgment

条件判断是计算机可以做自动化任务的关键能力之一

s = input('请输入你的年龄')
age = int(s)
if age >= 18:print('adult')
elif age >= 6:print('teenager')
else:print('kid')

tips about input

python3中input返回的永远是字符串类型,需要其它类型时用强制转换实现。

当条件判断有很多分支时,可以考虑使用模式匹配

age = 15match age:case x if x < 10:  #绑定到变量print(f'< 10 years old: {x}')case 10:print('10 years old.')case 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18:print('11~18 years old.')case 19:print('19 years old.')case _:    #其它情况print('not sure.')#匹配列表
args = ['gcc', 'hello.c', 'world.c']
# args = ['clean']
# args = ['gcc']match args:# 如果仅出现gcc,报错:case ['gcc']:print('gcc: missing source file(s).')# 出现gcc,且至少指定了一个文件:case ['gcc', file1, *files]:print('gcc compile: ' + file1 + ', ' + ', '.join(files))# 仅出现clean:case ['clean']:print('clean')case _:print('invalid command.')

part five:Loop

循环简化相似任务的操作流程

# 依次遍历list或tumple中元素
names = ['Bob', 'Tom', 'mack']
for name in names:print(name)
for x in range(101):print(x)# while循环
n = 10
while n > 0:print(n)

break\continue可以放在循环代码段中。break代表结束循环,continue表示跳过本轮循环。

part six:dict and set

dict字典以键值对形式存储数据,

d = {'first':3, 'second': 5, 'end':7}
print(d[first])  #3# 避免key不存在的错误
'first' in d  #Trued.get('second', -1)  #第二个参数表示key不存在时返回的值,默认为None#pop(key)用于删除

牢记,dict的key 必须是不可变对象

set集合用于表示无序不重复数据集

s = set([1, 2, 3, 4])  #创建set需要list作为输入s.add(x) #添加, 重复元素自动过滤
s.remove(x)  #删除
#set可以执行集合相关的操作,"&" "|"操作都可以 

tips about Immutable objects

对于不变对象来说,调用对象自身的任意方法,不会改变该对象自身的内容。事实上,这些方法会创建新的对象并返回,这样,就保证了不可变对象本身永远是不可变的。

http://www.lryc.cn/news/300347.html

相关文章:

  • 学习笔记——ENM模拟
  • 数值类型的运算方式总结
  • 【Redis快速入门】Redis三种集群搭建配置(主从集群、哨兵集群、分片集群)
  • [嵌入式系统-14]:常见实时嵌入式操作系统比较:RT-Thread、uC/OS-II和FreeRTOS、Linux
  • 基于AI Agent探讨:安全领域下的AI应用范式
  • Stable Diffusion 模型下载:ToonYou(平涂卡通)
  • 机器学习:分类决策树(Python)
  • 红队打靶练习:HACK ME PLEASE: 1
  • 《VulnHub》GoldenEye:1
  • html的表格标签
  • 蓝桥杯(Web大学组)2022省赛真题:展开你的扇子
  • 复习基础知识1
  • java8-用流收集数据-6
  • [前端开发] JavaScript基础知识 [上]
  • 初识Qt | 从安装到编写Hello World程序
  • 机器学习:过拟合和欠拟合的介绍与解决方法
  • 变分自编码器(VAE)PyTorch Lightning 实现
  • 设备驱动开发_1
  • C语言位域(Bit Fields)知识点精要解析
  • 离散数学——图论(笔记及思维导图)
  • opencv图像像素的读写操作
  • Java学习第十四节之冒泡排序
  • 第1章 计算机网络体系结构-1.1计算机网络概述
  • 蓝桥杯:C++排序
  • 数据结构-堆
  • 奔跑吧小恐龙(Java)
  • Ubuntu 1804 And Above Coredump Settings
  • docker 2:安装
  • LeetCode Python - 19.删除链表的倒数第N个结点
  • Spring Boot 笔记 005 环境搭建