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

python循环

while和for的区别

while 和 for 的区别,while是不定循环,循环次数不固定。for的循环次数通常是固定的

continue    跳出本次循环,直接执行下一次循环
break       退出循环,执行循环外的代码
exit()      退出python程序,可以指定返回值

while循环

i = 1
while i <= 3:print(i, "开始打印1~3")i += 1结果:
1 开始打印1~3
2 开始打印1~3
3 开始打印1~3

猜随机数字

import random
num = random.randint(1, 100)
while True:choise = int(input("please input number: "))if choise == num:print("猜对了!", num)breakelif choise > num:print("bigger")else:print("smaller")

登录功能:(输入 q 可以退出所有循环)

username = 'wzy'
password = '123'
input_count = 0
while True:inp_name=input('请输入您的账号:')inp_pwd=input('请输入您的密码:')input_count += 1if input_count >= 3:print('账号密码错误次数过多!')breakif inp_name == username and inp_pwd == password:print('登录成功')while True:cmd=input("输入命令>: ")if cmd == 'q':breakprint('命令{x}正在运行'.format(x=cmd))break   # 立刻终止本层循环else:print('账号名或密码错误')

也可以使用 for i in range(3) 实现

⚠️不要在 continue 后加同级代码,后面的代码永远不会执行

username = 'wzy'
password = '123'
input_count = 0
tag = True
while tag:inp_name=input('请输入您的账号:')inp_pwd=input('请输入您的密码:')input_count += 1if input_count >= 3:print('账号密码错误次数过多!')breakif inp_name == username and inp_pwd == password:print('登录成功')while tag:cmd=input("输入命令>: ")if cmd == 'q':tag = Falsebreakelse:print('命令{x}正在运行'.format(x=cmd))else:print('账号名或密码错误')
i = 0
while i < 10:i += 1if i == 5:continue # 跳过当 i 等于 5 时的剩余部分
print(i)结果为:10

while + else

  • while + else 的主要使用场景是处理 循环是否正常结束 的逻辑

  • else块只有在while循环 没有被 break 语句中断 并正常结束时才会执行

items = [1, 3, 5, 7, 9]
target = 4index = 0
while index < len(items):if items[index] == target:print(f"Found {target} at index {index}")breakindex += 1
else:print(f"{target} not found in the list")

while嵌套

  • 如果多个while循环嵌套,内层的break并不能打破循环

for循环

for i in range(1,3):print("wzy打印出: ", i)结果:
wzy打印出:  1
wzy打印出:  2

range还可以指定步长为奇书偶数:例如 range(1, 7, 2) range(2, 8, 2)

1.判读是否为质数:

num = int(input('Please input a number: '))
for i in range(2, num):if num % i == 0:print(num, '不是质数')break
else:print(num, '是质数')

continue语句

continue作用:跳过 continue 后面的语句

for + continue 案例:

for i in range(6):if i == 4:continueprint(i)
0
1
2
3
5

循环嵌套

  • 外层循环只执行一次,而内层循环会跟随着外层循环的执行
  • 终止 for 循环只有 break
for a in range(3):print('外层循环-----》', a)for b in range(5):print('内层循环', b)

在这里插入图片描述

1.使用循环嵌套打印三角形

*
**
***
****# 特点如下:
列数和行数直接相关,当前是多少行,就打印多少列for i in range(4):  # 外层循环控制行数,一共4行for j in range(i + 1):  # 内层循环控制每行打印*的个数,个数与行数对应print('*', end='')print()   # 换行输出

打印乘法表

  • 外层循环:外层循环控制的是乘法表的行数,表示乘数的第一个数字(例如从 1 到 9)
  • 内层循环:内层循环控制的是乘法表的列数,表示乘数的第二个数字(同样是从 1 到 9)
for i in range(1, 10):  # 外层循环,控制行数for j in range(1, i + 1):  # 内层循环,控制每行列数print(f"{i}*{j}={i*j}", end=' ')  # 打印乘法表达式print()  # 每行输出后换行

输出结果如下:在这里插入图片描述

for line in range(1, 10):for i in range(1, line+1):print('{}*{}={}'.format(line, i, line*i), end=' ')print()1*1=1 
1*2=2 2*2=4 
1*3=3 2*3=6 3*3=9 
1*4=4 2*4=8 3*4=12 4*4=16 
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81

对应的shell脚本为:

for line in {1..9}
do# 内层循环控制每行的乘法计算(1 到 line)for i in $(seq 1 $line)do# 打印当前乘法结果,不换行echo -n "$i*$line=$((i*line)) "done# 每行结束后换行echo
done

打印金字塔

打印一个有5行的金字塔

# 定义行数
n = 5
for i in range(1, n+1):# 控制每一行的空格数量,空格数量 = 当前行 - 1print(' ' * (n - i), end=' ')   # 打印完空格后不换行,为了把空格和*写在同一行# 打印*,*数量为当前行号乘2减1print('*' * (2 * i -1))
     *************************

3种商品的选择

