python基础

本文介绍了Python编程的基础知识,包括变量的使用,注释的添加,以及数值类型(整型、浮点型)和字符串的详细操作,如转义字符、字符串拼接、数值转换。还涵盖了字节串、原始字符串的概念和转换。此外,讲解了Python中的运算符,如赋值、算术、位运算符,以及列表和元组的基本操作,如索引、切片、加法和乘法。最后,探讨了字典的创建和使用方法。
摘要由CSDN通过智能技术生成

python

变量和简单类型

注释

  1. 单行注释

    python使用井号(#)号表示单行注释的开始,#号后面知道这行结束为止的代码都将被解释器忽略

  2. 多行注释

    使用三个单引号或三个双引号将注释的内容括起来

    #这是一行简单的注释
    print('Hello World!')
    '''
    这个是被三个单括号括起来的注释
    '''
    """
    这个是被三个双括号括起来的注释
    """
    

变量

Python 需要使用标识符给变量命名,其实标识符就是用于给程序中变量、类、 方法命名的符号(简单来说,标识符就是合法的名字)。

Python 语言的标识符必须以字母、下画线(_)开头, 后面可以跟任意数目的字母、数字和下画线(_)。 此处的宇母并不局限于 26 个英文字母,可以包 含中文字符、日文字符等(python3 支持UTF-8)。

Python 语言是区分大小写的,因此 abc 和 Abe 是两个不同的标识符。

Python 使用等号(=)作为赋值运算符

Python 是弱类型语言,弱类型语言有两个典型特征。

  • 变量无须声明即可直接赋值: 对一个不存在的变量赋值就相当于定义了一个新变量。

  • 变量的数据类型可以动态改变:同一个变量可以一会儿被赋值为整数值, 一会儿被赋值为 字符串。

在使用标识符时,需要注意如下规则。

  • 标识符可以由字母、数字、下画线(_)组成,其中数字不能打头。
  • 标识符不能是 Python 关键字,但可以包含关键字。
  • 标识符不能包含空格。

Python 还包含一系列关键字和内置函数, 一般也不建议使用它们作为变量名 。

  • 如果开发者尝试使用关键字作为变量名 , Python 解释器会报错。

  • 如果开发者使用内置函数的名字作为变量名, Python 解释器倒不会报错,只是该内置函数 就被这个变量覆盖了,该内置函数就不能使用了 。

Python 关键字

False None True and as
assert break class continue def
del elif else except finally
for from global if import
in is lambda monlocal not
or pass raise return try
while with yield

python 内置函数

abs() all() any() basestring() bin()
bool() bytearray() callable() chr() classmethod()
cmp() compile() complex() delattr() dict()
dir() divmod() enumerate() eval() execfile()
file() filter() float() format() frozenset()
getattr() globals() hasattr() hash() help()
hex() id() input() int() isinstance()
issubclass() iter() len() list() locals()
long() map() max() memoryview() min()
next() object() oct() open() ord()
pow() print() property() range() raw_input()
reduce() reload() repr() reversed() zip()
round() set() setattr() slive() sorted()
staticmethod() str() sum() super() tuple()
type() unichr() unicode() vars() xrange()
Zip() __import__() apply() buffer() coerce()
intem

数值类型

整型

Python 3 的整型支持各种整数值,不管是小的整数值,还是大的整数值

#定义变量 a,赋值为 56 
a = 56 
print(a) 
#为 a 赋值一个大整数 
a = 9999999999999999999999 
print(a) 
# type ()函数用于返回变量的类型 print (type (a))

Python 的整型支持 None 值(空值)

a = None
print(a)

Python 的整型数值有 4 种表示形式。

  • 十进制形式: 最普通的整数就是十进制形式的整数。
  • 二进制形式:以 0b 或 0B 开头的整数就是二进制形式的整数。
  • 八进制形式: 以0o 或 0O开头的整数就是八进制形式的整数(第二个字母是大写或小写的 0)。
  • 十六进制形式:以 0x 或0X 开头的整数就是十六进制形式的整数,其中 10~15 分别以 a-f (此处的a~f不区分大小写)来表示。

下面代码片段使用了其他进制形式的数。

#以 0x 或 0X开头的整型数值是十六进制形式的整数 
hex_valuel = 0x13 
hex_value2 = 0XaF 
print("hexValuel 的值为:", hex_valuel) 
print("hexValue2 的值为:", hex_value2)
#以 0b0B 开头的整型数值是二进制形式的整数 
bin_val = 0b111
print('bin_val 的值为:', bin_ val) 
bin_val = 0B101 
print('bin_val 的值为:', bin_val) 
# 以 0o 或 0O 开头的整型数值是八进制形式的整数 
oct_val = 0o54 
print('oct_val 的值为:', oct_val) 
oct_val= 0017 
print('ct_val 的值为:', oct_val) 

浮点型

浮点型数值用于保存带小数点的数值, Python 的浮点数有两种表示形式。

  1. 十进制形式:这种形式就是平常简单的浮点数,例如 5.12、 512.0、 0.512。浮点数必须包含 一个小数点,否则会被当成整数类型处理。
  2. 科学计数形式: 例如 5.12e2 、 5.12E2 。

字符串

Python 要求字符串必须使用引号括起来,单引号和双引号都行.

字符串和转义字符

  • 使用不通的引号将字符串括起来
    str1 = "I'm a coder"
    str2 = '"Spring is here, let us jam!", said woodchuck .'
    
  • 使用转义字符(\)
    str3 = '"we are scared, Let\'s hide in hte shade",says the bird'
    

字符串拼接(+)

	s1 = "Hello,"  'Charlie'
	print(s1)
	s2 = "Python "
	s3 = "is Funny"
	# 使用+拼接字符串
	s4 = s2 + s3
	print(s4) 

数值转换字符串 str() 和 repr()

	s1 = "这本书的价格是:"
	p = 99.8
	# 字符串直接拼接数值,程序报错
	#print(s1 + p)
	# 使用str()将数值转换成字符串
	print(s1 + str(p))
	# 使用repr()将数值转换成字符串
	print(s1 + repr(p))
	st = "I will play my fife"
	print(st)
	print(repr(st)) 

获取用户输入 input()

由于 input() 函数总会将用户输入的内容放入字符串中,因此用户可 以输入任何内容, input()函 数总是返回一个字符串。

	msg = input("请输入你的值:")
	print(type(msg))
	print(msg)

长字符串(’’’)

长字符串可以让字符串中包含任何内容,既可包含单引号,也可包含双引号

Python 还允许使用转义字符(\) 换行符进行转义,转义之后的换行符不会“中断”字符串

	s = '''"Let's go fishing", said Mary.
		"OK, Let's go", said her brother.
		they walked to a lake'''
	print(s)
	s2 ='The quick brown fox \
		jumps over the lazy dog'
	print(s2)
	num = 20 + 3 / 4 + \
	    2 * 3
	print(num)

原始字符串

原始字符串以“ ”开头 原始宇符串不会把反斜线当成特殊字符。

	s1 = r'G:\publish\codes\02\2.4'
	print(s1)
	# 原始字符串包含的引号,同样需要转义
	s2 = r'"Let\'s go", said Charlie'
	print(s2)
	#由于原始字符串中 的反斜线会对 引号进行转义,因此原始字符串的结尾处不能是反斜线一宇衍串结尾处的引 号就被转义了 ,这样就导致字符串不能正确结束。
	s3 = r'Good Morning' '\\'
	print(s3)

字节串(bytes)

bytes 对象只负责以宇节(二进制格式)序列来记录数据,至于这些数据到底表示 么内容,完全由程序决定。 如果采用合适的字符集 字符串 可以转换成字节串;反过来,宇节串也可以恢复成对应的字符串

bytes 保存的就是原始的字节(二进制格式)数据,因此 bytes 对象可用于在网络上传输数据 ,也可用于存储各种二进制格式的文件, 比如 图片、音乐等文件

字符串转换成 bytes 有如下 种方式:

  • 如果字符串内容都是 ASCII 字符,则可以通过直接在字符串之前添加b来构建字节串值
  • 调用 bytes()函数(其实是 bytes 构造方法)将字符串按指定 符集转换成字节串,如果不指定字符集,默认使用 UTF-8 字符集。
  • 调用字符串本身 encode() 方法将字符串按指定字符集转换成字节串,如果不指定字符集, 默认使用 UTF-8字符集。
  • bytes转换字符串 :decode()

例如,如下程序示范了如何创建字节串。

# 创建一个空的bytes
b1 = bytes()
# 创建一个空的bytes值
b2 = b''
# 通过b前缀指定hello是bytes类型的值
b3 = b'hello'
print(b3)
print(b3[0])
print(b3[2:4])
# 调用bytes方法将字符串转成bytes对象
b4 = bytes('我爱Python编程',encoding='utf-8')
print(b4)
# 利用字符串的encode()方法编码成bytes,默认使用utf-8字符集
b5 = "学习Python很有趣".encode('utf-8')
print(b5)

# 将bytes对象解码成字符串,默认使用utf-8进行解码。
st = b5.decode('utf-8')
print(st) # 学习Python很有趣

字符串的使用

转义字符

python支持的转义字符

转义字符 说明
\b 退格符
\n 换行符
\r 回车符
\t 制表符
" 双引号
单引号
\ 反斜线
	s = 'Hello\nCharlie\nGood\nMorning'
	print(s)

输出结果

	Hello
	Charlie
	Good
	Morning
	s2 = '商品名\t\t单价\t\t数量\t\t总价'
	s3 = 'python\t108\t\t2\t\t316'
	print(s2)
	print(s3)

输出结果

商品名   单价   数量    总价
python		108    2        216
字符串格式化

python提供了“%”对各种类型的数据进行格式化输出

price = 108
print("the book's price is %x" % price)

这行代码中的print函数包含三个部分,第一部分是格式字符串(相当于字符串的模版),其中包含一个“%s”占位符,它会被第三部分的变量或表达式的值代替。

格式化字符串中包含多个占位符,第三部分也应该提供多个变量,并且使用圆括号将这些变量括起来。

user = "Charli"
age = 8
# 格式化字符串有两个占位符,第三部分提供2个变量
print("%s is a %s years old boy" % (user , age))

转换说明符

转换说明符 说明
d,i 转换为带符号的十进制形式的整数
o 转换为带符号的八进制形式的整数
x 转换为带符号的十六进制形式的整数
X 转换为带符号的十六进制形式的整数
e 转换为科学计数法表示的浮点数(e小写)
E 转换为科学计数法表示的浮点数(E大写)
f,F 转换为十进制形式的浮点数
g 智能选择使用f或e格式
G 智能选择使用F或E格式
C 转换为单字符(只接受整数或单字符字符串)
r 使用repr()将变量或表达式转换为字符串
s 使用str()将变量或表达式转换为字符串
num = -28
print("num is: %6i" % num)
print("num is: %6d" % num)
print("num is: %6o" % num)
print("num is: %6x" % num)
print("num is: %6X" % num)
print("num is: %6s" % num)
num2 = 30
# 最小宽度为0,左边补0
print("num2 is: %06d" % num2)
# 最小宽度为6,左边补0,总带上符号
print("num2 is: %+06d" % num2)
# 最小宽度为6,右对齐
print("num2 is: %-6d" % num2)
my_value = 3.001415926535
# 最小宽度为8,小数点后保留3位
print("my_value is: %8.3f" % my_value)
# 最小宽度为8,小数点后保留3位,左边补0
print("my_value is: %08.3f" % my_value)
# 最小宽度为8,小数点后保留3位,左边补0,始终带符号
print("my_value is: %+08.3f" % my_value)
the_name = "Charlie"
# 只保留3个字符
print("the name is: %.3s" % the_name) # 输出Cha
# 只保留2个字符,最小宽度10
print("the name is: %10.2s" % the_name)
序列相关方法

字符串本质上是由多个字符组成,因此允许通过索引来操作字符

python字符串直接在方括号([])中使用索引即可获取对应的字符,第一个字符索引为0,第二个为1,倒数第一个为-1

获取一段用(:)

s = 'crazyit.org is very good'
# 获取s中索引2处的字符
print(s[2]) # 输出a
# 获取s中从右边开始,索引4处的字符
print(s[-4]) # 输出g
# 获取s中从索引3处到索引5处(不包含)的子串
print(s[3: 5]) # 输出zy
# 获取s中从索引3处到倒数第5个字符的子串
print(s[3: -5]) # 输出zyit.org is very
# 获取s中从倒数第6个字符到倒数第3个字符的子串
print(s[-6: -3]) # 输出y g
# 获取s中从索引5处到结束的子串
print(s[5: ]) # 输出it.org is very good
# 获取s中从倒数第6个字符到结束的子串
print(s[-6: ]) # 输出y good
# 获取s中从开始到索引5处的子串
print(s[: 5]) # 输出crazy
# 获取s中从开始到倒数第6个字符的子串
print(s[: -6]) #输出crazyit.org is ver
# 判断s是否包含'very'子串
print('very' in s) # True
print('fkit' in s) # False
# 输出s的长度
print(len(s)) # 24
# 输出'test'的长度
print(len('test')) # 4
# 输出s字符串中最大的字符
print(max(s)) # z
# 输出s字符串中最小的字符
print(min(s)) # 空格
大小写相关方法

在str类中与大小写相关的常用方法如下。

  • title():将每个单词 首字母改为大写
  • lower():将整个字符串改为小写
  • upper(): 将整个字符串改为大写。
a = 'our domain is crazyit.org'
# 每个单词首字母大写
print(a.title())
# 每个单词首字母小写
print(a.lower())
# 每个单词首字母大写
print(a.upper())
删除空白

str 还提供了如下常用的方法来删除空白。

  • strip():删除字符串前后 空白。
  • strip():删除字符串前面(左边)的空白。
  • rstrip(): 删除字符串后面(右边)的空白。
s = '  this is a puppy  '
# 删除左边的空白
print(s.lstrip())
# 删除右边的空白
print(s.rstrip())
# 删除两边的空白
print(s.strip())
# 再次输出s,将会看到s并没有改变
print(s)
s2 = 'i think it is a scarecrow'
# 删除左边的i、t、o、w字符
print(s2.lstrip('itow'))
# 删除右边的i、t、o、w字符
print(s2.rstrip('itow'))
# 删除两边的i、t、o、w字符
print(s2.strip('itow'))
字符串查找和替换

str 还提供了如下常用的执行查找 、替换等操作的方法

  • startswith():判断字符串是否 以指定子串开头。
  • endswith():判断字符串是否以指定子串结尾
  • find(): 查找指定子串在字符串中出现的位置,如果没有找到指定子串,则返回-1
  • index(): 查找指定子串在字符串中出现的位置,如果没有找到指定子串,则引发ValueError错误。
  • replace(): 使用指定子串替换字符串中的目标子串
  • translate(): 使用指定的翻译映射表对字符串执行替换。
s = 'crazyit.org is a good site'
# 判断s是否以crazyit开头
print(s.startswith('crazyit'))
# 判断s是否以site结尾
print(s.endswith('site'))
# 查找s中'org'的出现位置
print(s.find('org')) # 8
# 查找s中'org'的出现位置
print(s.index('org')) # 8
# 从索引为9处开始查找'org'的出现位置
#print(s.find('org', 9)) # -1
# 从索引为9处开始查找'org'的出现位置
print(s.index('org', 9)) # 引发错误
# 将字符串中所有it替换成xxxx
print(s.replace('it', 'xxxx'))
# 将字符串中1个it替换成xxxx
print(s.replace('it', 'xxxx', 1))
# 定义替换表:97(a)->945(α),98(b)->945(β),116(t)->964(τ),
table = {
   97: 945, 98: 946, 116: 964}
print(s.translate(table)) # crαzyit.org is α good site

Python 为str类提供了一个 maketrans()方法,通过该方法可以非常方便地创建翻
译映射表

>>> table = str.maketrans('abt', '123')
>>> table
{97: 49, 98: 50, 116: 51}
>>>
分割和连接

Python 还为 str 提供了分割和连接方法

  • split(): 将字符串按指定分割符分割成多个短语
  • join():将 多个短 吾连接成字符串
s = 'crazyit.org is a good site'
# 使用空白对字符串进行分割
print(s.split()) # 输出 ['crazyit.org', 'is', 'a', 'good', 'site']
# 使用空白对字符串进行分割,最多只分割前2个单词
print(s.split(None, 2)) # 输出 ['crazyit.org', 'is', 'a good site']
# 使用点进行分割
print(s.split('.')) # 输出 ['crazyit', 'org is a good site']
mylist = s.split()
# 使用'/'为分割符,将mylist连接成字符串
print('/'.join(mylist)) # 输出 crazyit.org/is/a/good/site
# 使用','为分割符,将mylist连接成字符串
print(','.join(mylist)) # 输出 crazyit.org,is,a,good,site

运算符

赋值运算符(=)
# 为变量st赋值为Python
st = "Python"
# 为变量pi赋值为3.14
pi = 3.14
# 为变量visited赋值为True
visited  = True
print(st)
print(pi)
print(visited)

# 将变量st的值赋给st2
st2 = st
print(st2)

a = b = c = 20
print(a)
print(b)
print(c)

d1 = 12.34
# 将表达式的值赋给d2
d2 = d1 + 5
# 输出d2的值
print("d2的值为:%g" % d2 ) # 17.34
算术运算符
#++++++++++
a = 5.2
b = 3.1
the_sum = a + b
# sum的值为8.3
print("the_sum的值为:", the_sum)

#连接字符串
s1 = 'Hello, '
s2 = 'Charlie'
# 使用+连接两个字符串
print(s1 + s2)

#— - - - - - - 
c = 5.2
d = 3.1
sub = c - d
# sub的值为2.1
print("sub的值为:", sub)

#***************
e = 5.2
f = 3.1
multiply = e * f
# multiply的值为16.12
print("multiply的值为:", multiply)

#连接字符串
s3 = 'crazyit '
# 使用*将5个字符串连接起来
#输出结果为:crazyit crazyit crazyit crazyit crazyit 
print(s3 * 5)


#/ / / / / / / / / 
#/  普通除法,除不尽产生小数
#// 整除,小数舍弃
print("19/4的结果是:", 19/4)
print("19//4的结果是:", 19//4)
aa = 5.2
bb = 3.1
# aa / bb的值将是1.67741935483871
print("aa/bb的值是:", aa / bb)
# aa // bb值将是1.0
print("aa//bb的值是:", aa // bb)

#% % % % % % % % % %
#求余
print("5%3的值为:", 5 % 3) # 输出2
print("5.2%3.1的值为:", 5.2 % 3.1) # 输出2.1
print("-5.2%-3.1的值为:", -5.2 % -3.1) # 输出-2.1
print("5.2%-2.9的值为:", 5.2 % -2.9) # 输出-0.6
print("5.2%-1.5的值为:", 5.2 % -1.5) # 输出-0.8
print("-5.2%1.5的值为:", -5.2 % 1.5) # 输出0.8
#print("5对0.0求余的结果是:", 5 % 0.0) # 导致错误

#** ** ** ** ** ** **
#乘方运算符 **
print('5的2次方:', 5 ** 2) # 25
print('4的3次方:', 4 ** 3) # 64
print('4的开平方:', 4 ** 0.5) # 2.0
print('27的开3次方:', 27 ** (1 / 3)) # 3.0

位运算符

位运算符通常在图形、 图像处理和创建设备驱动等底层开发中使用 。 使用位运算符可以直接操作数值的原始 bit 位, 尤其是在使用自定义的协议进行通信时,使用位运算符对原始数据进行编码和解码也非常有效。

位运算符 说明
& 按位与
| 按位或
^ 按位异或
~ 按位取反
<< 左位移运算符
>> 右位移运算符

位运算符的运算法则

第一操作数 第二操作数 按位与 按位或 按位异或
0 0 0 0 0
0 1 0 1 1
1 0 0 1 1
1 1 1 1 0

所有数值在计算机底层都是以二进制形式存在的,原码是直接将一个数值换算成二进制数。

有符号整数的最高位是符号位,符号位为0代表正数, 符号位为1代表负数。

无符号整数则没有符号位,因此无符号整数只能表示 0和正数。

为了方便计算,计算机底层以补码的形式保存所有的整数。
补码的计算规则是:

  • 正数的补码和原码完全相同
  • 负数的补码是其反码加1

反码是对原码按位取反,只是最高位(符号位)保持不变。

在进行位移运算时,不难友现,左移 n 位就相当于来以 2 的 11 次方,右移 n 位则相当于除以 2 的 n 次方(如果不能整除,实际返回的结果是小于除得结果数值的最大整数的)。不仅如此,进行位移运算只是得到 了 一个新的运算结果,而原来的操作数本身是不会改变的 。

# 将输出1
print(5 & 9
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值