学习目标:
Python学习三、
学习内容:
1、数据类型和变量
2、字符串和编码
3、输出格式化
1、数据类型和变量
- python中的数据类型:整数、浮点数、字符串、布尔值、空值
1、整数:Python可以处理任意大小的整数,当然包括负整数
- 普通整数:1,100,-8080,0
- 十六进制数:0xff00,0xa5b4c3d2
- 在数字中间以_分隔的数:10_000_000_000
2、浮点数:浮点数也就是小数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的
把10用e替代:1.23x109就是1.23e9、0.000012就是1.2e-5
3、 字符串:字符串是以单引号’或双引号"括起来的任意文本
- 字符串内部既包含’又包含"用转义字符\来标识:‘I’m “OK”!’
- 转义字符\可以转义很多字符,比如\n表示换行,\t表示制表符,字符\本身也要转义,所以\\表示的字符就是\
- Python还允许用r’ ‘表示’ '内部的字符串默认不转义
- Python允许用’’’…’’‘的格式表示多行内容
print(’’‘line1
line2
line3’’’)- 多行字符串’’’…’’‘还可以在前面加上r使用
print(r’’‘hello,\n
world’’’)
结果:hello,\n
world
4、 布尔值:布尔值和布尔代数的表示完全一致,一个布尔值只有True、False两种值,且在python中true和false的首字母大写
- 布尔值可以用and、or和not运算
- 布尔值经常用在条件判断中
5、 空值:是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值
6、 变量:
-
全局变量和局部变量的区别在于作用域,全局变量在整个py文件中声明,全局范围内可以使用;局部变量是在某个函数内部声明的,只能在函数内部使用
-
可以是任意数据类型,变量在程序中就是用一个变量名表示了,变量名必须是大小写英文、数字和_的组合,且不能用数字开头,变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言,java时静态变量,python时动态变量
- 变量在使用过程中可以被后面的新赋值给覆盖
a = ‘ABC’
b = a
a = ‘XYZ’
print(b)
结果为:ABC
7、 常量:所谓常量就是不能变的变量,比如常用的数学常数π就是一个常量,在Python中,通常用全部大写的变量名表示常量
在python中有两种除法:/和//、%
- /除法计算结果是浮点数,即使是两个整数恰好整除,结果也是浮点数
10 / 3
3.3333333333333335
或者
9 / 3
3.0- //除法只取结果的整数部分
10 // 3
3- %只取两个整数相除的余数
10 % 3
1
2、字符串和编码
- Unicode把所有语言都统一到一套编码里,但是会产生多一倍的存储空间,UTF-8编码可以把Unicode转化为“可变长编码”
所以在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码
1、 Python字符串:在最新的Python 3版本中,字符串是以Unicode编码的,也就是说,Python的字符串支持多语言
ord()和chr():
- 单个字符的编码,Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符
ord(‘A’)
65
ord(‘中’)
20013
chr(66)
‘B’
chr(25991)
‘文’
2、 Python的字符串类型是str,在内存中以Unicode表示,一个字符对应若干个字节,在网络上传输,或者保存到磁盘上,就需要把str变为以字节为单位的bytes
Python对bytes类型的数据用带b前缀的单引号或双引号表示
x = b’ABC’
3、 Unicode表示的str通过encode()方法可以编码为指定的bytes,中文无法转ascii码
encode():
‘ABC’.encode(‘ascii’)
b’ABC’
‘中文’.encode(‘utf-8’)
b’\xe4\xb8\xad\xe6\x96\x87’
‘中文’.encode(‘ascii’) Traceback (most
recent call last): File “”, line 1, in
UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position
0-1: ordinal not in range(128)
4、从网络或磁盘上读取了字节流,那么读到的数据就是bytes,要把bytes变为str
decode():
b’ABC’.decode(‘ascii’)
‘ABC’
b’\xe4\xb8\xad\xe6\x96\x87’.decode(‘utf-8’)
‘中文’
5、如果bytes中只有一小部分无效的字节,可以传入errors='ignore’忽略错误的字节
b’\xe4\xb8\xad\xff’.decode(‘utf-8’, errors=‘ignore’)
‘中’
6、计算str包含多少个字符,可以用len()函数(1个中文字符经过UTF-8编码后通常会占用3个字节,而1个英文字符只占用1个字节)
len():
len(b’ABC’)
3
len(b’\xe4\xb8\xad\xe6\x96\x87’)
6
len(‘中文’.encode(‘utf-8’))
6
7、Python源代码是一个文本文件,当Python解释器读取源代码时,为了让它按UTF-8编码读取,需要加上以下两行:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
第一行注释是为了告诉Linux/OS X系统,这是一个Python可执行程序,Windows系统会忽略这个注释;
第二行注释是为了告诉Python解释器,按照UTF-8编码读取源代码,否则,你在源代码中写的中文输出可能会有乱码
3、输出格式化
- Python中,采用的格式化方式和C语言是一致的,用%实现
%d:整数
%f:浮点数
%s:字符串
%x:十六进制整数
%?:占位符
1、格式化整数和浮点数还可以指定是否补0和整数与小数的位数
print('%2d-%02d' % (3, 1))
print('%.2f' % 3.1415926)
3-01
3.14
2、不太确定应该用什么,%s永远起作用,它会把任何数据类型转换为字符串
'Age: %s. Gender: %s' % (25, True)
'Age: 25. Gender: True'
3、字符串里面的%用%%来表示一个%
'growth rate: %d %%' % 7
'growth rate: 7 %'
4、format()方法,它会用传入的参数依次替换字符串内的占位符{0}、{1}……
format():
'Hello, {0}, 成绩提升了 {1:.1f}%'.format('小明', 17.125)
'Hello, 小明, 成绩提升了 17.1%'
5、以f开头的字符串,称之为f-string,它和普通字符串不同之处在于,字符串如果包含{xxx},就会以对应的变量替换
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
实例:
username = input('请输入用户名')
yue = input('请输入月份')
hua = input('请输入话费')
yu = input('请输入余额')
方法一:
print('亲爱的%s你好!你%s月的话费是%.2f,余额是%.2f'%(username,yue,float(hua),float(yu)))
方法二:
print('亲爱的{0}你好!你{1}月的话费是{2:.1f},余额是{3:.2f}'.format(username,yue,float(hua),float(yu)))
方法三:
print('亲爱的'+username+'你好!你'+yue+'月的话费是'+hua+',余额是'+yu)
方法四
username = input("请输入用户名")
month = input("请输入月份")
hf = float(input("请输入话费"))
ye = float(input("请输入余额"))
print(f"亲爱的{username}您好,您的月{month}话费是{hf:.1f}元,余额是{ye:.1f}")