python基础

输入输出

print(self, *args, sep=' ', end='\n', file=None)

变量

python中同一个字符串重复使用,分配的内存地址相同。

del 删除变量

python可以直接交换变量的值,实际是交换变量的地址。

多个变量赋相同值对应相同地址,修改其中一个变量内容不影响其它变量的值。

标识符命名规则

严格区分大小写

组成:字母、数字、下划线

不能使用数字开头,也不能使用特殊符号等。

小驼峰(变量名、函数名、方法名):第一个单词小写开头,后续单词大写开头

大驼峰(类名):每个单词都是大写开头

下划线组合

数据类型

字符串——单行|多行(三引号,结尾默认空一行换行)

type()查看变量类型

运算符

算数运算符

赋值运算符

身份运算符

逻辑运算符的特殊性与运算结果

类型转换

类型转换不能任意一步到位。

字符串和整数可以使用,重复拼接相同的字符串

print("*!" * 10)

变量的格式化输出

输出文字信息的同时,一起输出变量中保存的数据,需要使用到变量的格式化操作符。

%被称为格式化操作符,专用于处理字符串中的格式,用于临时占位,等待后续的数据替换。不同类型的数据需要使用不同的格式化字符。

%-string格式化语法

f-string格式化语法

python3.6开始加入的一种改进方法

对于float类型变量显示对应位数

使用round()函数来确定浮点数位数,不能超过原小数的有效位数。

name = "sunny"
age = 18
money = 100.01
# msg = "我是%s,今年%d岁,我每周有%.2f元零花钱。"%(name, age, money)
# msg = f"我是{name},今年{age}岁,我每周有{money}元零花钱。"
msg = f"我是{name},今年{age}岁,我每周有{round(money, 2)}元零花钱。"
print(msg)

转义字符

列表

切片

列表遍历

遍历就是依次从列表容器中取出每一个元素,并执行相同的操作。

while遍历

i = 0
while i < len(scores):
    nums = scores[i]
    print(num)
    i += 1

for遍历(专用)

for循环语句定义的变量可以在后续全局使用。

scores = [30, 40, 50, 60]
for num in scores:
    print(num)
for i, b in enumerate(a)

同时对i,b两个变量同时赋值,i赋值为a当前元素的下标,b赋值为a当前的元素。

while和for的区别

1.for只能通过从头到尾依次从列表中取出每一个元素,执行效率高。

2.while可以控制索引灵活地从列表中取出元素

列表生成式

even_nums = [num for num in range(1,101) if num % 2 == 0]
print(even_nums)

extend()逐个元素添加

extend() 不会把列表或者元祖视为一个整体,而是把它们包含的元素逐个添加到列表中

元组

除了不能够修改里面的元素外,其他的操作和列表一样。

tuple特殊用法

给多个变量赋值

将元组中的值一一赋值给对应的变量。

info = ('sunny', 'boy', 17)
name, sex, age = info
print(f'姓名:{name}性别:{sex}年龄:{age}')

定义单元素元组

#方法一:类型转换
b = tuple([10])
#方法二:加逗号
c = (15,)

列表和元组之间的转换

应用场景

拓展题

1.需求:有三个店铺,6个商品,6个商品随机分配到3个店铺

import random
shopList = [[], [], []]
goodsList = ['小米', '苹果', 'vivo', '华为', 'Oppo', 'Lenovo']

for good in goodsList:
    idx = random.randint(0, 2)
    shopList[idx].append(good)
    print(idx, shopList[idx])
print(shopList)

2.有1,2,3,4四个数字,求这四个数字能生成多少个互不相同且无重复数字的三位数。

cnt = 0

for a in range(1, 5):
    for b in range(1, 5):
        for c in range(1, 5):
            if a != b and a != c and b != c:
                cnt += 1
                
print(cnt)
#24

3.

nums = [
    [255, 255, 255, 255],
    [255, 255, 255, 255],
    [0, 255, 0, 255]
]

# 255的总个数
cnt = 0
# 全为255的行数
row = 0
remove_nums = []
for idx, num in enumerate(nums):
    res = num.count(255)
    cnt += res
    if res == len(num):
        print(f'第{idx}行全为255')
        remove_nums.append(num)
        row += 1
    # 循环遍历同时删除,索引出错,内部迭代器不同步
    # nums.pop(idx)
print(cnt, row)

# 同时删除多个索引的值
#按索引反向删除
for i in remove_nums:
    nums.remove(i)
    print(nums)

字符串

字符串指里面存储字符类型的不可变的序列容器。

不可变:指字符串一旦定义,其内存地址就已经确定不能改变。

转义字符特殊用法

字符串内容操作

索引访问字符、切片取出部分字符

str1 = "床前明月光"
print(str1[0:5:2])

while遍历字符

for in 专业遍历

for只能通过从头到尾依次从字符串中取出每一个字符并执行相同的操作。

字符串函数速查

判断

查找和替换

大小写转换

拆分和连接

去除空白字符

字符串常见操作

去除左右两边空格

字符串分割(重点)

大小写转换

判断开头或者结尾的字符

