变量
变量的命名
- 变量名只能包含数字、字母和下划线
- 变量名只能由字母或下划线开头
- 变量名中间不能包含空格
- 变量名不能是python的特殊关键字
如:
# str 合法
# str_1 合法
# str_字符串 非法,有中文字符
# 1_str 非法,以数字开头
# str 1 非法,包含空格
# string 非法,为python特殊关键字
变量的使用
在python中,变量不需要声明再使用,可以直接进行使用或赋值
str = "hello world"
print(str)
在这段简单的python代码中,新建了一个变量 str 来存储字符串"hello world"
在python中,变量可以多次赋值,python将记录变量的最新值
str = "hello world"
print(str)
str = "hello python"
print(str)
# 输出结果
# hello world
# hello python
数据类型
字符串
字符串是一系列字符,比如"this is a string",‘this is a string’。
字符串的级联
str1 = "abc" "def"
str2 = "abc" + "def
print(str1)
print(str2)
# 输出结果:abcdef
两个输出的结果相同 ,这也是python拼接字符串的两种方法
还可以使用 * 来重复字符串,如:
str3 = "abc" * 3 # 整个字符串重复三次
print(str3)
# 输出结果是:abcabcabd
字符串的格式化
格式化是指将变量的值填充到字符串中,并对字符串进行格式化显示
% 字符串格式化
如:
name = input("input your name:")
school = input("input your school:")
sch_info = "my name is %s,my school is %s" % (name, school)
print(sch_info)
字符串会以%控制的形式来输出。下面是一些常见的占位符
占位符 | 标志位控制输出格式 |
%s | 字符串型 |
%d | 十进制整型 |
%b | 二进制整型 |
%0 | 八进制整型 |
%X | 十六进整型 |
%f | 浮点型 |
%.2f | 保留2位小数的浮点型 |
%% | %本身 |
format属性格式化
这个方法是一个非常实用且强大的方法,可以实现很多复杂的对齐要求。
format_str1 = "my name is {},my school is {}".format(name, school)
print(format_str1) # 先输出name,再输出school
format_str2 = "my name is {1},my school is {0}".format(name, school)
print(format_str2) # 先输出school,再输出name
format_str3 = "my name is {nam},my school is {sch}".format(nam=name, sch=school)
print(format_str2) # 先输出school,再输出name
F标志位格式
从python3.6支持的功能
在字符串引号前,加上"f"或者"F";在字符串中,使用大括号**{ }**包裹要替换字段的字符串文字
如:
name = "root"
age = 18
str1 = f"my name is {name}, my age is {age}"
print(str1)
转义字符
在python中也有转义字符,常配合格式控制符一起使用。下面是一些常见的转义字符:
转义字符 | 说明 |
\n | 换行符 |
\r | 回车符 |
\t | 水平制表符Tab |
\a | 响铃 |
\b | 退格符Backspace |
\\ | 反斜线本身 |
\’ | 单引号 |
\" | 双引号 |
\ | 在字符串行尾的续行符,即一行未完,转到下一行继续写。 |
如果不想让转义符生效,可以在引号前加上"r",即原样输出 。如:
print(r"a\tb")
#输出结果:a\tb
字符串的切片
下标取值
将字符串看作一个列表,第一个字符下标为0,第二个字符下标为1,以此类推可以标记出字符串中每一个字符;同理,可以从-1开始由后往前标记每一个字符。如:
字符 | a | b | c | d | e |
正向下标 | 0 | 1 | 2 | 3 | 4 |
反向下标 | -5 | -4 | -3 | -2- | -1 |
str = 'abcde'
str[1] = 'b'
str[-3] = 'c'
切片取值
str [start : end : step]
- [:] 提取从开头(默认位置0)到结尾(默认位置-1)的整个字符串
- [start:] 从start 提取到结尾
- [ :end ] 从开头提取到end - 1
- [start : end] 从start 提取到end - 1
- [start : end : step] 从start 提取到end - 1,每step 个字符提取一个
此外, step默认=1,表示正向索引。
若step为其他正整数,则间隔取字;如step=2时,每2个字符取1个字符。
若step为负数,则表示负向索引。
如:
str1 = "abc123456"
print(str1[:4]) # 取[4]之前,不包括[4]
print(str1[3:7]) # 取[3]至[7]之间
print(str1[6::-1]) # 从[6]到[0]
print(str1[-2:2:-2]) # 从[-2]到[2]每2取1
print(str1[2:-2:-2]) # start<end NULL
# 输出结果:
# abc1
# 1234
# 4321cba
# 531
# 第五个没有输出,因为它沿负向无法从start到end
字符串的属性方法
对于一个字符串,可以使用 dir 方法来查看它的全部属性方法。如:
print( dir("xxx123") )
# 输出结果:['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'removeprefix', 'removesuffix', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
使用 “变量名.方法名()” 的方式访问对象一系列属性方法。如:
字符串的简单判断
print( f"是否全为大写:{ 'xxABC'.isupper() }")
# 输出结果:是否全为大写:False
print( f"是否全为数字: { '123'.isdigit() }")
# 输出结果:是否全为数字: True
print( f"是否为标题字符:{ 'A Beautiful girl'.istitle() }")
# 输出结果:是否为标题字符:False
print( f"判断开始字符: { 'abc123'.startswith('abc') }")
# 输出结果:判断开始字符: True
# 判断某一段范围内是不是以abc开始
print( f"判断开始字符: { 'abc123'.startswith('abc',3) }")
# 输出结果:判断开始字符: False
# 判断某一段范围内是不是以123结束
print( f"判断结束字符: { 'abc123'.endswith('123')}")
# 输出结果:判断结束字符: True
判断成员关系
有 in 方法和 not in 方法;输出结果为True或Flase
print("a" in "abc")
print("abd" not in "abc")
字符串的遍历
使用for循环依次读取字符串的内容,再进行操作。如打印字符串中的每一个字符:
for i in "abc":
print(i)
查找统计类
- 获取字符串长度
print( len("abcdefg") )
# 输出结果:7
- 统计子字符串在父字符串中出现的次数
print( "abbbsedrwfasdvbab".count("ab") )
# 输出结果:2
- 查看字符第一次出现的下标位置
print( "abbcd".index("b") )
# 输出结果:1
# 类似于字符串的下标取值,这里的结果也是指字符串的下标1,而非常识中的第2个
print( "abbcd".index("x") )
#如果没有这个子字符串,python控制台就会报错
- 查看子字符串第一次出现的下标位置
print("abbcd".find("b"))
# 输出结果:1
print("abbcd".find("x"))
# 输出结果:-1
# 如果没有这个子字符串,python控制台输出-1
字符串转换类
print(f"将字符串转化为大写:{ 'baLWEOSLD23443'.upper() }")
# 输出结果:将字符串转化为大写:BALWEOSLD23443
print(f"将字符串转化为小写:{ 'baLWEOSLD23443'.lower() }")
# 输出结果:#将字符串转化为小写:balweosld23443
print(f"转化为标题格式:{ 'the world'.title() }")
# 输出结果:转化为标题格式:The World
字符串的切割
str1 = "a34lg5$4r:*sdefrwe#234%#"
print(f" 字符串的切割: { str1.split('#') }")
# 以#为标志切割字符串
# 输出结果:字符串的切割: ['a34lg5$4r:*sdefrwe', '234%', '']
去除字符串首尾特定字符
移除字符串首尾指定的字符(默认为空格或换行符)
该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。
str1 = " string " # 去除首尾空格
print(str1.strip())
# 输出结果:string
str2 = "001234500000"
print(str2.strip( '0' )) # 去除首尾字符的0
# 输出结果:12345
字符串的替换
使用 replace 方法来替换,语法格式为str.replace(old, new, [max])
。
将old字符替换为new字符,并且替换次数不超过max次;如不指定max,则全部替换。
如:
str1 = "aaabbb".replace("a", "c",2)
print(str1)
# 输出结果:ccabbb
字符串的填充
使用 center 、ljust 和 rjust 方法,语法格式为str.center(width[, fillchar])
。
返回一个原字符串居中/左对齐/右对齐,并使用空格填充至长度 width 的新字符串。如果指定的长度小于字符串的长度则返回原字符串。
如:
print("hello world".center(20, "*"))
print("hello world".ljust(30, "*"))
print("hello world".rjust(40, "*"))
# 输出结果:
# ****hello world*****
# hello world*******************
# *****************************hello world
数字
整数
在C语言中,整数分short、int、long、long long类,而Python 的整数不分类型,Python 整数的取值范围是无限的,Python 都能轻松处理。
进制和进制转换
进制 | 表示方法 | 示例 |
二进制 | 以0b开头,只能包含0、1,逢2进1 | 0b11 |
八进制 | 以0o开头,只能包含0、7,逢8进1 | 0o11 |
十进制 | 直接由0~9组成,逢10进1 | 11 |
十六进制 | 以0x开头,只能包含0~F,逢16进1 | 0x11 |
# 进制转换-bin:任意进制转2进制,接收一个int,返回一个str
bin(10)='0b1010'
bin(0b11111)='0b11111'
# 进制转换-otc:任意进制转8进制,接收一个int,返回一个str
otc(0b11111)='0o37'
otc(12)='0o14'
# 进制转换-hex:任意进制转16进制,接收一个int,返回一个str
hex(111)='0x6f'
整数运算
在python中,可对整数执行加减乘除取模幂等运算。如:
3 + 5 = 8
3 - 5 = -2
3 * 5 = 15
3 / 5 = 0.6
21 % 10 = 1
3 ** 3 = 27
浮点数
浮点数即带有小数点的数字。
浮点数由整数位,小数点,小数位组成,也可以用科学计数法表示,如3.14,6.23e33。float是不精确的。
用一个例子来说明:
可以通过decimal模块来实现精确小数。
Decimal类型数据是精确的小数,可以传递给Decimal整型或者字符串参数。
from decimal import getcontext,Decimal,context
mydec = Decimal.from_float(12.222)
print(mydec)
mydec =Decima1(12.222)
print(mydec)
# 结果为Decimal( '12.2219999999999995310417943983338773250579833984375')
# 从字符串转为decimal类型
mydec = Decima1('3.14')print(mydec)
# Decimal('3.14')
复数
复数就是实数和虚数的统称。
在数学中的表示 复数的基本形式是a+bi,其中a,b是实数,a称为实部,bi称为虚部,i是虚数单位
在python中使用complex来表示复数,complex的由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数 部分,这里的x和y都是实数。
如:6.23+1.5j,-1.32-854j,0+1j
布尔类型
Python中的布尔类型只有两种值:True
和False
其中,True = 1,表示真;False = 0,表示假
常见的为假的元素:'',0,0.0,(),[],{},None,False
布尔类型可以参与计算,如:
num1 = True + True
print(num1)
# 输出结果:2
num2 = (1 == 2) + (2 == 2)
print(num2)
# 输出结果:1