循环语句——“Python”
各位CSDN的uu们你们好呀,今天小雅兰的内容是Python中的循环语句呀,分为while循环和for循环,下面,让我们进入循环语句的世界吧
循环语句
while循环
for循环
continue和break
循环语句小结
人生重开模拟器
设置初始属性
设置性别
设置出生点
针对每一岁, 生成人生经历
循环语句
有些操作是需要反复执行的. 这种就需要使用循环.
while 循环
while 条件:循环体
条件为真, 则执行循环体代码.
条件为假, 则结束循环.
代码示例: 打印 1-10 的整数
num=1 while num<=10:print(num)num=num+1
代码示例 : 计算 1-100 的和
sum = 0 num = 1 while num <= 100:sum += numnum += 1 print(sum)
代码示例 : 计算 5 的阶乘
result = 1 n = 1 while n <= 5:result *= nn += 1 print(result)
代码示例: 求 1! + 2! + 3! + 4! + 5!
num = 1 sum = 0 while num <= 5:factorResult = 1i = 1while i <= num:factorResult *= ii += 1sum += factorResultnum += 1 print(sum)
这个程序用到了两重循环,也就是在循环语句中也可以套循环.
for 循环
基本语法格式
for 循环变量 in 可迭代对象:循环体注意:
- python 的 for 和其他语言不同, 没有 "初始化语句", "循环条件判定语句", "循环变量更新语句", 而是更加简单
- 所谓的 "可迭代对象", 指的是 "内部包含多个元素, 能一个一个把元素取出来的特殊变量"
代码示例: 打印 1-10
for i in range(1, 11):print(i)使用 range 函数, 能够生成一个可迭代对象. 生成的范围是 [1, 11), 也就是 [1, 10]
代码示例: 打印 2, 4, 6, 8, 10
for i in range(2, 12, 2):print(i)
通过 range 的第三个参数, 可以指定迭代时候的 "步长". 也就是一次让循环变量加几.
代码示例: 打印 10-1
for i in range(10, 0, -1):print(i)
range 的步长也可以设定成负数.
代码示例: 求 1 - 100 的和
theSum = 0 for i in range(1, 101):theSum += i print(theSum)
![]()
continue和break
- continue 表示结束这次循环, 进入下次循环.
- break 表示结束整个循环
代码示例: 模拟吃包子. 吃第 3 个包子的时候吃出了一只虫.
for i in range(1, 6):if i == 3:continueprint(f"吃完第 {i} 个包子")
代码示例: 模拟吃包子. 吃第 3 个包子的时候吃出了半只虫.
for i in range(1, 6):if i == 3:breakprint(f"吃完第 {i} 个包子")
代码示例: 输入若干个数字, 求平均值. 使用 "分号" 作为结尾.
sum = 0 #加和的结果 count = 0 #表示有几个数字 while True:num = input("请输入数字:")if num == ';':#约定当用户输入 ; 的时候,表示输入结束breaknum = float(num)sum += numcount += 1 print(sum / count)
循环语句小结

