Python基础

一、基础知识

1.1.计算机组成原理

  一个完整的计算机系统,是由硬件系统和软件系统两大部分组成的。

1.2注释

#注释一行

Ctrl+/ 多行注释

1.3变量

  变量名是标志符(作为变量、函数、类、模块和文件等对象的名称,以方便程序调用)的一种,因而也要遵守标识符的命名规则。

    1.只能包含字母、数字、下划线、并且不能以数字开头

    2.不能与系统关键字、模块名相同(又称保留字,它们是Python语言中的一些已经被赋予特定意义的单词。如False,True,if,else等)

    

    3.严格区分大小写

    4.尽量使用有意义的英文单词

    5.多个单词之间使用下划线连接

  python中的变量不需要声明,变量的赋值操作即是变量声明和定义的过程。python中一次新的赋值,将创建一个新的变量。如果变量没有赋值,则python认为该变量不存在。即是变量的名称相同,变量的标识并不相同。值存放在内存中的某个位置,变量只是用于引用而已。用id()函数可以获取变量标识:

  

   

  从图中可以看出他们俩返回的地址不同,这是为什么?

  实质上,例如程序在执行语句x = 3时, Python要做以下三个事情。

    ①创建一个对象,即分配一块内存以存储数据3

    ②创建一个变量x,如果它还没有创建的话。

    ③将变量名x与对象关联起来,创建变量并使用变量引用对象。

  在函数之外定义的变量都可以称为全局变量。全局变量可以被文件内部的任何函数和外部文件访问。全局变量建议在文件的开头定义。也可以把全局变量放到一个专门的文件中,然后通过import来引用。

1.4常量

  python中没有提供定义常量的保留字。可以自己定义一个常量类来实现常量的功能。(在计算机程序运行时,不会被程序修改的量)

1.5输出

  print()是Python内置函数,功能是输出运算结果。print()函数的语法格式如下:

  print(*objects, sep='', end='\n', file=sys.stdout)

  其中,objects表示输出的对象,输出多个时用逗号分隔;sep 用来分隔多个输出对象,默认为一个空格(输出显示时候用空格分开的,比如输入了1,2,3,输出是1 2 3); end 用来设定本次输出以什么结尾,默认是换行符\n;file表示想要写入的文件对象,默认是标准输入输出。

  

  

其他格式化输出举例:

  

1.6输入

  input()是 Python内置函数,功能是接受标准的输入数据。无论用户输入什么内容,input()函数都以字符串类型返回结果

  

  输出如下:

  

1.7运算符

  python不支持自增运算符和自减运算符。例如i++/i-是错误的,但i+=1是可以的。  

  “/”和“//”的区别:

    “/”指的是浮点数除法, 只要“/”;两边有一个数是浮点数,那么结果就是浮点数

    “//”指的是整数除法,运算之后对结果向下取整

  不等于为!=或<>,等于用==表示

  逻辑表达式中and表示逻辑与,or表示逻辑或,not表示逻辑非

  

  幂运算符的运算顺序(3**2**3):相当于,先算2的三次方,幂运算优先于乘法运算

1.8数据类型及其转化

   python的数字类型分为整型、长整型、浮点型、布尔型、复数类型。python没有字符类型,只有字符串。除此之外还有列表、元组、字典和集合类型。

  python内部没有普通类型,任何类型都是对象。如果需要查看变量的类型,可以使用type类,该类可以返回变量的类型或创建一个新的类型。

   

  python有3种表示字符串类型的方式,即单引号、双引号、三引号。单引号和双引号的作用是相同的。三引号中可以输入单引号、双引号或换行等字符。 

   当使用eval(str)去转字母时会报错,因为eval会去除引号,比如”abc“,变成abc变量,但是如果python中没有定义abc这个变量的值,将会报错

  

  

   但是如果存在变量f

   

1.9比较运算符

  

 二、逻辑控制

 2.1if判断语句

    

  1、每个条件后面要使用冒号 :,表示接下来是满足条件后要执行的语句块。
  2、使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块。
  3、在Python中没有switch – case语句。

  

2.2循环语句

2.2.1while循环

   

   

2.2.2for循环

 

  for 循环是python中的另外一种循环语句,提供了python中最强大的循环结构,它可以循环遍历多种序列项目,如一个列表或者一个字符串(sequence可以试列表元组集合,如果是字典只能遍历keys,无法遍历values)

