python入门篇04-循环(while与for),变量,函数基础

news2025/4/8 13:21:36

python目录

  • 1. 前言
    • 1.1 上文传送
  • 2. python基础使用
    • 2.1 while循环
      • 2.1.1 while循环的使用
        • => 案例: 猜数字游戏(多经典...)
      • 2.1.2 while双层循环
        • => 案例: 输出9*9乘法表
        • => 运行结果
    • 2.2 for循环
      • 2.2.1 **for循环使用**
        • => 案例: (字符串)查出有多少字符
      • 2.2.2 方法range()的使用
        • ps: 注意临时变量的作用域
        • => 案例 计算0-100的偶数数量
      • 2.2.3 for的嵌套循环
        • => 案例: 9*9的乘法表(for版)
      • 2.2.4 continue与break使用
    • 2.3 函数def
      • 2.3.1 函数的定义
      • 2.3.2 函数的优势
      • 2.3.3 具体使用方式
      • 2.3.4 返回值return 与 无返回值
      • 2.3.5 函数嵌套
    • 2.4 函数内的变量使用
      • 2.4.1 函数内`局部变量`不可直接使用
      • 2.4.2 全局变量 `global` 关键字
  • 3. 基础语法总结案例
    • 3.1 案例: 公司发奖金(for循环与条件)
      • -> 3.1.1 案例简介
      • -> 3.1.2 代码实现
      • -> 3.1.3 运行结果
    • 3.2 案例: ATM存钱,取钱,查询余额(python版)
  • 4. 文章总结与预告
    • 4.1 文章总结
    • 4.2 文章预告


1. 前言

1.1 上文传送

===> 传送门: python基础环境配置

2. python基础使用

2.1 while循环

2.1.1 while循环的使用

counts = 0
while counts < 100:
    print(f"我是循环的第{counts + 1}次")
    counts += 1
print("循环结束!")

=> 案例: 猜数字游戏(多经典…)

java基础是猜字符游戏 这里就猜数字

guess_counts = 0
guess_num = random.randint(1, 100)
print(f"提前透露一下结果:{guess_num}")
while True:
    guess_input = int(input("请输入猜的数字\n"))
    guess_counts += 1
    if guess_num > guess_input:
        print(f"猜小了,现在是猜的第 {guess_counts}次, 重猜!")

    if guess_num < guess_input:
        print(f"猜大了,现在是猜的第 {guess_counts}次, 重猜!")

    if guess_num == guess_input:
        break

print(f"猜对了,结果就是{guess_num}, 总共: {guess_counts}次")

2.1.2 while双层循环

嵌套循环 循环次数 是 外侧*内侧 数量

=> 案例: 输出9*9乘法表

# 写一个9*9乘法表吧
a = 1
while a <= 9:
    b = 1
    while b <= a:
        print(f"{b}*{a}={a * b} \t", end='')
        b += 1
    a += 1
    print("")

=> 运行结果

在这里插入图片描述

2.2 for循环

2.2.1 for循环使用

in 后面放处理数据(序列类型,字符串,裂变,元组)

str1 = "zhang_san"
for x in str1:
    print(x)

=> 案例: (字符串)查出有多少字符

count = 0
test = "zhang_san is a good boy"
for i in test:
    if i == "o":
        count += 1
print(f"o重复了: {count}次")

2.2.2 方法range()的使用

range(num) 解释: 0到num-1的数字序列[0,1,2,…,num-1]
range(num1,num2) 解释: [num1,num+1,…,num2-1]
range(num1,num2,step) 解释: [num1,num1+step,num1+step+step,…,num2-1] 默认加一变加2

# 输出0-9
for i in range(10):
    print(i)

# 输出5-9
for i in range(5, 10):
    print(i)

# 输出5,8
for i in range(5, 10, 3):
    print(i)

ps: 注意临时变量的作用域

临时变量的作用域( python是警告 java 直接编译报错)
规范写法 (临时变量 不要直接操作)
下面是标准写法

a = 0
for a in range(5):
    print(a)
