Python基础(3)

P21 记录个人信息 2024/6/17

一、变量快速入门

# @Author :zjc
# @File   :02_quick_start.py
# @Time   :2024/6/17 20:23

name = "tom" # 字符串
age = 20 # 整型
score = 90.1 # 浮点型
gender = "男" # 字符串

# 第一种输出:
print("个人信息如下")
print(name)
print(age)
print(score)
print(gender)

# 第二种输出:
print("个人信息如下:", "\n", name, age, score, gender)

结果

个人信息如下
tom
20
90.1
男
个人信息如下: 
 tom 20 90.1 男

Process finished with exit code 

image-20240617203221601

P22 格式化输出 2024/6/18

一、格式化方式

1、%操作符
参考: https://blog.csdn.net/hesongzefairy/article/details/104179419

# %操作符格式化输出
print("个人信息:%s %d %s %.2f" % (name, age, gender, score))

image-20240618170822263

2、format函数
参考: https://www.runoob.com/python/att-string-format.html

# format()函数
# 1.每一个大括号对应一个占位符
# 2.中间同样可以自由填充
# 3.不用管是什么类型
# 4.变量填充少于括号数会报错,大于可以
print("个人信息:{} {} {} {}" .format(name, age, gender, score))

image-20240618171353328

3、f-strings

参考: https://blog.csdn.net/weixin_44200553/article/details/130408971

菜鸟:https://www.runoob.com/python/att-string-format.html

# f-strings
# 1.添加f,字符串含义发生变化
# 2.使用未定义变量同样报错
print(f"个人信息:{name} {age} {gender} {score}")

P23 加号的使用 2024/6/18

一、使用方法

1、当左右两边都是数值型时,则做加法运算

2、当左右两边都是字符串,则做拼接运算

3、举例说明

# @Author :zjc
# @File   :04_add_operater.py
# @Time   :2024/6/18 21:51

# + 的使用案例

name = "king"
score = 50.8

print(score + 90)  # 140.8
print(name + " hi")  # king hi
print("100" + "98") # 10098
print(30 + 80.8)

二、课堂测试

image-20240618215603245

image-20240618215718312

P24 数据类型概述 2024/6/19

一、基本数据类型

image-20240619210238593

二、基本介绍

image-20240619210654227

三、type() 函数

1、通过type()函数,来查看数据的类型

2、老韩说明:关于什么是函数,后面我们会重点讲解,目前先暂时放一放

image-20240619210946365

3、语法:type(object)

  • 老韩解读: object就是你要查看类型的数据,可以是一个具体的数据(即:字面量),也可以是变量(也就是查看该变量指向的数据的类型)

4、案例说明

# @Author :zjc
# @File   :05_type_func.py
# @Time   :2024/6/19 21:10

#定义变量
age = 80
score = 77.5
gender = '男'
name = "贾宝玉"
is_pass = True # bool类型

# 1.查看变量的类型(本质是查看变量指向数据的类型)
print(type(age))
print(type(score))
print(type(gender))
print(type(name))
print(type(is_pass))

# 2. 可以直接查看具体的值(字面量)
print(f"hello的类型是{type('hello')}")
print(f"hello的类型是{type(88.0)}")
print(f"hello的类型是{type(30)}")
print(f"hello的类型是{type(True)}")

P25 整数类型 2024/6/20

一、基本介绍

image-20240620212641684

二、整型的使用细节

1、Python中的整型,可以表示很大的数(官方: the limit (4300 digits) for integer)

# @Author :zjc
# @File   :06_int_detail.py
# @Time   :2024/6/20 21:28

# 讲解int类型的细节
# 在python中,int可以表示很大的数

n3 = 9 ** 8888

print("n3=", n3, "\n", type(n3))

image-20240621170655973

2、Python的整数有十进制,十六进制,八进制,二进制

-十进制就是我们最常见的写法,比如1、66、123

-十六进制写法: 加前缀0x,由0-9和A-F的数字和字母组合

-八进制写法: 加前缀0o,由0-7数字组合

# python的整数有十进制,十六进制,八进制,二进制表示

#  十进制
print(10)
# 十六进制
print(10)
# 八进制
print(0o12)
# 二进制
print(0b10)

image-20240621171642225

3、Python中的整型占多多少个字节?(难度)

学编程的常识:

字节 (byte):计算机中基本存储单元

位 (bit):计算机中的最小存储单位1byte = 8 bit