2.2.3break和continue

  break:在循环体内遇到break则会跳出循环,终止循环,并且不论循环的条件是否为真,都不再继续循环。

  continue:退出当前循环,再继续执行下一次循环。

 三、字符串和列表

3.1字符串

  

  

  

  f-strings:提供一个简洁易读的方式,可以在字符串中包含Python表达式。f-strings以字母”f"或“F”为前缀,格式化字符串使用一对单引号、双引号、三单引号、三双引号。

    

  使用大括号{}表示被替换字段,直接填入替换内容

   

3.2下标和切片

  下标:又称作索引,也就是编号。比如火车座位号,座位号的作用:按照编号快速找到对应的座位。同理,下标的作用即通过下标快速找到对应的数据。

  下标在Python中是从0开始。

   

   负数指的是反向的取值。取值超出范围会报错。

  切片:在Python中,切片(slice)是对序列型对象(如liststringtuple)的一种高级索引方法。普通索引只取出序列中一个下标对应的元素,而切片取出序列中一个范围对应的元素,这里的范围不是狭义上的连续片段。下面的代码初步展示了切片索引的力量。

    

  能得到下标在这样一个前闭后开区间范围内的元素。

  切片的两个特殊情况:超出有效索引范围缺省

    超出有效索引范围​时,切片操作不会抛出异常,而是进行截断。

    可以这样去理解截断机制:我们假象把索引范围扩充到全体整数,只不过小于​或大于​的区域对应空元素,在这个扩充后的数轴上进行切片,只需把最终结果中的所有空元素忽略即可。如果start的位置比stop还靠后,Python还是不会抛出异常,而是直接返回空序列。

    在缺省的情况下,Python的行为是尽可能取最大区间,相当于数学集合中的无穷大和无穷小。

   

  步长为负,意为从后往前取值,起始必须比结束大,否则返回空序列。

3.3常见操作

# 常用操作
# find:检测str是否包含在字符串中,如果是返回开始的索引值,否则返回-1
print(text.find("b"))
# index:跟find()方法一样,只不过如果str不在字符串中会报一个异常
print(text.index("c"))
# count:返回str在start和end之间在字符串中出现的次数
print(text.count("a"))
# replace:把字符串中的str1全部替换成str2,如果count指定,则替换不超过count次.
print(text.replace("a","k",1))
# 以str为分隔符切片字符串,如果maxsplit有指定值,则仅分隔maxsplit个子字符串
a = "abc,de abc"
print(a.split(","))
# capitalize:首字母大写
print(text.capitalize())
# title:每个单词首字母大写
print(a.title())
# startswith:检查字符串是否以hello开头,是则返回True,否则返回False
print(text.startswith("hello"))
# endswith:检查字符串是否以hello结束,是则返回True,否则返回False
print(text.endswith("hello"))
# lower:转换字符串中所有大写字符为小写
text="ABCDef"
print(text.lower())
# upper:转换字符串中所有小写字符为大写
print(text.upper())
# lstrip:删除字符串左边的空白字符
# rstrip:删除字符串右 边的空白字符
# strip:删除字符串两边的空白字符
b = " abc "
print(b.lstrip())
print(b.rstrip())
print(b.strip())
# isdigit:字符串只包含数字,则返回true,否则返回false
print(text.isdigit())
# join:每个元素后面拼接上字符串构造出一个新的字符串
print(" ".join(b))

  

 3.4列表

  list:list是python内置的一种高级数据类型。list是一种有序的集合,基于链表实现 在python中应用很广泛。

  

   列表中的元素可以是不同类型的

  打印列表:输出:zhang

3.5列表的遍历

  

3.6列表的常见操作

# append()列表后面添加元素
food = ['egg', 'fish', 'cake', 'tomato']
food.append('ice')  # 在list的末尾添加元素
print(food)

# insert()指定位置添加元素
food = ['egg', 'fish', 'cake', 'tomato']
food.insert(1, 'meat')  # 在1这个位置添加元素
print(food)
food.insert(1, ['apple', 'orange'])
# 此处['apple', 'orange']将作为一个元素添加进去,如果想要添加列表,可以用后文的extend
print(food)

# extend():合并列表
list1 = [1, 3, 3, 4, 5]
list2 = [6, 5, 8, 9]
list1.extend(list2)  # 在列表1后面添加列表2
print(list1)