print(a)

=> 案例 计算0-100的偶数数量

答案是: 51个偶数

even_counts = 0
for i in range(101):
    if i % 2 == 0:
        even_counts += 1
print(f"偶数的数量是: {even_counts}个")

2.2.3 for的嵌套循环

for循环中加入for循环

=> 案例: 9*9的乘法表(for版)

print("循环开始-----------------------> ")
for a in range(1, 10):
    for b in range(1, a + 1):
        print(f"{b} * {a} = {a * b} \t", end="")
    print("")
print("循环结束-----------------------> ")

2.2.4 continue与break使用

continue和 break (很简单 不测试了)
continue 表示当前层循环跳过, 后面变量继续执行 影响一次
break 表示当前层 循环结束 直接返回上一层了 影响一层

2.3 函数def

2.3.1 函数的定义

def 函数名(传入参数):
    函数体
    return 返回值

2.3.2 函数的优势

封装了公共操作行为, 代码更加简洁, 调用更方便
(封装思想)

2.3.3 具体使用方式

nums1 = "123"


# 改造上面方法 返回总数和 (形式参数用,分割)
# def new_sum(nums1,num2):
def new_sum(nums):
    sum_total = 0
    for num1 in nums:
        sum_total += int(num1)
    return sum_total


# 返回是数字 输出数字
print(new_sum(nums1))  # 传入实际参数

2.3.4 返回值return 与 无返回值

[与java有不同 java 是真没返回值 void]
python中的无返回值-> 准确来说是 无return关键字
是有返回值, 返回值是None

  • None的字面量(类型NoneType)
  • None值 与java的 null 意思一样 但是在if判断中
    可以表示False
def test02(num):
    """
    函数的文档注释: 大于2 返回yes字符串 其他返回None(if里是布尔类型)
    :param num: 传入数字
    :return: None/字符串
    """
    if num > 2:
        return "YES"
    else:
        return None


test2 = test02(3)
if test2:
    print(f"大于2: {test2}")

if not test2:  # None 直接可以表示False
    print("大于2: 不成立")

2.3.5 函数嵌套

def fun_b():
    print("---B---")
    fun_c()


def fun_a():
    print("---A---")
    fun_b()


def fun_c():
    print("---C---")


fun_a()  # A->B->C 方法

2.4 函数内的变量使用

2.4.1 函数内局部变量不可直接使用

#  局部变量
# def fun_test01():
#     a1 = 20
#
#
# print(a1)  # 直接报错 局部变量 不可使用

2.4.2 全局变量 global 关键字

全局变量(函数外面定义)

  • global关键字声明的变量就是全局变量
  • 任意位置修改
  • 全局变量都会变化

局部变量(解释,按照地址角度)

  • 局部变量的内存,是在栈内存中的
  • 函数入栈后,存入函数局部变量的地址
  • 就算名字相同 与 全局变量的地址指向的也不是同一个
a1 = 100


# 不会对全局变量产生影响
def fun_test01():
    a1 = 20  # 局部变量 任何操作都不会对全局造成影响 换句话说 不是一个变量
    print(f"{a1}")


def fun_test02():
    global a1
    a1 += 20
    print(f"{a1}")


fun_test01()
print(a1)

fun_test02()
print(a1)

3. 基础语法总结案例

3.1 案例: 公司发奖金(for循环与条件)

-> 3.1.1 案例简介

  • 一共一万元奖金 20人发(编号1-20)
  • 每个人都有绩效 (随机1-10) 低于5 不发
  • 其余正常 发了输出 奖池剩余金额
  • 奖池金额发没了 直接结束
  • 最后整体提示: 奖金发完了,下个月领取

-> 3.1.2 代码实现

import random

salary_sum_money = 10000
salary_per_money = 1000