字符串格式化函数

字符串连接

字符串替换

判断字符串由数字组成

字典

列表中的数据更多偏向的物理意义是可序列的,但是在实际的生活案例处理中,很多数据并不需要序列 的逻辑,更多的是偏向映射关系。

比如说,姓名是什么,职业是什么,分数是什么这种关系,如果用序列描述,必须严格限制他的先后关 系。

这种映射关系,在python中采用字典的结构来描述他的逻辑关系。

字典(dictionary)同样是容器,只不过字典中的数据以映射关系来维护,这种映射关系x -> y,我们称x 为键,y为值。

字典函数速查

字典常用操作

"""
字典: {key : value}
常用操作:
增加
删除
修改
"""

dic = {'name': '球球', 'age': 19, 'sex': '女'}
print(dic)
# 添加
dic['addr'] = '四川'
print(dic)
# 删除
del dic['addr']
print(dic)
dic.pop('sex')
print(dic)
# 修改
dic['age'] = 20
print(dic)
# 查询 键对应的值
print(dic['age'])
# 获取字典的键值
print(dic.keys())
for key in dic.keys():
    print(f'{key}:{dic[key]}', end=' ')
# 获取字典中的所有值
print()
print(dic.values())
print(type(dic.values()))
for value in dic.values():
    print(value, end=' ')
# 遍历键值对
print('遍历键值对')
for key, value in dic.items():
    print(key, ":", value, end=' ')
print()
# 判断键值是否在字典中存在
print('name' in dic)
# 清空字典
dic.clear()

集合

集合(set)是一个无序的不重复元素序列(容器)。

可以使用大括号 { } 或者 set() 函数创建集合。

注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是 用来创建一个空字典。

其他类型(字符串、列表、字典)转换为集合

将字典的所有键转换为集合,键是唯一的不重复。

公共语法

python内置函数

切片

运算符

+为合并运算符

*为重复运算符

in为判断是否存在运算符

not in 为判断是否不存在运算符

for专业遍历

课后练习

#名片管理系统

"""
名片管理 系统 录入三张名片即可
名片盒子 列表中存放字典,为什么要这样存放?为什么不是字典中存放列表?
cards = [
 {"name": "张三", "tel": "13812345678", "job": "CEO", "addr": "四川"}, # 字典
 {'名片信息2'},
 {'名片信息3'}
]
需要完成的功能 就是对 名片盒子 进行增删改查
1. 添加名片: 根据用户录入的信息, 组装成字典 追加到名片盒子里面 cards.append(一个人的名片字典)
2. 显示所有名片: 遍历名片盒子输出名片信息
3. 修改名片: 录入需要修改名片的姓名, 根据名字到名片合子查找对应的哪一张名片,
如果找到 , 重写录入新的名片信息, 完成修改操作
print('1' not in '123456') # False
print(2 not in [1, 2, 3, 4]) # False
print(2 not in (1, 2, 3, 4)) # False
print('name' not in {'name': '球球'}) # False
print('球球' not in {'name': '球球'}) # True
4. 删除名片: 录入需要删除名片的姓名, 根据名字到名片盒子中查到对应的名片并删除.
"""

name = " posekakaka "
name = name.strip()
print(name)
print(name.startswith("po"))
print(name.endswith("a"))
# name = name.replace("k", "c")
print(type(name.split("k")))
name = name.split("k")
print(name)

students = [
    {'name': 'Tom', 'age': 19, 'score': 92, 'sex': '女', 'tel': '15300022839'},
    {'name': 'Jerry', 'age': 20, 'score': 40, 'sex': '男', 'tel': '15300022838'},
    {'name': 'Andy', 'age': 18, 'score': 85, 'sex': '女', 'tel': '15300022837'},
    {'name': 'Jack', 'age': 16, 'score': 65, 'sex': '男', 'tel': '15300022428'},
    {'name': 'Rose', 'age': 17, 'score': 59, 'sex': '男', 'tel': '15300022653'},
    {'name': 'Bob', 'age': 18, 'score': 78, 'sex': '男', 'tel': '15300022867'}
]

fall_student = 0
sum_score = 0
cnt = 0

for student in students:
    cnt += 1
    sum_score += student["score"]
    print(student["name"])
    if student["score"] < 60:
        fall_student += 1
    if student["sex"] == "男":
        print(student)
print(f"average_score={sum_score/cnt}")

拓展题

#方法一
letters = 'abcdabcdabcdabcefg'
# 将目标字符串转为列表
letters_list = list(letters)
print(letters_list)
# 用一个列表记录出现的每一种字符
new_letters = []

for i in letters_list:
    if i not in new_letters:
        new_letters.append(i)

print("new_letters:{0}".format(new_letters))
# 用一个字典记录结果,遍历列表,求count()
d = {}

for i in new_letters:
    d[i] = letters_list.count(i)

print(d)

# 方法二:统计全部字符出现次数
from collections import Counter
print(Counter(letters))
# Counter({'a': 4, 'b': 4, 'c': 4, 'd': 3, 'e': 1, 'f': 1, 'g': 1})

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。