image-20240621172214397

1)字节数随着数字增大而增大(即:python整型是变长的)

2)每次的增量是4个字节

3)参考文档:
https://zxi.mytechroad.com/blog/desgin/python%E4%B8%AD%E7%9A%84%E6%95%B4%E5%9E%8B%E5%8D%A0%E5%A4%9A%E5%B0%91%E4%B8%AA%E5%AD%97%E8%8A%82%EF%BC%9F/

说到计算机中的整型,相信很多人都会联想到32位整型(或者int),是程序员日常生活中用的最多的一种类型。32位整型顾名思义,占用32个位也就是4个字节,取值范围−2,147,483,648~ 2,147,483,647 。C/C++中是4个字节,Java中也是4个字节,但是Python中呢?

我们知道Python中也有int类,而且非常好用,原生支持高精度计算。但是Python中的一个整型到底占用多少字节呢?我相信绝大多数的Python程序员从未想过这一点,越是习以为常的东西越是不会在意它的存在

在Python中,如果想要知道一个对象所占用的内存大小,只需要使用sys.getsizeof这个API就可以了。那就让我们来试一下不同的整数

print(sys.getsizeof(0))        # 24
print(sys.getsizeof(1))        # 28 
print(sys.getsizeof(2))        # 28
print(sys.getsizeof(2**15))    # 28
print(sys.getsizeof(2**30))    # 32
print(sys.getsizeof(2**128))   # 44

从上面的小实验可以看出,一个整型最少要占24字节(0),1开始就要占用28个字节,到了2的30次方开始要占用32个字节,而2的128次方则要占用44个字节。我们可以得到两点规律,1. 字节数随着数字增大而增大。2. 每次的增量是4个字节。 好像至此已经回答了我们的题目中的问题:Python中的整型占多少个字节?答案是:变长的(相对于int32的定长),而且最少24个字节。

案例演示

在python中可以通过sys.getsizeof 返回对象(数据)大小(按照字节单位)

image-20240621174351566

image-20240621174419505

image-20240621174505781

# 字节数随着数字增大而增大
n1 = 0
n2 = 1
n3 = 2
n4 = 2 ** 15
n5 = 2 ** 30
n6 = 2 ** 128
# 在python中可以通过sys.getsizeof 返回对象(数据)大小(按照字节单位)
print(n1, sys.getsizeof(n1), "类型",type(n1))
print(n2, sys.getsizeof(n2), "类型",type(n2))
print(n3, sys.getsizeof(n3), "类型",type(n3))
print(n4, sys.getsizeof(n4), "类型",type(n4))
print(n5, sys.getsizeof(n5), "类型",type(n5))
print(n6, sys.getsizeof(n6), "类型",type(n6))

image-20240621175140426

P26 浮点类型 2024/6/21

一、基本介绍

  • Python的浮点类型可以表示一个小数,比如123.4,7.8 ,-0.12等等

1、浮点数表示形式如下

十进制数形式: 她:5.12 .512(必须有小数点)

科学计数法形式:如:5.12e2,5.12E-2

案例演示

# @Author :zjc
# @File   :07_float_detail.py
# @Time   :2024/6/21 21:04

# 1.浮点类型的表示形式
n3 = 5.12
n4 = .512

print("n3=", n4)

# 2.科学计数法的表现形式
n5 = 5.12e2 # 5.12乘以10的2次方
n6 = 5.12E-2 # 5.12除以10的2次方
print(n5)
print(n6)

image-20240621211119128

2、浮点数有大小限制边界值为:
max=1.7976931348623157e+308

min=2.2250738585072014e-308

print(sys.float_info.max)
print(sys.float_info.min)

image-20240621220329543

image-20240621215256894

  1. 浮点类型计算后存在精度的损失,可以使用Decimal类进行精确计算
# 精度的损失
# 如何解决:
# 1. 为了避免浮点数的精度损失
# 2. 如果需要使用decimal类,需要导入decimal类
# 3. 从decimal模块导入decimal类
from decimal import Decimal

b = 8.1 / 3  # 2.7
print(b) # 2.6999999999999997

c = Decimal("8.1") / Decimal("3")
print(c) # 2.7

image-20240621220406908

P27 布尔类型 2024/8/5

一、基本介绍

1、布尔类型也叫bool类型,取值TrueFalse

2、True和 False都是关键字,表示布尔值