for person_num in range(1, 21):

    if salary_sum_money <= 0:
        print(f"!!! 员工编号:{person_num}以及之后的编号,奖金发没了,下个月领取!")
        break

    performance_score = random.randint(1, 10)

    if performance_score < 5:
        print(f"员工编号:{person_num},您的绩效分数是: {performance_score}, 很抱歉没有奖金")
        continue

    salary_sum_money -= salary_per_money

    print(f"员工编号: {person_num},您的绩效分数是: {performance_score}分,"
          f"已发放: {salary_per_money}元,剩余奖金: {salary_sum_money}元")

print(f"本次奖金发放结束, 剩余奖金金额: {salary_sum_money}元")

-> 3.1.3 运行结果


多测几次, 看看执行结果
注意: 一个细节 奖金发放完毕的if逻辑
最好写<=, 不要写= (来自java代码的经验)

员工编号: 1 ,您的绩效分数是: 7分 ,已发放: 1000元 ,剩余奖金: 9000元
员工编号: 2 ,您的绩效分数是: 9分 ,已发放: 1000元 ,剩余奖金: 8000元
员工编号:3 ,您的绩效分数是: 2 , 很抱歉没有奖金
员工编号: 4 ,您的绩效分数是: 10分 ,已发放: 1000元 ,剩余奖金: 7000元
员工编号: 5 ,您的绩效分数是: 7分 ,已发放: 1000元 ,剩余奖金: 6000元
员工编号:6 ,您的绩效分数是: 3 , 很抱歉没有奖金
员工编号:7 ,您的绩效分数是: 2 , 很抱歉没有奖金
员工编号:8 ,您的绩效分数是: 4 , 很抱歉没有奖金
员工编号: 9 ,您的绩效分数是: 8分 ,已发放: 1000元 ,剩余奖金: 5000元
员工编号:10 ,您的绩效分数是: 3 , 很抱歉没有奖金
员工编号:11 ,您的绩效分数是: 4 , 很抱歉没有奖金
员工编号:12 ,您的绩效分数是: 3 , 很抱歉没有奖金
员工编号: 13 ,您的绩效分数是: 10分 ,已发放: 1000元 ,剩余奖金: 4000元
员工编号: 14 ,您的绩效分数是: 8分 ,已发放: 1000元 ,剩余奖金: 3000元
员工编号: 15 ,您的绩效分数是: 6分 ,已发放: 1000元 ,剩余奖金: 2000元
员工编号: 16 ,您的绩效分数是: 7分 ,已发放: 1000元 ,剩余奖金: 1000元
员工编号:17 ,您的绩效分数是: 1 , 很抱歉没有奖金
员工编号: 18 ,您的绩效分数是: 10分 ,已发放: 1000元 ,剩余奖金: 0元
!!! 员工编号:19 以及之后的编号,奖金发没了,下个月领取!
本次奖金发放结束, 剩余奖金金额: 0元

3.2 案例: ATM存钱,取钱,查询余额(python版)

===> 传送门: ATM 存钱 取钱 查询余额 (python版)案例

4. 文章总结与预告

4.1 文章总结

  1. 全局变量与局部变量的使用
  2. for循环与while 循环的使用
  3. 函数定义位置 从上到下
  4. 关键字global使用
  5. range()方法使用
  6. 返回值 return 与 None
  7. 案例中的细节使用

4.2 文章预告

数据容器

  • 列表 (java的list[不太一样])
  • 元组 (java的 final 数组[不太一样])
  • 字符串 (java的byte[][类似])
  • 集合 (java的set集合[类似])
  • 字典 (java的map 写法就是json写法[基本类似])

数据容器的api操作

  • 增删改查(对数据容器的) , 不是mysql

作者pingzhuyan 感谢观看
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Leetcode每日一题:1448. 统计二叉树中好节点的数目

原题 给你一棵根为 root 的二叉树&#xff0c;请你返回二叉树中好节点的数目。 「好节点」X 定义为&#xff1a;从根到该节点 X 所经过的节点中&#xff0c;没有任何节点的值大于 X 的值。 示例 1&#xff1a; 输入&#xff1a;root [3,1,4,3,null,1,5] 输出&#xff1a;4 解…

