python基础实战5-python基本结构
1 if语句

- if语句是用来进行判断的,其使用格式如下
if 要判断的条件:
条件成立时,要做的事情
案例一:
age = 30
print("------if判断开始------")
if age >= 18:print("我成年了")
print("------if判断结束------")
运行结果:

案例二:
age = 16
print("------if判断开始-------")
if age >= 18:print("我成年了")
print("------if判断结束-------")
运行结果:

总结:以上两个案例仅仅是age变量的值不一样,导致结果却不同;能够看得出来if判断语句的作用:就是当满足一定条件时才会执行代码块语句,否则就不执行代码块语句。
注意:代码的缩进为一个tab键,或者4个空格
在python开发中,Tab和空格不要混用
2 if-else语句

格式如下:
if 要判断的条件:
条件成立,要做的事情
......
else:
条件不成立,要做的事情
......
练习:
- 输入用户年龄
- 判断是否满18岁(>=)
- 如果满18岁,提示你以成年
- 如果未满18岁,提示未成年
# 输入用户年龄
age = int(input("请输入年龄:"))
# 判断是否满18岁(>=)
if age >= 18:# 如果满18岁,提示你以成年print("你以成年")
else:# 如果未满18岁,提示未成年print("未成年")
#这句代码无论条件是否成立都会执行
print("这句代码什么时候执行?")
输出结果:

注意:在python中通过控制台输入的内容类型是是字符串类型,在python中要进行大于等于的比较必须是相同的数据类型
3 if嵌套
if 条件 1:
条件 1 满足执行的代码
......
if 条件 1 基础上的条件 2:
条件 2 满足时,执行的代码
......
# 条件 2 不满足的处理
else:
条件 2 不满足时,执行的代码
# 条件 1 不满足的处理
else:
条件 1 不满足时,执行的代码
......
if的嵌套 演练 -- 火车站安检
需求:
- 定义布尔型变量has_ticket表示是否有车票
- 定义整型变量knife_length表示刀的长度,单位:厘米
- 首先检查是否有车票,如果有,才允许进行安检
- 安检时,需要检查刀的长度,判断是否超过20厘米
- 如果超过20厘米,提示刀的长度,不允许上车
- 如果不超过20厘米,安检通过
- 如果没有车票,不允许进门
# 定义布尔型变量has_ticket表示是否有车票
has_ticket = True# 定义整型变量knife_length表示刀的长度,单位:厘米
knife_length = 30# 首先检查是否有车票,如果有,才允许进行安检
if has_ticket:print("车票检查通过,准备开始安检")# 安检时,需要检查刀的长度,判断是否超过20厘米if knife_length > 20:# 如果超过20厘米,提示刀的长度,不允许上车print("你的刀太长,有%d厘米长" %knife_length)print("不允许上车")# 如果不超过20厘米,安检通过else:print("安检通过,欢迎乘车")
# 如果没有车票,不允许进门
else:print("请先买票,谢谢配合!!!")
4 elif的使用格式
当条件A满足时做事情1;当条件A不满足、条件B满足时做事情2;当条件B不满足、条件C满足时做事情3,那么该怎么实现呢? 通过使用elif
if xxx1:
事情1
elif xxx2:
事情2
elif xxx3:
事情3
说明:
- 当xxx1满足时,执行事情1,然后整个if结束
- 当xxx1不满足时,那么判断xxx2,如果xxx2满足,则执行事情2,然后整个if结束
- 当xxx1不满足时,xxx2也不满足,如果xxx3满足,则执行事情3,然后整个if结束
choice = input('请输入你喜欢的游戏:')if choice == '和平精英':print('特种兵加油!')
elif choice == '王者荣耀':print('敌军还有五秒到达战场')
elif choice == '英雄联盟':print('英雄们加油啊!')

也可以和else一起使用:
if 性别为男性:
输出男性的体重
...
elif 性别为女性:
输出女性的体重
else:
第三种性别的体重
...
说明:
- 当”性别为男性“满足时,执行”输出男性的体重“的相关代码
- 当”性别为男性“不满足时,如果”性别为女性“满足,则执行”输出女性的体重“的相关代码
- 当”性别为男性“不满足,”性别为女性“也不满足,那么就默认执行else后面的代码,即”第三种性别的体重“相关代码
elif必须和if一起使用,否则出错
else一般用在最后,即所有条件都不满足时使用
5 循环语句
5.1 while语法
while 判断条件:
代码块
while循环的语法结构与if语句的结构区别:
- if语句只会执行一次判断条件,条件成立以后,只会执行一次代码块
- while语句,会先执行一次判断条件,如果条件成立,会执行一次代码块,代码块执行完成以后,会再次判断条件语句,如果还成立,将会再执行代码语句...直到最后条件不成立,
例如:输出十遍hello world
i = 1
while i <= 10:print('hello world')i += 1 #一定要记得让 i += 1,否则会造成死循环
注意:
1.初始化变量i
2.循环条件的制定
3.自增或者自减
例如:打印1-10的累加和
i = 1 #初始化变量i
total = 0 #用于求和
while i <= 10: # 条件在1-10以内total += i # 累加求和i += 1 # 一定要记得让 i += 1,否则会造成死循环print(total)
例如:用户登陆有三次机会
i = 3
while i >= 1:username = input('请输入用户名:')password = input('请输入密码:')#用户名是admin且密码是123456则身份验证成功否则验证失败if username == 'admin' and password == '123456':print('身份验证成功!')breakelse:print('身份验证失败!')i -= 1print(f'还有剩余{i}次机会')
运行结果:

5.2 for循环与基础语法
5.1.1 for循环的格式
for 临时变量 in 序列:
循环满足条件时执行代码

说明:
- for 、in、冒号 - 固定写法
- 变量 -自定义变量名,要求和单独定义变量的时候一样
- 序列 -容器型数据类型的数据,比如:字符串、列表、元组、集合...
- 数字和布尔都不属于序列
- 循环体 -需要重复执行的代码:结构上必须和for保持一个缩进
- 遍历字符串:
for s in 'hello':print(s)
输出结果:

- 换一种字符串的打印
str1 = 'abc'
for x in str1:print('今天你学习了吗?')
输出结果:

5.1.2 range()函数
range()函数通常是结合for使用的,单独使用没有什么意义
for x in range(5):print(x)
输出结果:

如上图range(5)产生的序列是0-4之间的数字。如果换成range(10)那么打印的是0-9之间的数字。
其实range的用法非常灵活,如下:
- range(101):可以用来产生0到100范围的整数,需要注意的是取不到101
- range(1,101):可以用来产生1到100范围的整数,相当于前面是闭区间后面是开区间
- range(1,101,2):可以用来产生1到100的奇数,其中2是步长,即每次数值递增的值
- range(100,0,-2):可以用来产生100到1的偶数,其中-2是步长,即每次数字递减的值
实现1~100之间的偶数求和
total = 0
for x in range(2,101,2):total += x
print(total)
5.1.3 break和continue
break:表示跳出整个循环结构
continue:表示跳过本次循环后面的语句不执行,继续下一次循环
i = 0
while i <= 12:i += 1if i == 7 or i == 11:breakprint(i)
运行结果:

从上运行的结果,可以发现在7的时候就结束了循环,即使i == 11 也没有任何作用,因为在7的时候就结束了。
将break换成continue
i = 0
while i <= 12:i += 1if i == 7 or i == 11:continueprint(i)
运行结果:

continue是在7和11的时候跳过没有打印数字。
注意:
- 在python中,break和continue只能用于循环语句中。
- break和continue在嵌套循环中使用时,只对最内层循环有效
5.1.4 while和for与else的使用
在python中,循环语句还可以和else语句联合使用。
语法结构:
while 判断条件:
条件成立时,循环体代码
else:
循环后,不符合循环条件执行的代码
或者
for x in 序列:
循环体代码
else:
循环完所有序列,执行的代码
从上述结构中,我们可以看出,在非死循环中,正常情况下else里的语句都是会被执行的。那这个else语句到底有什么作用呢?一般情况下,循环语句和else共同出现时,在循环语句里都会配合break语句来使用。
i = 0
while i <= 12:if i == 7:breaki += 1print(i)
else:print('循环条件不成立时执行的代码')
从上述代码中,执行后发现else代码没有被执行,因为只要循环没有顺利完成,中间被break中断了则else里面的内容就不会执行。
5.1.5 综合案例
掷骰子游戏
- 欢迎进入皇家游戏长
- 输入用户名,默认用户没有币
- 提示用户充值买币(100块钱30币,充值必须是 100的倍数,充值不成功可以再次充值)
- 玩一局游戏扣除2个币,猜大【两个骰子相加和大于6】、小【两个骰子相加和小于6】(系统用1-6之间的随机数模拟骰子产生值)
- 只要猜对了奖励1个币,可以继续玩(想不想继续玩,也可以没有金币自动退出)
代码参考:
import random
print('*' * 30)
print('欢迎进入澳门皇家娱乐城')
print('*'*30)username = input('输入用户名:')
coins = 0answer = input('是否加入"猜猜乐"游戏(yes/no)')if answer == 'yes':#同意进入游戏while True:num = int(input('%s!当前您的金币为%d! 请充值(100块钱30币,充值必须是100的倍数):' %(username,coins)))if num % 100 == 0 and num > 0:#充值成功coins += (num / 100) * 30else:print('充值失败!')ans = input('是否继续充值(yes/no)?')if ans == 'no': #not 5>3breakprint('当前金币数是:',coins)#开始玩print('玩一局扣除5个金币,进入游戏中……')#计数器count = 0#可以玩多局while True:#模拟两个骰子 使用随机数ran1 = random.randint(1,6)ran2 = random.randint(1,6)print(ran1)print(ran2)#扣金币coins -= 5#押大 押小 买定离手print('押大?押小?买定离手!')guess = input('输入大小:')#判断输赢 6 ,如果赢返3金币,玩5局送10个if(ran1 + ran2) > 6 and guess == '大' or (ran1 + ran2) <= 6 and guess == '小':#金币累加coins += 3print('恭喜!你赢了!当前金币数是:',coins)else:print('很遗憾!回去多加练习!当前金币数是:',coins)#计数的累加count += 1#送金币if count % 5 == 0:print('满五局送金币15个!!!')coins += 15#是否继续flag = input('是否再玩一局游戏(yes/no)?')if flag == 'no' or coins < 5:print('主动离开或者金币不足!')break
else:print('欢迎下次再来!!!')
5.1.6 猜数字游戏
产生随机数 random.randint(start,end)
可以猜多次 直到猜对为止
如果猜错了适当给出提示,猜大了还是猜小了
1.统计猜了几次
2.如果1次就中,赶快取买彩票把,运气好到爆了
2-5,猜对了,运气还可以
6次以上,猜对了,运气一般
import randomran = random.randint(1,50)
count = 0#循环猜多次
while True:guess = int(input('猜一个1-50之间的数字:'))# count改变count += 1#猜对就结束if guess == ran:if count == 1:print('赶快取买彩票把,运气好到爆了')elif 2 < count < 5:print('猜对了,运气还可以')elif count >= 6:print('猜对了,运气一般')breakelif guess > ran:print('猜大了,再小一点!')else:print('猜小了,再大一点')
相关文章:
python基础实战5-python基本结构
1 if语句 if语句是用来进行判断的,其使用格式如下 if 要判断的条件: 条件成立时,要做的事情 案例一: age 30 print("------if判断开始------") if age > 18:print("我成年了") print("------if判断…...
移动端异构运算技术 - GPU OpenCL 编程(基础篇)
一、前言 随着移动端芯片性能的不断提升,在移动端上实时进行计算机图形学、深度学习模型推理等计算密集型任务不再是一个奢望。在移动端设备上,GPU 凭借其优秀的浮点运算性能,以及良好的 API 兼容性,成为移动端异构计算中非常重要…...
QString类方法和变量简介(全)
QString类方法和变量简介 操作字符串(|append|insert|sprintf|QString::arg()|prepend|replace|trimmed|simplified)查询字符串(startsWith|endsWith|contains|localeAwareCompare|compare)字符串转换 标准C提供了两种字符串:一种是C语言风格的以"\0"字符…...
中移链控制台对接4A平台功能验证介绍
中移链控制台具备单独的注册登录页面,用户可通过页面注册或者用户管理功能模块进行添加用户,通过个人中心功能模块进行用户信息的修改和密码修改等操作,因业务要求,需要对中移链控制台的用户账号进行集中管理,统一由 4…...
必知的Facebook广告兴趣定位技巧,更准确地找到目标受众
在Facebook广告投放中,兴趣定位是非常重要的一环。兴趣定位不仅可以帮助我们找到我们想要的目标受众,还可以帮助我们避免一些常见的坑。今天,就让我们一起来看看必知的Facebook广告兴趣定位技巧,更准确地找到目标受众。 1.不要只关…...
【MySQL】慢查询+SQL语句优化 (内容源自ChatGPT)
慢查询SQL语句优化 1.什么是慢查询2.优化慢查询3.插入数据优化5.插入数据底层是什么6.页分裂7.页合并8.主键优化方式10.count 优化11.order by优化12.group by 优化13.limit优化14.update 优化15.innodb 三大特征 1.什么是慢查询 慢查询是指执行SQL查询语句所需要的时间较长&a…...
HashMap底层源码解析及红黑树分析
HashMap线程不安全,底层数组链表红黑树 面试重点是put方法,扩容 总结 put方法 HashMap的put方法,首先通过key去生成一个hash值,第一次进来是null,此时初始化大小为16,i (n - 1) & hash计算下标值&a…...
科技云报道:一路狂飙的ChatGPT,是时候被监管了
科技云报道原创。 即使你过去从不关注科技领域,但近期也会被一个由OpenAI(美国的一家人工智能公司)开发的人工智能聊天机器人“ChatGPT”刷屏。 与上届“全球网红”元宇宙不同,这位新晋的“全能网友”似乎来势更加凶猛。 互联网…...
第四十四章 管理镜像 - 传入日记传输率
文章目录 第四十四章 管理镜像 - 传入日记传输率传入日记传输率镜像数据库状态 第四十四章 管理镜像 - 传入日记传输率 传入日记传输率 在备份和异步成员的镜像成员状态列表下方,自上次刷新镜像监视器以来日志数据从主服务器到达的速率显示在该成员的传入日志传输…...
加密解密学习笔记
加密种类 对称加密,分组对称加密算法 加密算法 AES(Advanced Encryption Standard)高级加密标准 DES(Data Encryption Standard)数据加密标准 3DES/Triple DEA (Triple Data Encryption Algorithm) 三重数据加密算…...
Spring 属性填充源码分析(简单实用版)
属性填充 属性填充只有 3 种方式 根据名称填充 根据类型填充 思考什么时候会出现呢??? 多见于第三方框架与 Spring集成,举例:Mybatis 与 Spring集成,把 Mapper 接口注册为 BeanDefinition 时候就指定了自…...
【机器学习分支】重要性采样(Importance sampling)学习笔记
重要性采样(importance sampling)是一种用于估计概率密度函数期望值的常用蒙特卡罗积分方法。其基本思想是利用一个已知的概率密度函数来生成样本,从而近似计算另一个概率密度函数的期望值。 想从复杂概率分布中采样的一个主要原因是能够使用…...
三角回文数+123
三角回文数:用户登录 问题描述 对于正整数 n, 如果存在正整数 k 使得 n123⋯kk(k1)/2, 则 n 称为三角数。例如, 66066 是一个三角数, 因为 66066123⋯363 。 如果一个整数从左到右读出所有数位上的数字, 与从右到左读出所有数位 上的数字是一样的, 则称这个数为…...
JAVA常用的异步处理方法总结
前言 在java项目开发过程中经常会遇到比较耗时的任务,通常是将这些任务做成异步操作,在java中实现异步操作有很多方法,本文主要总结一些常用的处理方法。为了简化,我们就拿一个实际的案例,再用每种方法去实现…...
GitLab统计代码量
gitlab官方文档:https://docs.gitlab.com/ee/api/index.html 1、生成密钥 登录gitlab,编辑个人资料,设置访问令牌 2、获取当前用户所有可见的项目 接口地址 GET请求 http://gitlab访问地址/api/v4/projects?private_tokenxxx 返回参数 …...
Linux TCP MIB统计汇总
概述 在 linux > 4.7 才将所有TCP丢包收敛到 函数 tcp_drop 中 指标详解 cat /proc/net/netstat 格式化命令 cat /proc/net/netstat | awk (f0) {name$1; i2; while ( i<NF) {n[i] $i; i }; f1; next} (f1){ i2; while ( i<NF){ printf "%s%s %d\n", …...
记录 docker linux部署jar
第一步 web sso user admin 中yml文件还原到阿里mysql数据库 第二步 各个jar进行打包处理 第三步 正式服务器的Jar备份 第四步 拉取以上jar包 到正式服务器中 第五步 查看 docker images 其中 web_service 1.0.2是上一个版本 上一个版本build 镜像命令是这样的(需…...
【Linux】教你用进程替换制作一个简单的Shell解释器
本章的代码可以访问这里获取。 由于程序代码是一体的,本章在分开讲解各部分的实现时,代码可能有些跳跃,建议在讲解各部分实现后看一下源代码方便理解程序。 制作一个简单的Shell解释器 一、观察Shell的运行状态二、简单的Shell解释器制作原理…...
onMeasure里如何重置只有1个子view一行满屏, 若有多个自适应一行
onMeasure里如何重置只有1个子view一行满屏, 若有多个自适应一行 可以尝试在 onMeasure 方法中重写 measureChildWithMargins 或 measureChild 方法来实现这个需求。 对于只有一个字的 View,我们可以把它的宽度设为屏幕宽度,高度设为最大高度,这样这个 View 就会占满一整行…...
Postman创建项目 对接口发起请求处理
查看本文之前 您需要理解了解 Postman 的几个简单工作区 如果还没有掌握 可以先查看我的文章 简单认识 Postman界面操作 那么 掌握之后 我们就可以正式来开启我们的接口测试 我们先选择 Collections 我们点上面这个加号 多拉一个项目出来 然后 我们选我们刚加号点出来的项目…...
地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...
Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...
Prompt Tuning、P-Tuning、Prefix Tuning的区别
一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...
.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...
关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
SpringTask-03.入门案例
一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...
PostgreSQL——环境搭建
一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在࿰…...
C语言中提供的第三方库之哈希表实现
一. 简介 前面一篇文章简单学习了C语言中第三方库(uthash库)提供对哈希表的操作,文章如下: C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...
android RelativeLayout布局
<?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android:gravity&…...
