当前位置: 首页 > news >正文

三、Python编程基础03

目录

  • 一、debug 调试的使用
    • 1. 打断点
    • 2. 右键 Debug 运行代码
    • 3. 单步执行代码,查看过程
  • 二、字符串
    • 1、定义与下标引用
    • 2、切片
    • 3、查找
    • 4、去除空白字符
    • 5、转换大小写与拆分
    • 6、其他方法-替换、连接、是否为纯数字
    • 7、登录案例优化
  • 三、列表 list
    • 1、列表基础操作
    • 2、案例: 登录
  • 三、字典
    • 1、字典基础操作
    • 2、遍历
    • 3、登录案例优化
  • 五、元组

一、debug 调试的使用

  • debug 调试的作用是用来排查代码中的错误的.
  • 我们学习 debug 的目的是 来查看代码的执行过程的,便于理解代码

1. 打断点

在 pycharm 中打断点只需要在代码和行号之间点击,出现的红色圆点,就是断点
再次点击红色圆点可以取消断点
在pycharm 中,如果第一行是注释,需要两个断点
断点的作用,是代码执行停留的地方

在这里插入图片描述

2. 右键 Debug 运行代码

在这里插入图片描述
在这里插入图片描述

3. 单步执行代码,查看过程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、字符串

1、定义与下标引用

在这里插入图片描述

  • 需求:
      1. str1 = ‘abcdefg’
      1. 打印字符串中第一个位置的字符
      1. 打印 字符串中最后一个位置的字符
      1. 打印字符串长度
      1. 分别使用 for 循环 和 while 循环对字符串进行遍历
# 1. str1 = 'abcdefg'
str1 = "abcdefg"
# 2. 打印字符串中第一个位置的字符
print(str1[0])   # a 
2、切片 
# 3. 打印 字符串中最后一个位置的字符
print(str1[-1])  # g
# 4. 打印字符串长度
print(len(str1))  # 7
print(str1[len(str1)-1])  # g 末尾元素的下标= 字符串长度 -1
# 5.1 使用 for循环对字符串进行遍历
print("*" * 80)
for i in str1:print(i)
# 5.2 使用 while循环对字符串进行遍历
print("*" * 80)
i = 0
while i < len(str1):print(str1[i])i += 1

2、切片

在这里插入图片描述

  • 需求:
      1. 定义字符串str1 = ‘abcdefg’
      1. 使用切片打印输出’cde’
      1. 使用切片打印输出’abcde’
      1. 使用切片打印输出‘bcdefg’
      1. 使用切片打印输出‘abcdefg‘
      1. 使用切片打印输出’aceg‘
      1. 使用切片打印输出’abcdef‘
# 1. 定义字符串str1 = 'abcdefg'
str1 = "abcdefg"# 2. 使用切片打印输出’cde’
print(str1[2:5:1])
# 说明:步长默认为1(可以省略不写)
print(str1[2:5])# 3. 使用切片打印输出’abcde’
print(str1[0:5])   # 下标值从0开始计数(字符串起始位置)
print(str1[:5])    # 起始位置为0取值时,开始下标可以不写# 3. 使用切片打印输出‘bcdefg’
print(str1[1:7])
print(str1[1:])   # 取值范围到末尾时,结束下标可以不写# 4. 使用切片打印输出‘abcdefg‘
print(str1[:])# 5. 使用切片打印输出’aceg‘
print(str1[::2])  # 需要设置步长为2# 6. 使用切片打印输出’abcdef‘
print(str1[:-1])

3、查找

  • 需求:
      1. 现有字符串数据: ‘itcast@qq.com’
      1. 请设计程序, 实现判断 “@” 符号是否存在于数据中
      1. 要求如果数据存在, 则输出数据所在位置; 否则打印输出"邮箱格式错误"
email = input("请输入你的邮箱:")
if email.find("@") != -1:print(email.find("@"))
# 语法:字符串.find(“要查找的内容”)
# 返回值:找到之后、返回对应数据的下标;找不到,返回-1
else:print("邮箱格式错误")

4、去除空白字符

  • 需求:
      1. 现有字符串数据: ’ 15000000000 ’
      1. 请设计程序, 去除字符串两端的空白字符
str1 = input("请输入测试字符串内容:")
print("去除空格前:", str1)
print("去除空格后:", str1.strip())

5、转换大小写与拆分

  • 字符串.lower() 将字符串转换为小写
  • 字符串.upper() 将字符串转换为大写
  • 字符串.split(sep) # 字符串 按照指定字符串 sep 进行切割
    • sep, 指定按照什么字符串进行分隔,可以不写,默认是空白字符(空格, \n, \t)
    • 返回: 返回的是列表,列表中的内容是分隔之后的字符串

需求:

    1. 数据常见操作: 增(insert)删(delete)改(update)查(select)
    • 测试数据:
      InSert into student values(001,“jack”, 18);
      Delete from student where id=001;
      UPDATE student set name=’rose’where id=001;
      select * from student where id=001;
    1. 请设计程序实现:用户输入字符串为查询操作时,打印“显示查询结果”;
      否则,提醒“当前进行的是是非查询操作,需要进行事务提交与回滚”。