网络映射会遇到哪些困难

网络映射通过将复杂的网络划分为更小、可管理的块&#xff0c;帮助 IT 管理员获得对其网络的更大控制和可见性&#xff0c;它有助于可视化不同的网络组件&#xff08;如服务器、交换机端口和路由器&#xff09;如何互连以执行其功能&#xff0c;通过表示网络设备的通信方式&…

腾讯云服务器价格表大全_轻量服务器_CVM云服务器报价明细

腾讯云服务器租用费用表&#xff1a;轻量应用服务器2核2G4M带宽112元一年&#xff0c;540元三年、2核4G5M带宽218元一年&#xff0c;2核4G5M带宽756元三年、云服务器CVM S5实例2核2G配置280.8元一年、GPU服务器GN10Xp实例145元7天&#xff0c;腾讯云服务器网长期更新腾讯云轻量…

无涯教程-进程 - 子进程监控

正如我们所看到的&#xff0c;每当我们使用fork从程序创建子进程时&#xff0c;都会发生以下情况- 当前进程成为父进程新进程成为子进程 如果父进程比子进程提前完成任务然后退出&#xff0c;会发生什么?现在谁将成为子进程的父进程?子进程的父进程是init进程&#xff0c;它…

业财融合背景下,全面预算管理的发展之路

随着社会经济的高速发展&#xff0c;单一的组织机构职能极大限制了企业发展的创新动能。业务壁垒的不断滋生造成了信息传达严重的不对等&#xff0c;沟通协作成本加大&#xff0c;业务效率降低&#xff0c;专业化的分工形式逐渐成为了制约企业发展的桎梏。 2016年&…

基于Python科研论文绘制学习 - task3

Seaborn seaborn 在matplotlib 的基础上进行了更高级的封装&#xff0c;能用更少的代码绘制配图。 1、图类型 关系型图 数据分布型图 分类数据型图 回归模型分析图 2、多子图网格型图 FacetGrid&#xff08;&#xff09; import pandas as pd import numpy as np…

全球纳米烧结银市场年复合增长率为6.5%!

烧结银简单来讲是指经过低温烧结技术将纳米银粉&#xff08;平均粒径<0.1μm(100nm)&#xff09;印刷在承印物上&#xff0c;使之成为具有传导电流和排除积累静电荷能力的银浆&#xff0c;其由导电填料——银粉、粘合剂、溶剂及改善性能的微量添加剂组成&#xff0c;使用低熔…

云企业网CEN与转发路由器TR

云企业网CEN 云企业网CEN&#xff08;Cloud Enterprise Network&#xff09;是运行在阿里云私有全球网络上的一张高可用网络。云企业网通过转发路由器TR&#xff08;Transit Router&#xff09;帮助您在跨地域专有网络之间&#xff0c;专有网络与本地数据中心间搭建私网通信通…

苹果手机数据恢复的详细教程,果粉必看!

“照片不小心误删”、“清理内存把聊天记录删除了”、“手机重要文件丢失”……大家是否也会遇到以上的糟糕情况呢&#xff1f;“手机数据丢失”这六个字的杀伤力有多大&#xff0c;大家可想而知。 那么&#xff0c;手机删除的数据能够恢复吗&#xff1f;苹果手机数据恢复的方…

Hadoop Yarn 核心调优参数

文章目录 测试集群环境说明Yarn 核心配置参数1. 调度器选择2. ResourceManager 调度器处理线程数量设置3. 是否启用节点功能的自动检测设置4. 是否将逻辑处理器当作物理核心处理器5. 设置物理核心到虚拟核心的转换乘数6. 设置 NodeManager 使用的内存量7. 设置 NodeManager 节点…

光伏发电储能方案(小城光伏电站的智慧节能之路)

​阳光城小城光伏电站位于某省郊区,建成于5年前,总装机100兆瓦。电站采用光伏组串并联方式,将太阳能转换为电力后并网发电。但受限于光照条件,发电量经常无法有效利用,浪费严重。 为实现清洁能源的充分应用,电站管理层决定改造储能系统。经评估,采用联合电站侧、电网侧储能方式…

