Python学习(二)—— 基础语法(上)

目录

一,表达式和常量和变量

1.1 表达式

1.2 变量

1.3 动态类型特性

1.4 输入

二,运算符

2.1 算术运算符

2.2 关系运算符

2.3 逻辑运算符

2.4 赋值运算符

2.5 练习

三,语句

3.1 条件语句

3.2 while循环

3.3 for循环

四,实践

4.1 设置初始属性

4.2 设置性别

 4.3 设置出生点

4.4 生成人生经历 

 4.5 完整代码


注:本系列是建立在已经完成C/C++ 的语法基础学习上的,所以只快速展示 Python 基本语法,基本看一遍就懂

一,表达式和常量和变量

1.1 表达式

我们可以把 Python 当场一个计算器来进行一些算术运算:

print(1 + 2 - 3)
print(1 + 2 * 3)
print(1 + 2 / 3)

 

  • 形如 1 + 2 - 3 这样的算式,在编程语言中称为表达式;算式的运算结果称为表达式的返回值
  • 其中 1,2,3 这种称为 字面值常量,+ - * / 这种称为 运算符 或者 操作符
  • 第三个打印结果最后是665,为什么不是667呢?第三个结果我们称为浮点数,规则为 IEEE754 标准,在这套规则下,在内存中表示浮点数的时候, 可能会存在微小的误差

 示例:给定四个分数, 67.5, 89.0, 12.9, 32.2 , 编写代码, 求这四个分数的平均数

print( (67.5 + 89.0 + 12.9 + 32.2) / 4 )

 

1.2 变量

Python 的变量在定义时,前面不带类型,直接就是:

a = 10

类似与C++定义变量时前面自带了auto,然后又把auto隐藏掉了;Python 的变量也遵守变量定义的基本规则

可以直接用print打印变量的值,也可以打印变量的类型:

a = 10
b = 0.5
c = 'hello'
print(a)
print(b)
print(c)
print(type(a))
print(type(b))
print(type(c))

 

除了上述类型之外,Python 中还有 bool,list,tuple,dict,自定义类型等等,我们后续再介绍

1.3 动态类型特性

在 Python 中,一个变量是什么类型,是可以在 "程序运行" 过程中发生变化的,这个特性称为 "动态类型" ,如下代码:

a = 10
print(f'a = {a}, type(a) = {type(a)}')
# 直接在代码中对a进行跨类型赋值
a = 'hello'
print(f'a = {a}, type(a) = {type(a)}')

  • C++/Java 这样的语言则不允许这样的操作,一个变量定义后类型就是固定的了,这种特性则称为 "静态类型"
  • 所以“动态特性”是Python 特有的

1.4 输入

C有scanf读取用户从键盘输入的值,C++有cin等,那么Python也有读取键盘输入数据的方法如下图:

a = input('请输入第一个数:')
b = input('请输入第二个数:')
print(f'a = {a}, type(a) = {type(a)}')
print(f'a = {b}, type(a) = {type(b)}')#注意,在Python中,读取到的键盘输入的值是字符串类型,要对数字进行计算需要转化下类型
a = int(a)
b = int(b)
print(f'a + b = {a + b}')

 

二,运算符

2.1 算术运算符

①首先是最基础的加减乘除取模:

print(10 + 20) #加法
print(10 - 20) #减法
print(10 * 20) #乘法
print(10 / 20) #除法
print(10 % 20) #取模

② 求乘方

在 C/C++中,求乘方操作一般由库函数来完成,但是Python针对求乘方设计了专门的运算符:

print(4 ** 2) #求4的2次方
print(4 ** 0.5) #也可以算小数次方

 

③取整除法 

整数除以整数,但是舍弃掉小数部分并向下取整,注意,是舍弃小数,不是四舍五入:

print(7 // 2) #结果为3.5,舍弃小数,结果为3
print(-7 // 2) #结果为-3.5,舍弃小数并向下取整,结果为-4

 

2.2 关系运算符

这个就是和 C/C++一样了,如下代码:

a = 10
b = 20
print(a < b)
print(a <= b)
print(a > b)
print(a >= b)
print(a == b)
print(a != b)

 

在 Python 中还可以对两个字符串进行大小比较,比较规则是“字典序” 

2.3 逻辑运算符

这个也基本和 C/C++ 一样,就是“逻辑或”,“逻辑与”,“逻辑取反”,如下代码:

a = True
b = False
print(a and b) #逻辑与,有一个假,结果为假
print(a or b) #逻辑或,有一个真,结果为真
print(not a) #逻辑取反
print(not b) 

 

和其他编程语言类似,Python 也存在短路求值的规则:

  • 对于 and,如果左侧表达式为 False,则整体一定为 False,右侧表达式不再执行
  • 对于 or,如果左侧表达式为 True,则整体一定为 True,右侧表达式不再执行

2.4 赋值运算符

这个也是 C/C++ 一样的,如下代码:

a = b = 10 #链式赋值
a, b = 10, 20 #多元赋值a = 10
b = 20
a, b = b, a #也是多元赋值a += 10 #等价于 a = a + 1,其它复合赋值运算符也是同理
a -= 10 
a *= 10 
a /= 10     
a %= 10

注意:

  • 像 C++ / Java 中,存在 ++ -- 这样的 自增/自减 运算符;但Python 中则不支持这种运算,如果需要使用,直接使用 += 1 或者 -= 1
  • 除了上述之外,Python 中还有一些运算符,比如 身份运算符 (is,is not),成员运算符 (in,not in),位运算符 ( & | ~ ^ >) 等。 

2.5 练习

(1) [多选] 以下关于变量之间加法运算的说法, 正确的是:

A. Python 中的字符串之间够能相加.

B. Python 中的字符串可以和整数相加.

C. Python 中的整数可以和浮点数相加.

D. Python 中的整数可以和布尔值相加.

 

解答:答案是A C D。如果把布尔类型和整数进行运算,就会把 True 当作1,把 False 当作0

(2) [单选] 以下关于类型的说法, 正确的是:

A. Python 中既有字符串类型, 也有字符类型.

B. Python 中既有 float, 也有 double.

C. Python 中既有 int, 也有 long

D. Python 中的整数表示范围无上限.

 

解答:答案是 D。Python 只有字符串类型没有字符类型;只有 float 没有 double;只有 int 没有 long

(3) [单选] 以下 Python 代码, 合法的是

A. int a = 10

B. a = 10;

C. a = true

D. a = 'aaa' + 10 

 

解答:答案为 B。Python创建变量时不需要指定类型,如果要指定类型,要这样“a:int = 10”; 在 Python 中,分号是可有可无的; true 需要首字母大写;Python 中字符串和整数不能运算

三,语句

3.1 条件语句

  • if 后面的条件表达式, 没有 ( ), 使用 : 作为结尾.
  • if / else 命中条件后要执行的 "语句块", 使用 缩进 (通常是 4 个空格或者 1 个 tab)来表示, 而不是 { }
  • 对于多条件分支, 不是写作 else if, 而是 elif (合体了).
a = int(input("输入一个数:"))
if a > 0:print('输入的数是正数')
elif a < 0:print('输入的数是负数')
else:pass #pass表示空语句

  

3.2 while循环

计算 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)

 

其余规则和 C/C++ 一直,while里面也可以嵌套 while 

3.3 for循环

对于for循环,Python 的使用方法和 C/C++ 很不相同,基本语法格式为:

for 循环变量 in 可迭代对象:循环体

所谓的 "可迭代对象",指的是 "内部包含多个元素,能一个一个把元素取出来的特殊变量",下面我们通过多个示例来熟悉 Python 的 for 循环的使用:

打印 1-10

#使用 range 函数,生成一个可迭代对象,范围是[1, 11),也就是[1, 10]
for i in range(1, 11):print(i)

 

这个有点类似 C++11 中的范围for

打印 2,4,6,8,10 

#range 的第三个参数可以指定迭代时候的 "步长". 也就是一次让循环变量加几.
for i in range(2, 12, 2):print(i)

 

从10开始打印到1 

# 步长也可以设置为负数
for i in range(10, 0, -1):print(i)

 

计算1-100 所有数字的和 

sum = 0
for i in range(1, 101):sum += i
print(sum)

 

循环语句的 continue 和break用法和C/C++是一模一样的,这里不再赘述 

四,实践

下面我们来搞一个“人生重开模拟器”

4.1 设置初始属性

在游戏中我们设定四个属性:颜值 (face) 体质 (strong) 智力 (iq) 家境 (home)

我们约定每个属性的范围为 [1, 10], 并且总和不能超过 20;如果玩家输入的初始属性不合理, 就提示输入有误, 重新输入:

print("+---------------------------------------------------------------------+")
print("|                                                                     |")
print("|                   花有重开日, 人无再少年                               |")
print("|                                                                     |")
print("|                   欢迎来到, 人生重开模拟器                             |")
print("|                                                                     |")
print("+---------------------------------------------------------------------+")
# 设置初始属性
while True:print("请设定初始属性(可用总点数 20)")face = int(input("设定 颜值(1-10):"))strong = int(input("设定 体质(1-10):"))iq = int(input("设定 智力(1-10):"))home = int(input("设定 家境(1-10):"))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!")continueprint("初始属性设定完成!")break

4.2 设置性别

  • 通过 random.randint(1, 6) 生成一个 [1, 6] 的随机整数, 类似于掷色子.
  • 如果是单数, 则性别设为男孩
  • 如果是双数, 则性别设为女孩.
  • 男孩和女孩会遇到不同的事件.
#设置性别
point = random.randint(1, 6) # 掷色子
if point % 2 == 1:gender = 'boy'print("你是个男孩")
else:gender = 'girl'print("你是个女孩")

 4.3 设置出生点

首先按照家境(home), 分成四个档位.:

  • 10 是第一档. 加成最高
  • [7, 9] 是第二档. 也有一些加成
  • [4, 6] 是第三档. 加成较少
  • [1, 3] 是第四档. 会扣掉属性.

再扔一次色子, 生成 [1, 3] 的随机数, 用来表示每一种细分情况

#设置出生点
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

4.4 生成人生经历 

按照年龄, 把人生经历分成四个阶段:

  • 幼年阶段 [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('-------------------------------------------')print(info)print(f'strong={strong}, face={face}, iq={iq}, home={home}')time.sleep(1)

 4.5 完整代码

import random
import sys
import time
print("+---------------------------------------------------------------------+")
print("|                                                                     |")
print("|                   花有重开日, 人无再少年                               |")
print("|                                                                     |")
print("|                   欢迎来到, 人生重开模拟器                             |")
print("|                                                                     |")
print("+---------------------------------------------------------------------+")
# 设置初始属性
while True:print("请设定初始属性(可用总点数 20)")face = int(input("设定 颜值(1-10):"))strong = int(input("设定 体质(1-10):"))iq = int(input("设定 智力(1-10):"))home = int(input("设定 家境(1-10):"))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!")continueprint("初始属性设定完成!")break
#设置性别
point = random.randint(1, 6) # 掷色子
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#生成人生经历,这里以幼年为例
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('-------------------------------------------')print(info)print(f'strong={strong}, face={face}, iq={iq}, home={home}')time.sleep(1)

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Idea汉化插件Datagrip汉化插件

汉化插件 ‍ ‍ Chinese (Simplified) Language Pack / 中文语言包 ‍ 插件地址 ‍ 安装完了之后,如果还不是中文的怎么办 ‍ 需要手动设置 Seetings -> Appearance & Behavior -> System Settings -> Language and Region -> Language 修改为 [ Chi…

ansible 自动化运维工具(三)playbook剧本

目录 Playbook的定义 Playbook组成 Playbook命令 Playbook剧本编写格式 基本组件 Handlers处理器 tags标签 Facts组件 Register&#xff1a;注册变量 Debug模块 Playbook循环 With_items循环 With_dict循环&#xff08;字典循环&#xff09; With_nested循环&…

12.2【JAVA EXP4]next.js的各种问题,DEBUG,前端补强,前后端交互,springSecurity ,java 配置,h2数据库

在服务器组件中使用了 useState 这样的 React Hook。useState 只能在客户端组件中使用&#xff0c;而不能在服务器组件中使用。Next.js 的新架构&#xff08;App Router&#xff09;中&#xff0c;默认情况下&#xff0c;页面和布局组件是服务器组件&#xff0c;因此不能直接使…

Cursor重置机器码-解决Too many free trials.

参考文章&#xff1a;如何绕过Cursor的机器绑定限制 前言 在前面这篇文章无限使用Cursor指南中&#xff0c;我提到使用 无限邮箱 或者 删除账号并重新注册 的方法&#xff0c;来无限使用Cursor免费版。但是当在本机登录过3个账号后&#xff0c;就会报这个“Too many free tria…

【PlantUML系列】部署图(七)

一、部署图的组成部分 节点&#xff08;Node&#xff09;&#xff1a;使用node关键字定义一个节点&#xff0c;节点可以是服务器、数据库或其他硬件设备。组件&#xff08;Component&#xff09;&#xff1a;使用component关键字定义一个组件&#xff0c;组件可以是软件模块或服…

qt QCommandLineParser详解

1、概述 QCommandLineParser是Qt框架中提供的一个类&#xff0c;专门用于解析命令行参数。它简化了命令行参数的处理过程&#xff0c;使得开发者能够轻松定义、解析和验证命令行选项和参数。QCommandLineParser适用于需要从命令行获取输入的控制台应用程序&#xff0c;以及需要…

青少年夏令营管理系统的设计与开发(社团管理)(springboot+vue)+文档

&#x1f497;博主介绍&#x1f497;&#xff1a;✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示&#xff1a;文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…

vue3-tp8-Element:对话框实现

效果 参考框架 Dialog 对话框 | Element Plus 具体实现 一、建立view页面 /src/views/TestView.vue 二、将路径写入路由 /src/router/index.js import { createRouter, createWebHistory } from vue-router import HomeView from ../views/HomeView.vueconst router create…

【鸿睿创智开发板试用】移植OpenCV 4到OpenHarmony 4.1

目录 目录 引言 编译系统镜像 (1) 下载代码后解压SDK (2) 下载docker镜像   (3) 编译OH 编译OpenCV 下载OpenCV源代码 构建编译配置文件 执行编译命令 安装库和头文件 测试 结语 引言 最近有个需求是在基于RK3568的OpenHarmony 4.1系统中使用OpenCV&#xff0c…

TimesFM(Time Series Foundation Model)时间序列预测的数据研究(3)

前一篇完成了 TimesFM 的运行 TimesFM&#xff08;Time Series Foundation Model&#xff09;安装&#xff08;2&#xff09;-CSDN博客文章浏览阅读520次&#xff0c;点赞13次&#xff0c;收藏24次。决定在 小红帽ubuntu UBUNTU安装 timesFM在 ide.cloud.tencent.com 的环境上…

【潜意识Java】深入理解 Java 面向对象编程(OOP)

目录 什么是面向对象编程&#xff08;OOP&#xff09;&#xff1f; 1. 封装&#xff08;Encapsulation&#xff09; Java 中的封装 2. 继承&#xff08;Inheritance&#xff09; Java 中的继承 3. 多态&#xff08;Polymorphism&#xff09; Java 中的多态 4. 抽象&…

三、汇总统计

1.SUM、COUNT、AVERAGE 注意&#xff1a;count函数是计算区域中包含数字的单元格的个数&#xff0c;以上案例中两个空白单元格和一个中文列标题都是没有计算在内的。 平均函数AVERAGE也是按照17进行求平均值的。所以在使用平均值的函数时候&#xff0c;可以根据实际情况看是…

EXCEL的各种图形,统计图形

目录 0 EXCEL的各种图形&#xff0c;统计图形 1 统计图形 / 直方图 / 其实叫 频度图 hist最合适(用原始数据直接作图) 1.1 什么是频度图 1.2 如何创建频度图&#xff0c;一般是只选中1列数据&#xff08;1个数组&#xff09; 1.3 如何修改频度图的宽度 1.4 hist图的一个特…

基于Llamaindex的网页内容爬取实战

目的 本文不关注如何解析网页 html 元素和各种 python 爬虫技术&#xff0c;仅作为一种网页数据的预处理手段进行研究。Llamaindex 也并不是爬虫技术的集大成者&#xff0c;使用它是为了后续的存查一体化。 安装依赖 pip install llama-index-readers-web # pip install llam…

debian12学习笔记

前置条件 基于debian12官网的qcow2格式文件进行操作 安装ssh 登录虚拟机后安装ssh服务端 apt install openssh-server配置国内源 新增/etc/apt/sources.list.d/tsinghua.list 使用清华大学的源 https://www.cnblogs.com/shanhubei/p/18104430 deb https://mirrors.tuna.t…

鲲鹏麒麟安装Kafka-v1.1.1

因项目需要在鲲鹏麒麟服务器上安装Kafka v1.1.1&#xff0c;因此这里将安装配置过程记录下来。 环境说明 # 查看系统相关详细信息 [roottest kafka_2.12-1.1.1]# uname -a Linux test.novalocal 4.19.148 #1 SMP Mon Oct 5 22:04:46 EDT 2020 aarch64 aarch64 aarch64 GNU/Li…

UE5编辑器下将RenderTarget输出为UTexture并保存

在使用UE5开发项目时&#xff0c;RenderTarget是一种非常强大的工具&#xff0c;常用于生成实时纹理效果、后处理和调试。而将RenderTarget的内容转换为UTexture并储存&#xff0c;是许多编辑器内的需求都需要的功能。 1.材质球输出至Texture 首先创建一个Actor类&#xff0c…

电容Q值、损耗角、应用

电容发热的主要原因&#xff1a;纹波电压 当电容两端施加纹波电压时&#xff0c;电容承受的是变化的电压&#xff0c;由于电容内部存在寄生电阻&#xff08;ESR&#xff09;和寄生电感&#xff08;ESL&#xff09;.因此电容会有能量损耗&#xff0c;从而产生热量&#xff0c;这…

go-zero(十三)使用MapReduce并发

go zero 使用MapReduce并发 一、MapReduce 介绍 MapReduce 是一种用于并行计算的编程模型&#xff0c;特别适合在大规模数据处理场景中简化逻辑代码。 官方文档&#xff1a; https://go-zero.dev/docs/components/mr 1. MapReduce 的核心概念 在 MapReduce 中&#xff0c;主…

入门pytorch-Transformer

前言 虽然Transformer是2017年由Google推出&#xff0c;如果按照读论文只读近两年的思路看&#xff0c;那它无疑是过时的&#xff0c;但可惜的是&#xff0c;目前很多论文的核心依然是Transformer&#xff0c;或者由其进行改进的&#xff0c;故本文使用pytorch来搭建一下Trans…