3、bool类型适于逻辑运算

一般用于程序流程控制[这个后面会详细介绍]

-条件控制语句-循环控制语句,比如判断某个条件是否成立,或者在某个条件满足时执行某些代码

代码演示:

# @Author :zjc
# @File   :08_bool_detail.py
# @Time   :2024/8/5 10:31

# 1、bool 类型的基本使用

num1 = 100
num2 = 200

if num1 < num2:
    print("num1 > num2")

# 使用变量来接收num1大于num2的值:
# 把num1>num2的结果赋值给num2
result = num1 > num2
print("result = ", result)  # result =  False
print("result的类型", type(result))  # result的类型 <class 'bool'>

# <class 'bool'> 这输出1>-1值的类型也是bool
print(type(1 > -1))

二、使用细节

1、布尔类型只有两个值:TrueFalse

2、布尔类型可以和其他数据类型进行比较,比如数字、字符串等。在比较时,Python 会将True视为1,False视为0

b1 = True
b2 = False

print(b1 + 10) # 10
print(b2 + 10) # 11

# 以下会输出吗?会输出Hi和Hello
if b1 == 1:
    print("Hi")
if b2 == 0:
    print("Hello")

3、在Python中,非0被视为真值,0值被视为假值

if 0:
    print("haha")
if 1.1: # 有些语言是不支持的
    print("hihi") # 会输出
if "你好": # 同样会输出,将字符串视为bool值
    print("nihao") 

4、应用实例:bool_ detail.py

**课堂练习:**以下语句是否被执行?

image-20240805111605772

P28 字符串类型 2024/8/5

一、基本说明

1、字符串是 Python中很常用的数据类型,通俗来说,字符串就是字符组成的一串内容

