变量

变量的命名

  • 变量名只能包含数字、字母和下划线
  • 变量名只能由字母或下划线开头
  • 变量名中间不能包含空格
  • 变量名不能是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

字符串的填充

使用 centerljustrjust 方法,语法格式为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是不精确的。

用一个例子来说明:

height是python合法变量吗 合法的python变量名为_python

可以通过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中的布尔类型只有两种值:TrueFalse

其中,True = 1,表示真;False = 0,表示假

常见的为假的元素:'',0,0.0,(),[],{},None,False

布尔类型可以参与计算,如:

num1 = True  + True
print(num1)
# 输出结果:2
num2 = (1 == 2) + (2 == 2)
print(num2)
# 输出结果:1