Java之内部类的详解

3.1 概述 3.1.1 什么是内部类 将一个类A定义在另一个类B里面&#xff0c;里面的那个类A就称为内部类&#xff0c;B则称为外部类。可以把内部类理解成寄生&#xff0c;外部类理解成宿主。 3.1.2 什么时候使用内部类 一个事物内部还有一个独立的事物&#xff0c;内部的事物脱…

Pytorch-day08-模型进阶训练技巧

PyTorch 模型进阶训练技巧 自定义损失函数 如 cross_entropy L2正则化动态调整学习率 如每十次 *0.1 典型案例&#xff1a;loss上下震荡 1、自定义损失函数 1、PyTorch已经提供了很多常用的损失函数&#xff0c;但是有些非通用的损失函数并未提供&#xff0c;比如&#xf…

4.7 为什么 TCP 每次建立连接时,初始化序列号都要不一样呢?

主要原因是为了防止历史报文被下一个相同四元组的连接接收。 如果正常通过四次挥手完成&#xff0c;TIME_WAIT状态会持续2MSL&#xff0c;历史报文会在下一个连接之前就自然消失&#xff0c;但无法保证每次连接都能通过四次挥手正常关闭。 假设客户端和服务端建立一个连接后&a…

Unity项目如何上传Gitee仓库

前言 最近Unity项目比较多&#xff0c;我都是把Unity项目上传到Gitee中去&#xff0c;GitHub的话我用的少&#xff0c;可能我还是更喜欢Gitee吧&#xff0c;毕竟Gitee仓库用起来更加方便&#xff0c;注意Unity项目上传时最佳的方式是把 Asste ProjectSetting 两个文件夹上传上…

基于redisson实现延时队列解耦业务

前言 今天跟大家分享的是一个基于redisson实现的延时队列&#xff0c;有个初版的封装工具&#xff0c;使用者只用关心延时时间到了取到的数据处理&#xff08;或者之前处理&#xff0c;到时间只做剩下的业务&#xff09;&#xff0c;废话不多说&#xff0c;直接上货。 一、业务…

目前电视盒子哪个最好?2023公认最佳电视盒子排名TOP5

电视盒子作为我们看片必备&#xff0c;功能更加丰富&#xff0c;看视频、玩游戏、K歌、上网课等都能实现&#xff0c;新手们在下单前会参考排行榜&#xff0c;近期业内发布了公认最好的电视盒子排名前五&#xff0c;不懂目前电视盒子哪个最好可以从入围的品牌中选择&#xff1a…

IET独立出版 | EI检索 | 2023年第三届机械、航空航天与汽车工程国际会议

会议简介 Brief Introduction 2023年第三届机械、航空航天与汽车工程国际会议&#xff08;CMAAE 2023&#xff09; 会议时间&#xff1a;2023年12月8 -10日 召开地点&#xff1a;中国南京 大会官网&#xff1a;www.cmaae.org 航天是当今世界最具挑战性和广泛带动性的高技术领域…

RTSP流媒体服务器EasyNVR视频平台设备通道时间与服务器录像时间不一致的问题解决步骤

EasyNVR平台优秀的视频能力在于通过RTSP/ONVIF协议&#xff0c;将前端接入设备的音视频资源进行采集&#xff0c;并转码成适合全平台、全终端分发的视频流格式&#xff0c;包括RTMP、RTSP、FLV、HLS、WebRTC等格式。平台已经在智慧水利、智慧工厂、智慧校园、智慧仓储等场景中应…

【解决】idea启动spring MVC报错:一个或多个listeners启动失败Listener ClassNotFoundException

idea配置教程。tomcat调试报错Artifact :war exploded: Error during artifact deployment。 修改代码后&#xff0c;启动不生效&#xff0c;仍是旧代码。 根本原因是&#xff1a; Modules output path和Artifacts output directory不匹配 Modules output path一定要等于Ar…