人生重开模拟器
这是一款之前很火的文字类小游戏. 玩家输入角色的初始属性之后, 就可以开启不同的人生经历.
下面,我们来实现一个简化版本的“人生重开模拟器”
设置初始属性
在游戏中我们设定四个属性.
- 颜值 (face)
- 体质 (strong)
- 智力 (iq)
- 家境 (home)
我们约定每个属性的范围为 [1, 10], 并且总和不能超过 20.
如果玩家输入的初始属性不合理, 就提示输入有误, 重新输入.
欢迎界面
print("+---------------------------------------------------------------------+") print("| |") print("| 花有重开日, 人无再少年 |") print("| |") print("| 欢迎来到, 人生重开模拟器 |") print("| |") print("+---------------------------------------------------------------------+")
设置初始属性
# 设置初始属性 #颜值,体质,智力,家境总和不能超过20,每一项取值都是1——10之间 #使用循环,在玩家输入错误的时候,可以重新输入 while True:print("请设定初始属性(可用总点数 20)")face = int(input("请输入颜值(1-10):"))strong = int(input("请输入体质(1-10):"))iq = int(input("请输入智力(1-10):"))home = int(input("请输入家境(1-10):"))#通过条件语句,对于用户输入的属性值做出校验检查#这段逻辑,使用elif是否可以呢?完全可以,效果是相同的#使用elif则是多个分支只能进一个,一旦某个条件满足了,就不会再走其他的分支了#此处虽然没有使用elif,但是有了continue,一旦某个条件满足,continue就会使循环重头再来#也就没机会继续执行后续的条件判断了if face < 1 or face > 10:print("颜值设置有误!")continueif strong < 1 or strong > 10:print("体质设置有误!")continueif iq < 1 or iq > 10:print("智力设置有误!")continueif home < 1 or home > 10:print("家境设置有误!")continueif face + strong + iq + home > 20:print("总点数超过了 20!")continue#如果当前上述的条件都没有被触发,则认为玩家输入的数据是合法的#此时就可以跳出循环结束输入了print("初始属性设定完成!")print(f"颜值:{face},体质:{strong},智力:{iq},家境:{home}")break
![]()
设置性别
设置性别
通过 random.randint(1, 6) 生成一个 [1, 6] 的随机整数, 类似于掷色子.
- 如果是单数, 则性别设为男孩
- 如果是双数, 则性别设为女孩.
男孩和女孩会遇到不同的事件.
#生成角色的性别 #使用random.randint(beg,end),就能生成[beg,end]之间的随机整数 point = random.randint(1, 6) # 掷色子 print(f"point={point}") if point % 2 == 1:gender = 'boy'print("你是个男孩") else:gender = 'girl'print("你是个女孩")
![]()
设置出生点
设置出生点
首先按照家境(home), 分成四个档位.
- 10 是第一档. 加成最高
- [7, 9] 是第二档. 也有一些加成
- [4, 6] 是第三档. 加成较少
- [1, 3] 是第四档. 会扣掉属性.
再扔一次色子, 生成 [1, 3] 的随机数, 用来表示每一种细分情况.
这里的代码主要就是各种 if else 构成.
point = random.randint(1, 3) # 掷色子 if home == 10:print('你出生在帝都, 你的父母是高官政要')home += 1iq += 1face += 1 elif 7 <= home <= 9:if point == 1:print('你出生在大城市, 你的父母是公务员')face += 2elif point == 2:print('你出生在大城市, 你的父母是大企业高管')home += 2else:print('你出生在大城市, 你的父母是大学教授')iq += 2 elif 4 <= home <= 6:if point == 1:print('你出生在三线城市, 你的父母是教师')iq += 1elif point == 2:print('你出生在镇上, 你的父母是医生')strong += 1else:print("你出生在镇上, 你的父母是个体户")home += 1 else:if 1 <= point <= 2:print('你出生在村里, 你的父母是辛苦劳作的农民')strong += 1face -= 2elif 3 <= point <= 4:print('你出生在穷乡僻壤, 你的父母是无业游民')home -= 1else:print('你出生在镇上, 你父母感情不和')strong -= 1 print(f"颜值:{face},体质:{strong},智力:{iq},家境:{home}")


