Python学习笔记:第二站 七十二变

Python学习笔记


课程笔记参考B站视频: Python全栈开发教程


第二站 七十二变

1. 二进制与字符编码

为了在计算机上存储英文字母等常见的符号,人们开发出ASCII码表。但是里面没有中文等其他国家的文字,于是下面给出字符编码演进的过程:

二进制01
ASCII
GB2312
GBK
GB18030
Unicode
UTF-8
其他国家的字符编码
  • GB2312在1980年推出,可以表示简体中文7445个字符。
  • GBK在1995年推出,不仅可以表示简体中文,还可以表示繁体中文。
  • GB18030在2000年推出,可以表示27484个字符,将少数民族的字符也纳入考量,并规定每个字符可以由1/2/4个字节组成。
  • Unicode几乎包含了全世界的字符,规定所有字符都使用两个字节表示。可以参考Unicode汉字编码表
  • UTF-8规定英文用1个字节表示,中文用3个字节表示。

代码演示:

print(chr(0b0100111000000001)) #0b表示二进制
print(ord('丁'))               #输出字符的十进制Unicode表示
  • 运行结果:
19969

2. Python中的标识符与保留字

保留字指的是一些单词被我赋予了特定的意义,这些单词在给任何对象起名字的时候都不能用。执行下面的代码可以查看所有的保留字:

import keyword
print(keyword.kwlist)
  • 美化后的运行结果:
['False' , 'None'    , 'True'  , 'and'   , 'as'      , 'assert', 
 'async' , 'await'   , 'break' , 'class' , 'continue', 'def'   ,
 'del'   , 'elif'    , 'else'  , 'except', 'finally' , 'for'   , 
 'from'  , 'global'  , 'if'    , 'import', 'in'      , 'is'    ,
 'lambda', 'nonlocal', 'not'   , 'or'    , 'pass'    , 'raise' ,
 'return', 'try'     , 'while' , 'with'  , 'yield']
#注:原来输出的只有一行。

标识符则是你给变量、函数、类、模块和其它对象所起的名字。一般有如下规则:

只能包含字母、数字、下划线_
不能以数字开头
不能是保留字
严格区分大小写

3. Python中的变量

Python中的变量本身存储的是对象的引用(标识),而这个对象则包含了三部分:

  1. 标识:表示对象所存储的内存地址,使用内置函数id(obj)来获取。
  2. 类型:表示的是对象的数据类型,使用内置函数type(obj)来获取。
  3. 值:表示对象所存储的具体数据,使用print(obj)可以将值进行打印输出。

并且当变量多次赋值之后,变量名会指向新的空间。(个人感觉:下面的代码示例中没有指向新的地址,是因为解释器的内存分配机制非常强大)。

演示代码:

name = "哈利路亚"
print("标识:\t",id(name))
print("类型:\t",type(name))
print("值:\t\t",name)

name = "德玛西亚"
print("标识:\t",id(name))
print("类型:\t",type(name))
print("值:\t\t",name)
  • 运行结果:
标识:	 1611584986064
类型:	 <class 'str'>
值:	 哈利路亚
标识:	 1611585140464
类型:	 <class 'str'>
值:	 德玛西亚

4.Python中的数据类型

常见类型代码表示示例
整数类型int98
浮点数类型float3.14159
布尔类型boolTrue, False
字符串类型str’人生苦短,我用Python’

本节主要介绍Python中的数据类型(参考上表),下面来依次进行介绍:

1. 整数类型

英文为integer,简写为int,可以表示正数、负数和零,下面是一些说明:

进制基本数表示形式举例
十进制0,1,2,3,4,5,6,7,8,9默认的进制118
二进制0,1以0b开头0b1110110
八进制0,1,2,3,4,5,6,7,8以0o开头0o166
十六进制0,1,2…,D,E,F以0x开头0x76

下面是代码示例:

# 可以表示整数、负数、0
n1 = 90
n2 = -76
n3 = 0
print(n1, type(n1))
print(n2, type(n2))
print(n3, type(n3))
# 整数可以表示为二进制、十进制、八进制、十六进制
print('十进制:', 118)
print('二进制:', 0b1111)
print('八进制:', 0o12) # “欧”一般小写,否则会与零混淆
print('十六进制:', 0xff)
  • 运行结果
90 <class 'int'>
-76 <class 'int'>
0 <class 'int'>
十进制:	 118
二进制:	 15
八进制:	 10
十六进制: 255

可以注意到:

  • Python中不需要自己定义数据的类型(自己定义反而会报错)。
  • print()打印的两个元素之间会有一个空格。

2. 浮点类型

浮点数整数部分和小数部分组成,由符号位、阶码、尾数三部分构成,可以参考百度百科 “单精度浮点数”“双精度浮点数”。然而,浮点数存储不精确性,使用浮点数进行计算时,可能会出现小数位数不确定的情况。

下面是代码示例:

