Python 从入门到精通 学习笔记 Day03

Python 从入门到精通 第三天

在这里插入图片描述

今日目标

流程控制语句、退出循环、练习学习的内容

一、流程控制语句

流程控制的三种方式:顺序语句、双分支语句、循环语句

双分支语句

Python 的双分支语句使用if-else语句实现。
其语法结构如下:

if条件:
		#如果条作为真,执行这个代码块
else:
		#如果条性为假,执行这个代码块

其中,条件是一个布尔表达式,如果它的结果为True,则执行第一个代码块,否则执行第二个代码块。
在Python中,代码块使用缩进来表示,因此需要注意代码块的缩进量。
通常使用四个空格来表示一个缩进级别。

# 获取用户输入的年龄
age = int(input("请输入您的年龄:"))

# 判断是否可以去网吧上网
if age >= 18:
    print("您可以去网吧上网")
else:
    print("您未满18岁,不能去网吧上网")

多分支语句

在Python中,多分支语句通常使用if-elif-else语句实现。它的语法结构如下:
if 条件1:
		#如果条件1为真,执行这个代码块
elif 条件2:
		#如果条件1为假,且条件2为真,执行这个代码块。
elif 条件3:
		#如果条件1和条件2都为假,且条件3为真,执行这个代码块。
else:
		#如果所有条件都为假,执行这个代码块。
# 获取用户输入的身高和体重
height = float(input("请输入您的身高(单位:米):"))
weight = float(input("请输入您的体重(单位:千克):"))
# 计算BMI并输出结果
bmi = weight / (height ** 2)
print(f"您的BMI指数为{bmi}")

# 根据BMI范围输出建议
if bmi < 18.5:
    print("您的体重过轻,请增加营养摄入并进行适当活动。")
elif bmi < 24:
    print("您的体重正常,请继续保持。")
elif bmi < 28:
    print("您的体重过重,请注意控制饮食并加强锻炼。")
else:
    print("您的体重严重超标,请及时咨询医生。")

分支嵌套

# 获取用户输入的身份证号码
id_nmuber = input("请输入您的身份证号码:")

# 判断身份证号码是否为18位
if len(id_nmuber)!=18:
    print("您的身份证号码不是18位,请重新输入。")
else:
    # 获取身份证号码的前6位和倒数第二位
    native_place_code = id_nmuber[:6]
    gender_code = int(id_nmuber[-2])

    # 判断籍贯
    if native_place_code == "370600":
        print("您的籍贯是山东省。")
    elif native_place_code =="110000":
        print("您的籍贯是北京市。")
    elif native_place_code == "120000":
        print("您的籍贯是天津市。")
    elif native_place_code == "310000":
        print("您的籍贯是上海市。")
    elif native_place_code == "500000":
        print("您的籍贯是重庆市。")
    else:
        print("您的籍贯是其他城市。")

    #判断性别
    if gender_code % 2 == 0:
        print("您的性别是女性。")
    else:
        print("您的性别是男性。")

循环语句

循环语句是一种编程语言的控制结构,用于在程序中重复执行—段代码,直到满足特定条件为止。
循环语句可以帮助程序员简化重复性的任务,提高代码的可读性和效率。

while循环

while循环用于在条件为真的情况下重复执行一段代码,直到条件变为假为止。
以下是while循环的语法:

while条件:
	循环体

在执行while循环时,程序会先检查条件是否为真。
如果条件为真,就执行循环体中的代码,然后再次检查条件。
如果条件仍为真,就再次执行循环体中的代码,以此类推,直到条件变为假为止。

# 使用while循环打印10次“hello world"
count = 0
while count < 10:
    print("hello world")
    count += 1
   

for循环

for循环用于对一个序列(如字符串、列表、元组等)中的元素进行遍历和操作,直到序列中的所有元素都被遍历为止。
以下是for循环的语法:

for 变量 in 序列:
    循环体

在执行for循环时,程序会依次将序列中的每个元素赋值给变量,并执行循环体中的代码,直到序列中的所有元素都被遍历完为止。

以下是使用for循环打印10次"hello world"的代码示例:

# 使用for循环打印10次“hello world”
for i in range(10):
    print("hello world")
验证码案例
import random
import string

# 定义可选字符集
characters = string.ascii_uppercase = string.digits

# 生成五位随机验证码
code = ""
for i in range(5):
    code += random.choice(characters)
print(code)
累加和案例
# 定义变量sum并初始化为0
sum = 0

# 使用for循环将1到100的数相加
for i in range(1, 101):
    sum += i