# 接收一个字符串
# 测试数据:InSert into student values(001,“jack”, 18)
str1 = input("请输入sql语句:")# 取出空格之前的完整的单词(select/Select/SELECT) 、sql语句是不区分大小写str2 = str1.split()print(str2)print(str2[0])
#
# # 将输入的内容进行大小写转换str3 = str2[0].lower()str4 = str2[0].upper()# 判定输入的内容为select,打印“显示查询结果”
# if str2[0] == "select":
# if str3 == "select":
# if str4 == "SELECT":
if str1.split()[0].upper() == "SELECT":print("显示查询结果")
# 否则,提醒“当前进行的是非查询操作,需要进行事务提交与回滚” 
else:print("当前进行的是非查询操作,需要进行事务提交与回滚")

6、其他方法-替换、连接、是否为纯数字

在这里插入图片描述
在这里插入图片描述

7、登录案例优化

在这里插入图片描述

  • 需求:
    用户名、密码、验证码去除两端空格
    验证码统一转换为小写进行判断
    增加手机号的判断验证 – 长度的判断、非数字的判断
  • 要求:
    1、手机号非数字,提示“手机号格式错误”
    2、手机号长度问题,提示“请输入11位数字”
    3、手机号正确后,判定密码及验证码
    4、手机号为13488888888、密码为123456、验证码为‘admin123456’时,输出“登录成功”
    5、否则输出”密码错误”或”验证码错误”
username = input("请输入用户民:").strip()
password = input("请输入密码:").strip()
verify_code = input("请输入验证码:").strip()# 判断手机号为11位数字
if username.isdigit() and len(username) == 11:# 登录成功if username == "13488888888" and password == "123456" and 
verify_code.lower() == "admin123456":print("登录成功")else:print("登录失败,密码或验证码错误")
else:print("手机号非11位数字")

在这里插入图片描述

# 用户输入手机号、密码、验证码
# 对于输入的手机号、密码、验证码去除两端空格
username = input("请输入手机号:").strip()
password = input("请输入密码:").strip()
code = input("请输入验证码:").strip()# 手机号为空时,提示“手机号不能为空”
if username == '':print("手机号不能为空")# 密码为空时,提示“密码不能为空”
if len(password) == 0:print("密码不能为空")# 验证码为空时,提示“验证码不能为空”
if len(code) == 0:print("验证码不能为空")# 手机号错误时,提示“手机号格式错误,请输入11位数字”
if not username.isdigit() or len(username) != 11:print("手机号格式错误,请输入11位数字")# 密码错误时,提示“密码与账号不匹配”
if password != "123456":print("密码与账号不匹配")# 验证码统一转换为小写进行判断,验证码错误、提示“验证码与图片内容不一致”
if code.lower() != "8888":print("验证码与图片内容不一致")# 手机号为”13488888888”、密码为”123456”、验证码为”8888”时,输出“登录成功”
if username == "13488888888" and password == "123456" and code == "8888":print("登录成功")

三、列表 list

1, 列表 list, 可以用来存储一组(多个)数据
2, 列表中的多个数据之间使用 逗号隔开
3, 列表 表现形式为 []
4, 列表中可以存储任意类型的数据

1、列表基础操作

  • 技术点:列表操作
  • 定义:
    • ① 列表名 = []
    • ② 列表名 = [字符串, 整型, 浮点数, 布尔型, 列表[], 字典{}, 元组()]
  • 操作:
    • ① 新增数据:列表名.append(数据)
    • ② 删除数据:列表名.pop(下标)
    • ③ 修改数据:列表名[下标] = 新数据
    • ④ 查询数据:列表名、列表名[下标]
list1 = []
list2 = [18, 176.6, True, "jack"]
print(list1, type(list1))
print(list2, type(list2))# 追加数据
list2.append("rose")
print(list2)# 删除数据
# 删除末尾数据
list2.pop(-1)
print(list2)# 删除第一个数据
list2.pop(0)
print(list2)# 删除指定下标的数据
list2.pop(1)
print(list2)# # 下标越界错误
# print("-" * 80)
# list2.pop(100)
# print(list2)   # pop index out of range# 修改数据
list2[-1] = "rose"
print(list2)

2、案例: 登录

  • 需求:
    • 定义列表存储测试账号
    • 遍历列表数据进行测试账号校验
    • 当手机号为”13488888888”,输出“账号成功”;否则“账号错误”。
# 定义列表
list1 = ["13488888888", "aaaaaabbbbb", "1341234567", "", "13566666666"]# 遍历列表数据
for i in list1:print(i)if i == "13488888888":print("账号正确")else:print("账号错误")

三、字典

1、字典基础操作

1, 字典 dict, 是由键(key)值(value)对组成, 表现为{键: 值, 键: 值, … }
2, 字典的键值对之间使用逗号隔开,一个键值对表示一个数据
3, 字典的键一般为 字符串, 可以是数字
4, 字典的值 可以是任意类型
5, 在一个字典中, 键(key)是不能重复的
6, 字典中没有下标