洗发水15元/瓶,香皂2元/个,牙刷5元/个,100购买这些商品,要尽可能把钱花完。列出所有组合 输出示例:洗发水: 0 瓶, 香皂: 2 个, 牙刷: 9 个, 价格 XX 元。

15x+2y+5z=100;x y z代表购买个数

  • 首先要确定变量范围,即每种商品最多可以购买多少个

    • 洗发水:最多买 100÷15=6 瓶,即x的范围是 0~6

    • 香皂:最多买 100÷2=50,即y的范围是0~50

    • 牙刷:最多买100÷10,即z的范围是0-10

# 单价使用abc表示,数量使用xyz表示
a = 15
b = 10
c = 2
total = 100
for x in range(100 // a+1):for y in range(100 // b+1):for z in range(100 // c+1):if x * a + y * b + z * c == 100:print(f'洗发水:{x}瓶,牙刷:{y}个,香皂:{z}个')'''
洗发水:0瓶,香皂:0个,牙刷:50个
洗发水:0瓶,香皂:1个,牙刷:45个
洗发水:0瓶,香皂:2个,牙刷:40个
洗发水:0瓶,香皂:3个,牙刷:35个
洗发水:0瓶,香皂:4个,牙刷:30个
洗发水:0瓶,香皂:5个,牙刷:25个
洗发水:0瓶,香皂:6个,牙刷:20个
洗发水:0瓶,香皂:7个,牙刷:15个
洗发水:0瓶,香皂:8个,牙刷:10个
洗发水:0瓶,香皂:9个,牙刷:5个
洗发水:0瓶,香皂:10个,牙刷:0个
洗发水:2瓶,香皂:0个,牙刷:35个
洗发水:2瓶,香皂:1个,牙刷:30个
洗发水:2瓶,香皂:2个,牙刷:25个
洗发水:2瓶,香皂:3个,牙刷:20个
洗发水:2瓶,香皂:4个,牙刷:15个
洗发水:2瓶,香皂:5个,牙刷:10个
洗发水:2瓶,香皂:6个,牙刷:5个
洗发水:2瓶,香皂:7个,牙刷:0个
洗发水:4瓶,香皂:0个,牙刷:20个
洗发水:4瓶,香皂:1个,牙刷:15个
洗发水:4瓶,香皂:2个,牙刷:10个
洗发水:4瓶,香皂:3个,牙刷:5个
洗发水:4瓶,香皂:4个,牙刷:0个
洗发水:6瓶,香皂:0个,牙刷:5个
洗发水:6瓶,香皂:1个,牙刷:0个
'''
8个,牙刷:10个
洗发水:0瓶,香皂:9个,牙刷:5个
洗发水:0瓶,香皂:10个,牙刷:0个
洗发水:2瓶,香皂:0个,牙刷:35个
洗发水:2瓶,香皂:1个,牙刷:30个
洗发水:2瓶,香皂:2个,牙刷:25个
洗发水:2瓶,香皂:3个,牙刷:20个
洗发水:2瓶,香皂:4个,牙刷:15个
洗发水:2瓶,香皂:5个,牙刷:10个
洗发水:2瓶,香皂:6个,牙刷:5个
洗发水:2瓶,香皂:7个,牙刷:0个
洗发水:4瓶,香皂:0个,牙刷:20个
洗发水:4瓶,香皂:1个,牙刷:15个
洗发水:4瓶,香皂:2个,牙刷:10个
洗发水:4瓶,香皂:3个,牙刷:5个
洗发水:4瓶,香皂:4个,牙刷:0个
洗发水:6瓶,香皂:0个,牙刷:5个
洗发水:6瓶,香皂:1个,牙刷:0'''

http://www.mrgr.cn/news/89981.html

相关文章:

  • ip转换相关知识详解
  • 局域网使用Ollama(Linux)
  • 什么是容器化,它有什么好处,对后端开发有什么影响?
  • (done) openMP学习 (Day13: 线程私有数据和如何支持库(Pi again),蒙特卡洛计算 Pi,线性同余法)
  • Python----Python高级(并发编程:协程Coroutines,事件循环,Task对象,协程间通信,协程同步,将协程分布到线程池/进程池中)
  • 【DeepSeek论文精读】2. DeepSeek LLM:以长期主义扩展开源语言模型
  • redis专栏解读
  • 外部中断实验 #STM32F407
  • 半导体制造工艺讲解
  • CNN卷积神经网络多变量多步预测,光伏功率预测(Matlab完整源码和数据)
  • Redis基础--常用数据结构的命令及底层编码
  • C++ Attribute 属性说明符
  • 人工智能图像分割之Mask2former源码解读
  • C语言练习题
  • burpsuite抓取html登陆和上传数据包
  • open3d将numpy数组可视化
  • 本地部署DeepSeek + Ragflow
  • python - 封装moondream(备份)
  • redis项目
  • git学习
  • 【LeetCode 刷题】动态规划(1)-基础
  • 组合(力扣77)
  • Ollama下载安装教程
  • Unity Dots学习
  • 【0404】Postgres内核 实现分配一个新的 Object ID (OID)
  • gitlab多项目流水线