# 输出结果
print("1到100的和为:", sum)
sum = 0
for i in range(1, 101):
    if i % 2 == 0:
        sum += i

print("1到100中所有偶数的和为:", sum)

循环语句嵌套分支语句

print("欢迎来到游戏世界!")
while True:
    print("请选择您要进行的操作:")
    print("1.攻击敌人")
    print("2.购买道具")
    print("3.逃跑")
    choice = input("请选择操作(输入数字1,2,3):")

    if choice == "1":
        print("您发起了攻击,打败了敌人!")
    elif choice == "2":
        print("您购买了一件道具,增强了自己的能力!")
    elif choice == "3":
        print("您逃跑了,但是被追上了!")
    else:
        print("您的输入无效,请重新输入")
        continue

    confirm = input("是否继续游戏?(输入y或n):")
    if confirm == "n":
        print("游戏结束,谢谢参与!")
        break
# 九九乘法表
for i in range(1,10):
    for j in range(1,i+1):
        print(f"{j} * {i} = {i * j}",end="\t")
    print()

编写一个Python程序,输出一个nx n的方阵,其中第i行第j列的格子中应该填写i+j的结果。
要求:
输入n的值,保证是一个正整数。
要求输出的方阵中每个格子的宽度都为4个字符,格子之间用制表符分隔。
输出的方阵中每行的末尾不能有多余的制表符。
输出的方阵中每行的末尾必须有一个换行符。

def print_matrix(n):
    for i in range(1, n + 1):
        for j in range(1, n + 1):
            # 格式化每个格子的内容为4个字符宽度
            cell = "{:4d}".format(i + j)
            # 输出格子内容,以制表符分隔
            print(cell, end="\t")
        # 每行末尾去除多余的制表符,并换行
        print()


# 输入n的值
n = int(input("请输入正整数n的值:"))

# 调用函数输出方阵
print_matrix(n)

二、退出循环

在Python编程语言中,break和continue是两个控制流语句,可以用于改变程序的执行流程。
break语句用于跳出当前的循环(for循环或while循环),使程序继续执行循环之后的代码,即跳出整个循环体。
例如:

for i in range(1, 11):
    if i == 5:
        break
    print(i)

上面的代码将会输出1、2、3、4,因为当i等于5时,break语句被执行,跳出整个循环。
continue语句用于结束当前的循环迭代,跳过剩余的代码,继续执行下一次循环迭代。
例如:

for i in range(1, 11):
    if i == 5:
        continue
    print(i)

上面的代码将会输出1、2、3、4、6、7、8、9、10。
因为当i等于5时,continue语句被执行,跳过当前的迭代,直接进入下一次迭代。

三、练习学习的内容

1.假设你正在写一个简单的计算器程序,可以让用户输入两个数字和一个操作符,然后输出计算结果。
你需要使用分支循环语句来实现这个程序。
假设操作符可以是加号、减号、乘号或除号,你的程序需要根据用户输入的操作符执行相应的计算操作,并输出计算结果。如果用户输入的操作符不是加号、减号、乘号或除号,则输出错误信息并让用户重新输入。

while True:
    # 用户输入两个数字和一个操作符
    num1 = float(input("请输入第一个数字:"))
    num2 = float(input("请输入第二个数字:"))
    operator = input("请输入操作符(+、-、*、/):")

    # 根据操作符执行相应的计算操作,并输出结果
    if operator == '+':
        result = num1 + num2
        print("计算结果:", result)
    elif operator == '-':
        result = num1 - num2
        print("计算结果:", result)
    elif operator == '*':
        result = num1 * num2
        print("计算结果:", result)
    elif operator == '/':
        if num2 != 0:
            result = num1 / num2
            print("计算结果:", result)
        else:
            print("错误:除数不能为0,请重新输入。")
    else:
        print("错误:无效的操作符,请重新输入。")

    # 询问用户是否继续计算
    choice = input("是否继续计算?(y/n)")
    if choice.lower() != 'y':
        break

2.计算初始本金为1万,年利率为0.0325的情况下,需要多少年才能将本金和利息翻倍,即本金和利息的总和达到原来的两倍。

principal = 10000  # 初始本金
interest_rate = 0.0325  # 年利率
target_amount = principal * 2  # 目标金额

years = 0  # 初始年数
while principal < target_amount:
    principal += principal * interest_rate  # 计算每年的利息
    years += 1

print("本金和利息翻倍需要{}年".format(years))