针对每一岁, 生成人生经历
按照年龄, 把人生经历分成四个阶段:
- 幼年阶段 [1, 10]
- 青年阶段 [11, 20]
- 壮年阶段 [20, 50]
- 老年阶段 50 岁以上.
每个阶段都会有不同的精力和事件发生.
- 幼年阶段可塑性强, 体质, 颜值, 智力都会有较快变化
- 青年阶段主要是求学, 同时父母一辈会有明显变化, 智力和家境会有明显变化.
- 壮年阶段相对平稳, 属性变化不大, 主要是一些随机事件影响到属性.
- 老年阶段体质, 颜值, 智力都会显著退化, 并且随着年龄的上升, 疾病/死亡的风险逐渐升高.
此处我们以幼年为例, 简单实现一下这里的处理逻辑.
- 使用 for 循环, 按照年龄循环起来.
- 针对每一年, 先掷一次 [1, 3] 的色子, 根据不同的随机数值, 来触发不同的事件.
- 根据性别, 年龄, 各种属性, 来触发不同的事件. 这里都使用 if - else 的方式来组织.
- 不同的事件可能会对属性有正面/负面的影响.
- 在每一年的最后, 打印这一年遇到的事情.
- 如果夭折, 则直接 sys.exit(0) 退出程序.
- 使用 time.sleep(1) 使程序暂停执行 1s, 方便观察程序结果.
for age in range(1, 11):#把一整年的打印都整理到一个字符串中,在这一年的结尾统一打印info = f'你今年 {age} 岁,'point = random.randint(1, 3)#接下来编写各种事件的代码#性别触发事件if gender == 'girl' and home <= 3 and point == 1:info += '你家里人重男轻女思想非常严重, 你被遗弃了!'print(info)print("游戏结束!")sys.exit(0)# 体质触发的事件elif strong < 6 and point != 3:info += '你生了一场病, 'if home >= 5:info += '在父母的精心照料下恢复了健康'strong += 1home -= 1else:info += '你的父母没精力管你, 你的身体状况更糟糕了'strong -= 1#颜值触发的事件elif face < 4 and age >= 7:info += '你因为长的太丑, 别的小朋友不喜欢你, 'if iq > 5:info += '你决定用学习填充自己'iq += 1else:if gender == 'boy':info += '你和别的小朋友经常打架'iq -= 1strong += 1else:info += '你经常被别的小朋友欺负'strong -= 1#智商触发的事件elif iq < 5:info += '你看起来傻傻的, 'if home >= 8 and age >= 6:info += '你的父母给你送到更好的学校学习'elif 4 <= home <= 7:if gender == 'boy':info += '你的父母鼓励你多运动, 加强身体素质'strong += 1else:info += '你的父母鼓励你多打扮自己'face += 1else:info += '你的父母为此经常吵架'if point == 1:strong -= 1elif point == 2:iq -= 1#健康成长else:info += '你健康成长, 'if point == 1:info += '看起来更聪明了'iq += 1elif point == 2:info += '看起来更好看了'face += 1else:info += '看起来更结实了'strong += 1print(info)print(f'strong={strong}, face={face}, iq={iq}, home={home}')print("-----------------------------------------------------")time.sleep(1)
![]()
这个简单的版本的源码
import random
import sys
import time
print("+---------------------------------------------------------------------+")
print("| |")
print("| 花有重开日, 人无再少年 |")
print("| |")
print("| 欢迎来到, 人生重开模拟器 |")
print("| |")
print("+---------------------------------------------------------------------+")# 设置初始属性
#颜值,体质,智力,家境总和不能超过20,每一项取值都是1——10之间
#使用循环,在玩家输入错误的时候,可以重新输入
while True:print("请设定初始属性(可用总点数 20)")face = int(input("请输入颜值(1-10):"))strong = int(input("请输入体质(1-10):"))iq = int(input("请输入智力(1-10):"))home = int(input("请输入家境(1-10):"))#通过条件语句,对于用户输入的属性值做出校验检查#这段逻辑,使用elif是否可以呢?完全可以,效果是相同的#使用elif则是多个分支只能进一个,一旦某个条件满足了,就不会再走其他的分支了#此处虽然没有使用elif,但是有了continue,一旦某个条件满足,continue就会使循环重头再来#也就没机会继续执行后续的条件判断了if face < 1 or face > 10:print("颜值设置有误!")continueif strong < 1 or strong > 10:print("体质设置有误!")continueif iq < 1 or iq > 10:print("智力设置有误!")continueif home < 1 or home > 10:print("家境设置有误!")continueif face + strong + iq + home > 20:print("总点数超过了 20!")continue#如果当前上述的条件都没有被触发,则认为玩家输入的数据是合法的#此时就可以跳出循环结束输入了print("初始属性设定完成!")print(f"颜值:{face},体质:{strong},智力:{iq},家境:{home}")break#生成角色的性别
#使用random.randint(beg,end),就能生成[beg,end]之间的随机整数
point = random.randint(1, 6) # 掷色子
print(f"point={point}")
if point % 2 == 1:gender = 'boy'print("你是个男孩")
else:gender = 'girl'print("你是个女孩")point = random.randint(1, 3) # 掷色子
if home == 10:print('你出生在帝都, 你的父母是高官政要')home += 1iq += 1face += 1
elif 7 <= home <= 9:if point == 1:print('你出生在大城市, 你的父母是公务员')face += 2elif point == 2:print('你出生在大城市, 你的父母是大企业高管')home += 2else:print('你出生在大城市, 你的父母是大学教授')iq += 2
elif 4 <= home <= 6:if point == 1:print('你出生在三线城市, 你的父母是教师')iq += 1elif point == 2:print('你出生在镇上, 你的父母是医生')strong += 1else:print("你出生在镇上, 你的父母是个体户")home += 1
else:if 1 <= point <= 2:print('你出生在村里, 你的父母是辛苦劳作的农民')strong += 1face -= 2elif 3 <= point <= 4:print('你出生在穷乡僻壤, 你的父母是无业游民')home -= 1else:print('你出生在镇上, 你父母感情不和')strong -= 1
print(f"颜值:{face},体质:{strong},智力:{iq},家境:{home}")for age in range(1, 11):#把一整年的打印都整理到一个字符串中,在这一年的结尾统一打印info = f'你今年 {age} 岁,'point = random.randint(1, 3)#接下来编写各种事件的代码#性别触发事件if gender == 'girl' and home <= 3 and point == 1:info += '你家里人重男轻女思想非常严重, 你被遗弃了!'print(info)print("游戏结束!")sys.exit(0)# 体质触发的事件elif strong < 6 and point != 3:info += '你生了一场病, 'if home >= 5:info += '在父母的精心照料下恢复了健康'strong += 1home -= 1else:info += '你的父母没精力管你, 你的身体状况更糟糕了'strong -= 1#颜值触发的事件elif face < 4 and age >= 7:info += '你因为长的太丑, 别的小朋友不喜欢你, 'if iq > 5:info += '你决定用学习填充自己'iq += 1else:if gender == 'boy':info += '你和别的小朋友经常打架'iq -= 1strong += 1else:info += '你经常被别的小朋友欺负'strong -= 1#智商触发的事件elif iq < 5:info += '你看起来傻傻的, 'if home >= 8 and age >= 6:info += '你的父母给你送到更好的学校学习'elif 4 <= home <= 7:if gender == 'boy':info += '你的父母鼓励你多运动, 加强身体素质'strong += 1else:info += '你的父母鼓励你多打扮自己'face += 1else:info += '你的父母为此经常吵架'if point == 1:strong -= 1elif point == 2:iq -= 1#健康成长else:info += '你健康成长, 'if point == 1:info += '看起来更聪明了'iq += 1elif point == 2:info += '看起来更好看了'face += 1else:info += '看起来更结实了'strong += 1print(info)print(f'strong={strong}, face={face}, iq={iq}, home={home}')print("-----------------------------------------------------")time.sleep(1)
好啦,小雅兰今天的内容就到这里啦,继续加油噢!!!