2、使用引号('或")包括起来,创建字符串。

# 字符串的使用注意事项:

# 单引号 和 双引号 小区别(其实用转义符也可以解决)
# print("tom说"hello"") # 此时使用双引号引用后面的内容就不可以

print("tom说'hello'") # 此时使用双引号引用后面的内容就不可以
print('jack说"hello"')  # 将外面换成单引号就可以了

3、str就是string的缩写,在使用type()查看数据类型时,字符串类型显示的是str。

print(f"str的类型{type(str)}")
# str的类型<class 'type'>

4、通过 + 号可以连接字符串

print("zhang " + "is celebrity")

二、字符串使用注意事项

1、Python不支持单字符类型,单字符在 Python中也是作为一个字符串使用。

str3 = "A"
print("str3类型", type(str3))
# str3类型 <class 'str'>

2、用三个单引号’‘‘内容’’',或**三个双引号"““内容””"**可以使字符串内容保持原样输出,在输出格式复杂的内容是比较有用的,比如输出一段代码.

content = """
noun
蟒;蚺蛇
a large tropical snake that kills animals 
for food by winding its long body around them and crushing them
"""
print(content)
# 但是三个双引号/单引号里面不能s再包含三个双引号/单引号。

3、在字符串前面加**‘r’**可以使整个字符串不会被转义。

# 这个需求就是我们不要转义,直接输出\n\t
# 此时我们直接输出
str4 = r"jack\ntom\tking"
print(str4)

4、应用实例: str_detail.py

P29 字符串驻留机制 2024/8/6

一、面试扩展知识

●什么是字符串驻留机制

说明: Python仅保存一份相同且不可变字符串,不同的值被存放在字符串的驻留池中,Python的驻留机制对相同的字符串只保留一份拷贝,后续创建相同字符串时,不会开辟新空间,而是把该字符串的地址赋给新创建的变量。

image-20240806152036414

内存图

image-20240806153153093

image-20240806153529395

image-20240806153724786

代码演示

# 字符串的驻留机制
str1 = "hello"
str2 = "hello"
str3 = "hello"

# ID函数可以返回对象/数据的内存地址
print("str1的地址:",id(str1))
print("str2的地址:",id(str2))
print("str3的地址:",id(str3))

image-20240806153808200

二、驻留机制的几种情况

  • 驻留机制几种情况讨论(注意:需要在交互模式下win+r->python)

1、字符串是由**26个英文字母大小写,0-9,_**组成

image-20240806154341451

  • 若不满足以上条件,是不会发生驻留机制的

image-20240806154538910

2、字符串长度为0或者1

# 1、长度为0或1
>>> a = ""
>>> b = ""
>>> id(a)
140727539428608
>>> id(b)
140727539428608
>>>

# 2、长度为0或1,只有一个#号
>>> a = "#"
>>> b = "#"
>>> id(a)
140727539467576
>>> id(b)
140727539467576
>>>

3、字符串在编译时进行驻留,而非运行时

image-20240806155452871

4、**[-5,256]**的整数数字

image-20240806155700233

image-20240806155737612

三、Pycharm对字符串进行优化处理

a = "abcABC_123#"
b = "abcABC_123#"

print(id(a),id(b))

image-20240806160806566

  • 字符串驻留机制的好处:

当需要值相同的字符串时,可以直接从字符串池里拿来使用,避免频繁的创建和销毁,提升效率和节约内存

  • 补充

image-20240806161123123

image-20240806162231809

P30 数据类型转换 2024/8/6

一、问题引入

image-20240806163513914

n1 = 100
result = "n1的值为:" + n1
print(result)
  • 很明显是不可以的,直接就报错了

image-20240806163843667

二、隐式类型转换

  1. Python变量的类型不是固定,会根据变量当前值在运行时决定的,可以通过内置函数type(变量)来查看其类型,这种方式就是隐式转换,有的书也称为自动转换。

image-20240806164435905

image-20240806164643566

  1. 在运算的时候,数据类型会向高精度自动转换

image-20240806165736363

三、显式类型转换

1、如果需要对变量数据类型进行转换,只需要将数据类型作为函数名即可,这种方式就是显示转换**/强制转换**

2、以下几个内置的函数可以完成数据类型之间的转换。函数会返回一个新的对象/值,就是强制转换后的结果

image-20240806170123184

# 显式类型转换案例

i = 10
j = float(i)
print("j的类型",type(j), "j的值", j)

k = str(i)
print("k的类型",type(k), "k的值", k) # str ,"10"

image-20240806170923517

四、显式类型转换的注意事项

1、不管什么值的int,float都可以转成**str, str(x)**将对象转换为字符串(Python中一切皆为对象)

n1 = 100
n2 = 123.65
print(str(n1)) # 100
print(str(n2)) # 123.65

2、int转成float时,会增加小数部分,比如123->123.0,float转成int时,会去掉小数部分。比如:123.65->123

n1 = 100
n2 = 123.65
print(float(n1)) # 100.0
print(int(n2)) # 123

3、str转int,float使用int(x)float(x)将对象×转换为int/float

n3 = "12.3"
print(float(n3))
print(int(n3)) # 有小数点是无效的
# ValueError: invalid literal for int() with base 10: '12.3'

4、在将str类型转成基本数据类型时,要确保str值能够转成有效的数据,比如我们可以把"123”,转成一个整数,但是不能把"hello”转成一个整数,如果格式不正确,程序会报 ValueError,程序就会终止。

n4 = "hello"
print(float(n4))
# ValueError: could not convert string to float: 'hello'

5、对一个变量进行强制转换,会返回一个数据/值,注意,强制转换后,并不会影响原变量的数据类型(即:不会影响原变量指向的数据/ 值的数据类型)

image-20240807081828430

i = 10
j = float(i)

print("i的值为:",i,"类型为:",type(i))
print("j的值为:",j,"类型为:",type(j))

image-20240807082803088

五、课堂练习

image-20240807082913661

# @Author :zjc
# @File   :13_type_change_exercise.py
# @Time   :2024/8/7 8:29

i = 10
j = float(i)

print(type(i)) # int
print(type(j)) # float

i = j + 1
print(type(i)) # float
print(type(j)) # float

print(i)  # 11.0
print(int(i)) # 11
print(type(i)) # float

P31 本章作业 2024/8/7

image-20240807084811928

image-20240807084838922

image-20240807085643752

# @Author :zjc
# @File   :14_homework_01.py
# @Time   :2024/8/7 8:51

name = "jack"
age = 20
score = 90.2
gender = "男"
hobby = "打篮球"

# 按照规定的格式输出信息
print("姓名\t\t年龄\t\t成绩\t\t性别\t\t爱好\n" + name + "\t"
      + str(age) + "\t\t" + str(score)
      + "\t"+ gender + "\t\t" + hobby)

P32 本章小结 2024/8/7

image-20240807091745907

image-20240807091805856

  • 22
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一颗星星辰

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

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

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

打赏作者

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

抵扣说明:

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

余额充值