3.首先,程序使用random.randint()函数产生一个1~10之间的随机数。
然后,程序通过for循环提示玩家输入一个猜测的数字,玩家可以输入一个1~10之间的整数。
如果玩家猜对了数字,程序输出恭喜玩家的信息并结束游戏;
如果玩家猜错了,程序会根据玩家输入的数字与随机数之间的大小关系来提示玩家是否猜对
并在每次猜错后告诉玩家还剩下几次机会。
如果玩家在三次机会内猜对了数字,程序输出恭喜玩家的信息并结束游戏;
否则程序输出很遗憾的信息并结束游戏。

import random

random_number = random.randint(1, 10)  # 生成1~10之间的随机数

for _ in range(3):  # 最多猜3次
    guess = int(input("请输入一个1~10之间的整数:"))

    if guess == random_number:
        print("恭喜你,猜对了!")
        break
    elif guess < random_number:
        print("猜错了,你猜的数字太小了。")
        remaining_chances = 2 - _
        if remaining_chances > 0:
            print("还剩下{}次机会。".format(remaining_chances))
        else:
            print("很遗憾,你没有猜对。正确答案是{}。".format(random_number))
    else:
        print("猜错了,你猜的数字太大了。")
        remaining_chances = 2 - _
        if remaining_chances > 0:
            print("还剩下{}次机会。".format(remaining_chances))
        else:
            print("很遗憾,你没有猜对。正确答案是{}。".format(random_number))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/232440.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

二十一章总结

网络程序设计基础 局域网与互联网 为了实现两台计算机的通信&#xff0c;必须用一个网络线路连接两台计算机。如下图所示 网络协议 1.IP协议 IP是Internet Protocol的简称&#xff0c;是一种网络协议。Internet 网络采用的协议是TCP/IP协议&#xff0c;其全称是Transmission…

Mybatis XML增删操作(结合上文)

先来"增"操作 在UserInfoXMLMapper.xml里面写 <?xml version"1.0" encoding"UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <…

【小红书运营指南1】赛道选择 + 账号运营全周期

小红书运营指南1 写在最前面11.23标签一级标签二级标签 网络资源整理1. 赛道选择近2年小红书女性人群画像 2. 基础认知阶段3. 账号启动阶段4. 选题规划阶段5. 爆款打造阶段6. 涨粉变现阶段涨粉变现阶段粉丝发展阶段 写在最前面 最近做的一个项目调研&#xff0c;调研和实际有一…

Docker网络架构介绍

本文主要介绍了Docker容器的单机网络架构与集群网络架构&#xff0c;辅以演示&#xff0c;并简单介绍了网络管理中的命令。 前文&#xff1a; Docker的安装与简单操作命令-CSDN博客 docker网络原理介绍 与ovs类似&#xff0c;docker容器采用veth-pair linux bridge (虚拟交…

LabelImg的使用及注意事项

LabelImg是一款开源的图像标注工具&#xff0c;它主要用于标注目标检测、语义分割和图像分类等深度学习中需要的数据集。通过使用LabelImg&#xff0c;用户可以快速、准确地为图片中的目标添加标注信息&#xff0c;从而建立数据集。 使用步骤&#xff1a; 下载LabelImg&#x…

[Linux] Apache的配置与运用

一、web虚拟主机的构台服务器上运行多个网站&#xff0c;每个网站实际上并不独立占用整个服务器&#xff0c;因此称为"虚拟"虚拟主机的虚拟主机服务可以让您充分利用服务器的硬件资源&#xff0c;大大降低了建立和运营网站的成本 Httpd服务使构建虚拟主机服务器变得容…

MyBatis——Java 持久层框架

文章目录 MyBatis 是什么准备工作创建一个数据库和表引入依赖 配置连接字符串和 MyBatisMyBatis 组成MyBatis 使用步骤定义一个类创建 MyBatis 接口&#xff08;以查询所有为例&#xff09;创建与接口对应的 xml 文件&#xff08;实现接口中的所有方法&#xff09;使用单元测试…

[面试题~k8s] 云原生必问基础篇

文章目录 概念篇1. k8s 是什么2. Container3. Pod4. Node5. Namespace6. Service7. Label8. Replica Set&#xff08;副本集)9. Deployment10. Volume11. Namespace12. PV 和 PVC 基础篇1. 删除 pod 流程2. k8s 有哪些组件master nodeworker node 3. k8s 和 docker 的关系4. 简…

Java网络编程——通过JDBC API访问数据库

关系数据库仍然是目前最流行的数据库系统。如果没有特别说明&#xff0c;本帖所说的数据库就都指关系数据库。关系数据库中最主要的数据结构是表&#xff0c;表用主键来标识每一条记录&#xff0c;表与表之间可以存在外键参照关系。数据库服务器提供管理数据库的各种功能&#…