相关文章:
循环语句——“Python”
各位CSDN的uu们你们好呀,今天小雅兰的内容是Python中的循环语句呀,分为while循环和for循环,下面,让我们进入循环语句的世界吧 循环语句 while循环 for循环 continue和break 循环语句小结 人生重开模拟器 设置初始属性 设置性别…...
Python synonyms查找中文任意词汇的同义词近义词
Python synonyms查找中文任意词汇的同义词近义词 作者:虚坏叔叔 博客:https://xuhss.com 早餐店不会开到晚上,想吃的人早就来了!😄 一、安装 对于非专业的开发人员来说可以简单的使用Python一行代码来找到同义词。这…...
三分钟了解http和https
对应测试人员都会听过http请求和响应.在这里给大家介绍http相关的知识 一.http和https基本概念 HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本…...
docker应用:搭建私有云盘
简介:NextCloud是一个开源的云存储解决方案,可以在自己的服务器上搭建个人云存储系统。它提供了与市面上主流云存储服务(如Dropbox、Google Drive)相似的功能,包括文件存储、共享、同步、协作等。NextCloud的主要优势在…...
【C++进阶】面向对象
程序 编写程序是为了让计算机解决现实生活中的实际问题。pascal之父、结构化程序设计先驱Niklaus Wirth提出程序 算法 数据结构。程序是完成一定功能的一些列有序指令的集合。指令 操作码 指令。将指令按一定的顺序进行整合,就形成了程序。 机器语言与汇编语言…...
从ChatGPT与New Bing看程序员为什么要学习算法?
文章目录为什么要学习数据结构和算法?ChatGPT与NEW Bing 的回答想要通关大厂面试,就不能让数据结构和算法拖了后腿业务开发工程师,你真的愿意做一辈子CRUD boy吗?对编程还有追求?不想被行业淘汰?那就不要只…...
SpringBoot-实用开发篇
SpringBoot开发实用篇开发实用篇中因为牵扯到SpringBoot整合各种各样的技术,所以在整合每一个技术之前,都会做一个快速的普及,这样的话内容整个开发实用篇所包含的内容就会比较多。在学习的时候,如果对某一个技术不是很清楚&#…...
Python进阶-----高阶函数->filter() 函数
目录 前言: filter() 函数介绍 filter() 函数使用示例 1.与循环对比 2.与lambda函数综合使用 3.使用None过滤False 4.过滤字典相关数据 前言: 家人们,当你们获取了一个序列的时候,想要把一些内容去掉,保留一部分…...
C/C++面试可能会问三:指针和数组一样吗?
答案:不一样。 哪里不同? 数组名:数组名的值是一个指针常量,也就是数组第一个元素的地址。 它的类型取决于数组元素的类型:如果他们是int类型,那么数组名的类型就是“指向int的常量指针”;如果…...
数字经济新生态,中小企业如何发展营销数字化
五年弹指一挥间,中国数字经济正从尝试探索迈向快速发展,这一趋势,从今年两会的国务院机构改革、总理政府工作报告、部长通道答疑解惑、科技领域大佬提案中都能看出来。 在政府工作报告中,我们可以看到数字经济在不断壮大ÿ…...
【网络】https协议
🥁作者: 华丞臧. 📕专栏:【网络】 各位读者老爷如果觉得博主写的不错,请诸位多多支持(点赞收藏关注)。如果有错误的地方,欢迎在评论区指出。 推荐一款刷题网站 👉 LeetCode刷题网站 文章…...
【11】SCI易中期刊推荐——计算机方向(中科院4区)
🚀🚀🚀NEW!!!SCI易中期刊推荐栏目来啦 ~ 📚🍀 SCI即《科学引文索引》(Science Citation Index, SCI),是1961年由美国科学信息研究所(Institute for Scientific Information, ISI)创办的文献检索工具,创始人是美国著名情报专家尤金加菲尔德(Eugene Garfield…...
STM32 OTA应用开发——通过串口/RS485实现OTA升级(方式2)
STM32 OTA应用开发——通过串口/RS485实现OTA升级(方式2) 目录STM32 OTA应用开发——通过串口/RS485实现OTA升级(方式2)前言1 环境搭建2 功能描述3 程序编写3.1 BootLoader部分3.2 APP的制作4 修改工程中的内存配置4.1 Bootloader…...
【Spring6】| Bean的生命周期(重要)
目录 一:Bean的生命周期 1. 什么是Bean的生命周期 2. Bean的生命周期之5步 3. Bean生命周期之7步 4. Bean生命周期之10步 5. Bean的scop(作用域)不同,管理方式不同 6. 自己new的对象如何让Spring管理 一:Bean的…...
【C#】单据打印方案(定义打印模板、条形码、二维码、图片、标签)
系列文章 C#项目–业务单据号生成器(定义规则、自动编号、流水号) 本文链接:https://blog.csdn.net/youcheng_ge/article/details/129129787 C#项目–开始日期结束日期范围计算(上周、本周、明年、前年等) 本文链接&…...
前后端身份验证
1、web 开发模式 【】基于服务端渲染的传统 Web 开发模式 【】基于前后端分离的新型 Web 开发模式:依赖于 Ajax 技术的广泛应用。后端只负责提供 API 接口,前端使用 Ajax 调用接口的开发模式 2、身份认证 【】服务端渲染推荐使用 Session 认证机制 【】…...
【蓝桥杯嵌入式】ADC模数转换的原理图解析与代码实现(以第十一届省赛为例)——STM32G4
🎊【蓝桥杯嵌入式】专题正在持续更新中,原理图解析✨,各模块分析✨以及历年真题讲解✨都在这儿哦,欢迎大家前往订阅本专题,获取更多详细信息哦🎏🎏🎏 🪔本系列专栏 - 蓝…...
Matlab表示 CDF 时间值
从 CDF 纪元对象中提取日期信息。CDF 表示时间的方式与 MATLAB 不同。CDF 将日期和时间表示为自 1-Jan-0000 以来的毫秒数。这在 CDF 术语中称为纪元。为了表示 CDF 日期,MATLAB 使用一个称为 CDF 纪元对象的对象。MATLAB 还可以将日期和时间表示为日期时间值或日期序列号,即…...
基于Halcon的条码定位与识别【包含 一维码 和 二维码 】
1.针对一维码问题,先列代码: dev_update_off () dev_close_window () dev_open_window (0, 0, 600, 819, black, WindowHandle) dev_set_draw (margin) *读图 read_image (Image, 20221213-174036.png)*获取一维码区域对原图进行抠图 gen_rectangle1 (ROI_0, 2169.33, 1835.…...
每天学一点之多线程
多线程 一、相关概念 并发与并行 并行(parallel):指多个事件任务在同一时刻发生(同时发生)。 并发(concurrency):指两个或多个事件在同一个微小的时间段内发生。程序并发执行可以…...
C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...
C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存
文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...
springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...
七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
基于IDIG-GAN的小样本电机轴承故障诊断
目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) 梯度归一化(Gradient Normalization) (2) 判别器梯度间隙正则化(Discriminator Gradient Gap Regularization) (3) 自注意力机制(Self-Attention) 3. 完整损失函数 二…...
省略号和可变参数模板
本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...



