# 浮点数定义演示
a = 3.14159
print(a, type(a))
# 浮点数的输出不精确
print(1.1 + 2.1)
print(1.1 + 2.2)
# 解决浮点数计算不精确的办法
from decimal import Decimal # 导入decimal
print(Decimal('1.1') + Decimal('2.2'))
  • 运行结果
3.14159 <class 'float'>
3.2
3.3000000000000003
3.3

可以看到,Python中导入decimal模块可以解决浮点数计算不精确的问题。

3. 布尔类型

布尔类型用来表示真或假的值,True表示真(1),False表示假(0),布尔值也可以转化为整数进行计算。

下面是代码示例:

# 布尔类型展示
b1 = True
b2 = False
print(b1, type(b1))
print(b2, type(b2))
# 布尔类型可以转化成整数计算
print(b1 + 1)
print(b2 + 1)
  • 运行结果
True <class 'bool'>
False <class 'bool'>
2
1

4. 字符串类型

字符串又被称为不可变的字符序列,可以使用单引号’’、 双引号” ”、三引号’’’ ’’’””” ”””来定义。单引号和双引号定义的字符串必须在一行,三引号定义的字符串可以分布在连续的多行。

下面是代码示例:

str1 = '去码头整点薯条'        # 单引号
str2 = "去码头整点薯条"        # 双引号
str3 = '''去码头整点薯条'''    # 三引号
str4 = '''去码头
整点薯条'''                   # 三引号可以换行
print(str1, type(str1))
print(str2, type(str2))
print(str3, type(str3))
print(str4, type(str4))
  • 运行结果
去码头整点薯条 <class 'str'>
去码头整点薯条 <class 'str'>
去码头整点薯条 <class 'str'>
去码头
整点薯条 <class 'str'>

5. 数据类型转换

将不同数据类型的数据拼接在一起,需要进行数据类型转换。下面是代码示例:

name = 'Cheems'
age = 2022
print(type(name), type(age))
print('my name is', name, '. my age is', age,'.')
# print('my name is '+name+'. my age is'+age+'.')     # 会报错
print('my name is '+name+'. my age is '+str(age)+'.') # 类型转换
  • 运行结果
my name is Cheems . my age is 2022 .
my name is Cheems. my age is 2022.

注意到使用逗号会有多余的空格,而使用加号(称为连接符)就不会有多余的空格。

上图总结的Pyhton中的数据转换方式,具体为:

函数名作用注意事项举例
str()将其他数据类型转换成字符串也可以直接用引号进行转换str(123)
‘123’
int()将其他数据类型转换成整数1.文字类和小数类字符串,无法转化成整数
2.浮点数转化成整数会抹零取整
int('1231)
int(9.8)
float()将其他数据类型转换成浮点数1.文字类无法转成整数
2.整数转成浮点数,末尾为.0
float(‘9.8’)
float(9)

下面是代码示例:

print('-----------------将其他数据类型转成str类型---')
a1 = 10
f1 = 19.8
b1 = True
print(type(a1), type(f1), type(b1))
print(str(a1), type(str(a1)))
print(str(f1), type(str(f1)))
print(str(b1), type(str(b1)))
print('-----------------将其他数据类型转成int类型---')
s1 = '128'      # 整数字符串
s2 = '99.57'    # 小数字符串
s3 = 'hello'    # 普通字符串
print(type(s1), type(s2), type(s3), type(f1), type(b1))
print(int(s1), type(int(s1)))    # 整数字符串可以转为int
# print(int(s2), type(int(s2)))  # 会报错,小数字符串不能转为int
# print(int(s3), type(int(s3)))  # 会报错,普通字符串不能转为int
print(int(f1), type(int(f1)))    # 浮点数会自动去尾
print(int(b1), type(int(b1)))
print('-----------------将其他数据类型转成float类型---')
print(type(s1), type(s2), type(s3), type(a1), type(b1))
print(float(s1), type(float(s1)))
print(float(s2), type(float(s2)))
# print(float(s3), type(float(s3)))  # 会报错,非数字串不能转换成浮点数
print(float(a1), type(float(a1)))    # int型会加上.0
print(float(b1), type(float(b1)))    # 布尔型也会加上.0
  • 运行结果
-----------------将其他数据类型转成str类型---
<class 'int'> <class 'float'> <class 'bool'>
10 <class 'str'>
19.8 <class 'str'>
True <class 'str'>
-----------------将其他数据类型转成int类型---
<class 'str'> <class 'str'> <class 'str'> <class 'float'> <class 'bool'>
128 <class 'int'>
19 <class 'int'>
1 <class 'int'>
-----------------将其他数据类型转成float类型---
<class 'str'> <class 'str'> <class 'str'> <class 'int'> <class 'bool'>
128.0 <class 'float'>
99.57 <class 'float'>
10.0 <class 'float'>
1.0 <class 'float'>

5. Python中的注释

注释是在代码中对代码的功能进行解释说明的标注性文字,可以提高代码的可读性。注释的内容会被Python解释器忽略。通常包括以下三种注释类型:

注释类型表示方法
单行注释以”#”开头,直到换行结束
多行注释并没有单独的多行注释标记,将一对三引号之间的代码称为多行注释
中文编码声明注释在文件第一、二行加上中文声明注释,用以指定源码文件的编码格式

下面是代码示例:

#coding:gbk

# 输出功能(单行注释)
print('hello')

# 多行注释
"""
嘿嘿,我是多行注释哦~
"""c

6. 本章作业

1. 输出杨老师出版的图书信息

示例:

关于命名的规范:变量名有多个单词使用下下划线;类名称首字母大写(驼峰式)。
本节使用变量+print()函数的方式输出,一些特殊符号从符号大全网址中直接复制:http://fhdq.net/

2. 输出《红楼梦》中的金陵十二钗前五位

示例:

下面是源码示例:

print('方法一:使用定义变量的方式输出'.center(25,'-'))
name1 = '林黛玉'
name2 = '薛宝钗'
name3 = '贾元春'
name4 = '贾探春'
name5 = '史湘云'
print('➊\t' + name1)
print('➋\t' + name2)
print('➌\t' + name3)
print('➍\t' + name4)
print('➎\t' + name5)
print('方法二:使用列表输出'.center(25,'-'))
lst_name = ['林黛玉', '薛宝钗', '贾元春', '贾探春', '史湘云']
lst_sig = ['➊', '➋', '➌', '➍', '➎']
for i in range(5):
   print(lst_sig[i] + '\t' + lst_name[i])
print('方法三:使用列表+zip输出'.center(25,'-'))
for zip_sig,zip_name in zip(lst_sig,lst_name):
   print(zip_sig + '\t' + zip_name)
print('方法四:使用字典输出'.center(25,'-'))
dic_name = {'➊':'林黛玉', '➋':'薛宝钗', '➌':'贾元春', '➍':'贾探春', '➎':'史湘云'}
for i in dic_name:
   print(i + '\t' + dic_name[i])
  • 运行结果:
-----方法一:使用定义变量的方式输出-----
➊	林黛玉
➋	薛宝钗
➌	贾元春
➍	贾探春
➎	史湘云
--------方法二:使用列表输出-------
➊	林黛玉
➋	薛宝钗
➌	贾元春
➍	贾探春
➎	史湘云
------方法三:使用列表+zip输出-----
➊	林黛玉
➋	薛宝钗
➌	贾元春
➍	贾探春
➎	史湘云
--------方法四:使用字典输出-------
➊	林黛玉
➋	薛宝钗
➌	贾元春
➍	贾探春
➎	史湘云

3. 输出图书音像勋章

示例:

本节的关键在与改变输出的颜色。关于一些格式说明和演示,可以参考博客园文章 “python_控制台输出带颜色的文字方法
下面是代码示例:

print('\033[0;35m' + '图书音像输出'.center(20,'-') + '\033[m')
print('\033[0;35m' + '❀图书音像勋章\t✪专享活动' + '\033[m')
print('\033[0;35m' + '❤专属优惠\t\t☎优惠提醒' + '\033[m')
  • 运行之后在控制台看到颜色的变化。

4. 输出你的身体指标

示例:

个人感觉这个项目的最大的难点在于如何避免用户的不规范输入,其他没了。下面是代码示例:

print('开始运行BMI计算器......')
while True:
   height = input('请输入您的身高(cm):')
   while not height.isnumeric():
       height = input('输入错误!请输入您的身高(cm):')
   weight = input('请输入您的体重(kg):')
   while not weight.isnumeric():
       weight = input('输入错误!请输入您的体重(kg):')
   height = float(height)
   weight = float(weight)
   bmi = weight/((height/100)**2)
   if bmi<18.5:
       res = '消瘦'
   elif 18.5<=bmi<25:
       res = '正常'
   elif 25<=bmi<28:
       res = '超重'
   elif 28<=bmi<32:
       res = '肥胖'
   elif bmi>=32:
       res = '非常肥胖'
   print('您的计算结果'.center(20,'-'))
   print('身高:' , height, 'cm')
   print('体重:' , weight, 'kg')
   print('BMI指数:{:.2f} kg/m^2'.format(bmi))
   print('您的体质为:' + res)
   print(''.center(24,'-'))
   con_judge = input('是否继续测算?y/n ')
   while con_judge!='n' and con_judge!='N' and con_judge!='y' and con_judge!='Y':
       con_judge = input('输入错误!是否继续测算?y/n ')
   if con_judge=='n' or con_judge=='N':
       break
   else:
       continue
  • 运行结果:
开始运行BMI计算器......
请输入您的身高(cm)175.5
请输入您的体重(kg)79.5
-------您的计算结果-------
身高: 175.5 cm
体重: 79.5 kg
BMI指数:25.81 kg/m^2
您的体质为:超重
------------------------
是否继续测算?y/n n
感谢您的使用!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

虎慕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值