# 定义字典
dict1 = {}
# 字典key是字符串类型数据,具有唯一性
dict2 = {"name": "jack","age": 18
}
print(dict1, type(dict1))
print(dict2, type(dict2))# 新增数据
# 语法:字典名称[“key键”] = 数据
dict2["high"] = 176.5
print(dict2)# 删除数据
# 删除存在key对应数据
dict2.pop("high")
print(dict2)# # 删除数据时key不存在
# print("-" * 80)
# dict2.pop("sex")   # KeyError
# print(dict2)# 修改数据
dict2["age"] = 20
print(dict2)# 查询数据
# 使用key
print(dict2["age"])# 使用get方法
print(dict2.get("age"))# 思考:字典名["key"] 和 字典名.get("key")的区别?

2、遍历

  • 遍历: 将容器中的数据逐个取出.
  • 字典是由键值对组成的, 字典的遍历分为三种
      1. 遍历字典的键(key)
      1. 遍历字典的值(value)
      1. 遍历字典的(key)和值(value)
  • 遍历字典的键(key)
for 变量 in 字典:  # 变量就是字典的键pass
for 变量 in 字典.keys():   # 字典.keys() 可以获取字典中所有的键(key)pass
  • 遍历字典的值(value) 使用最多
for 变量 in 字典.values():  # 字典.values() 可以获取字典中所有的值(value)pass
  • 遍历字典的键(key)和值(value)
# 字典.items() 可以获取字典中所有的键值对,每个键值对组成元组
# 变量1 是键(key) 变量2 是值(value)
for 变量1, 变量2 in 字典.items():pass
# 定义字典
dict1 = {"name": "jack","age": 18,"data": ["rose", "jack", "tom"],"data2": {"sex": 1}
}# 遍历字典key
for key in dict1.keys():print(key)# 遍历字典value *****
print("-" * 80)
for value in dict1.values():print(value)# 遍历字典 key和value
print("-" * 80)
for key, value in dict1.items():print(f"key={key} value={value}")# 需求1:打印输出sex字段值
print("-" * 80)
print(dict1.get("data2").get("sex"))# 需求2:打印tom(data列表数据的最后一项)
print(dict1.get("data")[-1])

3、登录案例优化

需求:

  • 1、定义字典存储测试数据,包含账号和密码
    • 提示:
      [{“username”: “13488888888”, “password”: “123456”},
      {“username”: “”, “password”: “123456”}]
  • 2、遍历数据进行测试账号和密码校验
  • 3、当手机号为”13488888888”且密码为“123456”时,输出“登录成功”;否则“错误或密码错误”。
test_data = [{"username": "13488888888","password": "123456"},{"username": "","password": "123456"},{"username": "13488888888","password": ""},
]
for i in test_data:if i.get("username") == "13488888888" and i.get("password") == "123456":print("登录成功")else:print("账号或密码错误")

五、元组

# 定义元组
tuple1 = ("jack", 18, 176.5, {"age": 20}, [1, 2, 3])# 打印元组及元组类型
print(tuple1, type(tuple1))# 打印元组指定数据:通过下标获取
print(tuple1[2])# 使用元组交换两个变量的值
num1 = 100
num2 = 200
num2, num1 = num1, num2
print(num1)
print(num2)# 定义元组存储测试账号
print("-" * 80)
tuple2 = ("13488888888", "", "aaaaaabbbbb", "1341234567", "13612345678")# 遍历元组数据进行测试账号校验
for i in tuple2:# 当手机号为”13488888888”,输出“账号成功”;否则“账号错误”if i == "13488888888":print("账号正确")else:print("账号错误")

相关文章:

  • URP-UGUI相关知识
  • 高光谱相机在工业检测中的应用:LED屏检、PCB板缺陷检测
  • CONDA:用于 Co-Salient 目标检测的压缩深度关联学习(总结)
  • openharmony5.0.0中C++公共基础类测试-线程相关(一)
  • 【速写】hook与fx
  • 国际化不生效
  • 聊聊SpringAI流式输出的底层实现?
  • 安全复健|windows常见取证工具
  • 从零开始搭建Django博客③--前端界面实现
  • 超声三维测试水箱与超声功率计:精准医疗与工业检测的核心技术支撑
  • Java基础 4.23
  • GOC 课程制作
  • YOLO数据处理
  • 树莓派超全系列教程文档--(41)树莓派config.txt旧版内存控制选项
  • system verilog 语句 耗时规则
  • MySQL 锁机制
  • SwiftUI 2.Image介绍和使用
  • leve1.4
  • C# AutoResetEvent 详解
  • HTTP:十一.HTTP认证概述
  • 云南大理州洱源县发生4.8级地震,震源深度10千米
  • 小鹏机器人IRON亮相上海车展,何小鹏:相信更多人形机器人会现身车展
  • 一场12年的马拉松,他用声音陪伴中国路跑成长
  • 叶辛秦文君进校园推广阅读
  • 福建一季度GDP为13232.38亿元,同比增长5.7%
  • 旁白丨无罪后领到国家补偿,一位退休教师卸下了“包袱”