# in,not in 查找
food = ['egg', 'fish', 'cake', 'tomato']
a = 'apple'
if a in food:
    print("存在")
if a not in food:
    print("不存在")

# count()返回的是某个元素在列表里面的个数
list1 = [1, 3, 3, 4, 5]
print('count:', list1.count(3))  # 统计3在列表中出现的次数

# index()返回的是元素在列表中的第一个位置
list2 = [1, 2, 4, 5, 7, 4]
print('index:', list2.index(4))  # 从列表中找出第一个数值为4的索引位置,不管第二个

# 删除元素 list1 = [1, 3, 3, 4, 5]
# del 根据下标进行删除,如果不加下标,会删除整个变量
del list1[0]
print('del:', list1)
# pop 删除元素,并且返回删除元素(默认删除最后一个)
print('pop:', list1.pop(1))  # 删除下标为1的
# remove()---------- 删除某个元素,如果有重复,删除的是第一次出现的元素,如果元素不存在会报错
list2 = [1, 2, 4, 5, 7, 4]
list2.remove(4)  # 从列表中找出第一个数值为4的值然后删除,不管第二个
print('remove:', list2)
# clear():清除元素
list2 = [1, 2, 4, 5, 7, 4]
list2.clear()
print(list2)

# sort()进行排序(从小到大int类型)可以对字母进行排序(ASCII值)类型不能混
list2 = [1, 2, 4, 5, 7, 4]
list2.sort()  # 对原列表进行排序
print('sort;', list2)

# reverse()将列表进行翻转
list2 = [1, 2, 4, 5, 7, 4]
list2.reverse()
print('reverse;', list2)

# copy()浅拷贝对象不等价与 =
list1 = [8, 9, 0]
list2 = list1.copy()
print(list2)

  

 3.7元组

  元组:与列表相似,不同之处就在于元组的元素不能被修改(修改报错)。列表使用的是中括号“[]”,元组使用的是小括号“()”。Python内部对元组进行了大量的优化,访问和处理速度都比列表快。 

  

3.8字典

  字典是通过名字来引用值的数据结构,并且把这种数据结构称为映射,字典中的值没有特殊的顺序,都存储在一个特定的键(key)下,键可以是数字、字符串甚至元组。字典也是python中唯一内建的映射类型。

   字典由多个键和其对应的值构成的键—值对组成,键和值中间以冒号:隔开,项之间用逗号隔开,整个字典是由大括号{}括起来的。

  

3.9字典的常见操作

# 添加/修改 增加新的键值对,对新增加的键赋值/对已有的键直接赋值
student = {'name': 'zhang', 'age': '18', 'sex': 'male'}
student['score'] = 60  # 添加
student['age'] = 20  # 修改
print('添加、修改:',student)

# 删除 用 del 命令删除一个字典的键
del student["年龄"]  # 删除key对应的键值对
print('del:', student)
# clear() 清空字典中所有的键值对
student.clear()
print('clear:',student)
# pop() 删除括号内key对应的键值对 返回值:当前key对应的value
print('pop:', student.pop('age'))  # 返回当前被删除的键值对中key 'age' 对应的value
print(student)
# popitem()删除最后一对键值对 返回值:最后一对键值对
print('popitem:', student.popitem())
print(student)

# update() 更新字典,将括号内的字典添加原字典中,如果key相同,value值覆盖
student1 = {'name': 'zhang', 'age': '18', 'sex': 'male'}
student2 = {'name': 'zhang', 'age': '20', 'score': '100'}
student1.update(student2)
print('update:', student1)

# setdefault()
# 1.查询括号内key对应的value值
# 2.如果key不存在,则添加。value默认为None
student = {'name': 'zhang', 'age': '18', 'sex': 'male'}
print('setdefault', student.setdefault('score',100))
# 当student中不存在key "score"时会添加进去,value指定为"100"

# keys() 查询字典中所有的key
print('key:',student.keys())
# values() 查询字典中所有的value
print('values:', student.values())
# items() 查询字典中所有的键值对
print('items:', student.items())

# copy() 复制
student1 = {'name': 'zhang', 'age': '18', 'sex': 'male'}
student2 = student1.copy()
print('copy:', student2)

3.10字典的遍历

  

 

posted @ 2022-07-18 23:07  石元  阅读(110)  评论(0编辑  收藏  举报