Python的数据类型、变量、字符串、编码、格式化

学习目标:

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}")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值