shell条件测试

1.1.用途 为了能够正确处理Shell程序运行过程中遇到的各种情况&#xff0c;Linux Shell提供了一组测试运算符. 通过这些运算符&#xff0c;shell程序能够判断某种或者几个条件是否成立。 条件测试在各种流程控制语句&#xff0c;例如判断语句和循环语句中发挥了…

平台工程文化:软件开发的创新路径和协作之道

在快速发展的软件开发领域&#xff0c;具有前瞻性思维的企业组织正在拥抱平台工程文化的变革力量。这种创新方法强调创建共享平台、工具和实践&#xff0c;使开发人员能够更快、更高效地交付高质量的软件。在本文中&#xff0c;我们将深入探讨平台工程文化的核心原则和深远的好…

Java网络编程——基础入门

1、进程间的通信 进程指运行中的程序&#xff0c;进程的任务就是执行程序中的代码。EchoPlayer类是一个独立的Java程序&#xff0c;它可以在任意一台安装了JDK的主机上运行&#xff1a; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStr…

Finereport基于linux的简单安装(单节点)

简介 本文以单节点简单部署为例&#xff0c;不适用企业级高可用部署策略。 FineReport的运行依赖于Tomcat &#xff0c;Tomcat 是免费且性能相对稳定的 Web 应用服务器,也可以充当JSP容器。它是一个用于运行Java Servlet和JavaServer Pages&#xff08;JSP&#xff09;的Web服务…

Eclipse 4.30 正式发布 来看看有哪些值得期待的新特性

Eclipse 4.30 已正式发布&#xff0c;主要特性如下&#xff1a; 1、支持新的 Java 语言特性&#xff1a;包括 JEP 440: Record Patterns 和 JEP 441: Pattern Matching for Switch 2、针对 Java 编辑器的快速修复功能&#xff1a;包括添加默认 case、移除默认 case 和插入 br…

报道 | 2023年1月-2024年3月国际运筹优化会议汇总

2023年1月-2024年3月召开会议汇总&#xff1a; SIAM Symposium on Algorithm Engineering and Experiments 2024 Location: Alexandria, VA, United States Important dates: Conference: January 7, 2024 - January 8, 2024 Details: https://www.siam.org/conferences/cm…

模电·放大电路的分析方法——等效电路法

放大电路的分析方法——等效电路法 晶体管的直流模型及静态工作点的估算法晶体管共射h参数等效模型 h h h参数等效模型的由来参数的物理意义简化的h参数等效模型 r b e {r\tiny be} rbe的近似表达式 共射放大电路动态参数的分析电压放大倍数 A ˙ u \.{A}\tiny u A˙u输入电阻 …

CrystalDiskInfo中文版(硬盘检测工具) v9.1.1.0 绿色汉化版-供大家学习研究参考

更新内容 重新支持三星SATA SSD寿命报告 增加对ZHITAI SC001的支持 新增SK hynix Gold S31支持 增加了KLEVV NEO N610的支持。 改进的Micron/Crucial SATA SSD支持 已更改 卸载程序将显示一个确认对话框&#xff0c;用于删除设置。 强大功能 1.拥有多国语言&#xff0c;…

curl 18 HTTP/2 stream

cd /Users/haijunyan/Desktop/CustomKit/KeepThreadAlive/KeepThreadAlive //Podfile所在文件夹 git config --global https.postBuffer 10485760000 git config --global http.postBuffer 10485760000 pod install https://blog.csdn.net/weixin_41872403/article/details/86…

全网最新最全【Kali Linux】 渗透测试技术大全

利矛出击&#xff1a;Kali Linux 渗透测试大法 在网络攻防实践中&#xff0c;系统的防御措施可以称为“盾”&#xff0c;而渗透测试则是“矛”。二者同等重要&#xff0c;因为“矛”可以试探出“盾”有多坚固&#xff0c;并且及时发现问题&#xff0c;修补漏洞&#xff0c;提升…

苍穹外卖项目笔记(8)— 缓存商品、购物车功能

前言 代码链接&#xff1a; Echo0701/take-out⁤ (github.com) 1 缓存菜品 1.1 问题说明 【注】很多时候系统性能的瓶颈就在于数据库这端 1.2 实现思路 通过 Redis 来缓存数据&#xff0c;减少数据库查询操作 【注】Redis 基于内存来保存数据的&#xff0c;访问 Redis 数据…