Python基础入门(一)

news2024/11/23 21:36:01

文章目录

  • 前言
  • Python起源简介
  • 常量和表达式
  • 什么是变量
  • 变量的语法
    • 变量的定义
      • 变量的命名规则
    • 使用变量
  • 变量的类型
  • 动态类型的变量
  • 注释
    • 注释是什么
    • 注释的基本语法
    • 注释的书写规范
  • 输入输出
    • 通过控制台输出
    • 格式化输出
    • 输入
  • 转义字符
  • 运算符
    • 算数运算符
    • 关系运算符
    • 逻辑运算符
    • 赋值运算符
    • 复合赋值运算符

前言

Python 是一种少有的、既简单又功能强大的编程语言,上手难度相对于其他语言较低,但Python 在通用应用程序、自动化插件、网站、网络爬虫、数值分析、科学计算、云计算、大数据和网络编程等领域有着极为广泛的应用,越来越收到人们的欢迎。它有许多的优点诸如:语言简洁,丰富的库(基础代码库),可扩展性强,可嵌入(Python 可以嵌入到 C/C++程序中),开源等。因此学习它很有必要,之后的一段时间,我将通过一些博文来记录我的Python学习之旅,介绍一些python的基础知识。

Python起源简介

Python由荷兰数学和计算机科学研究学会的吉多·范罗苏姆于1990年代初设计,作为一门叫做ABC语言的替代品。 Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言,随着版本的不断更新和语言新功能的添加,逐渐被用于独立的、大型项目的开发。

常量和表达式

像下面这样把一些量通过运算符进行计算的式子成为表达式,计算的结果称之为表达式的返回值。其中 1 , 2 , 3 这种称为字面值常量;a,b称之为变量;+ - * / 这种称为 运算符 或者 操作符

print(1 + 2)
a = 2
b = 3
print(a + b)

什么是变量

变量就是一个用于存储数据的容器,就是一小块内存空间,里面可以装各种数据类型,我们定义一个变量就是开辟一块内存空间用于存储我们的数据。

我们通过定义变量来存储数据,之后就可以通过变量名来使用我们的变量了,如前面的一些计算结果后面要使用,我们就可以通过定义一个变量来解决,之后通过变量名来使用这个中间变量。例如下面求方差的代码,分别通过定义变量avg,total,result来存储计算过程中的平均数,各个数与平均数差的平方,方差

# 如以下代码求四个数字的方差
avg = (67.5 + 89.0 + 12.9 + 32.2) / 4
total = (67.5 - avg) ** 2 + (89.0 - avg) ** 2 + (12.9 - avg) ** 2 + (32.2 - avg) ** 2
result = total / 3

变量的语法

变量的定义

定义变量的语法很简单,左边写变量的名称,右边写变量的值,中间通过一个=进行连接,表示将相应的数据放进左边的空间中。左边可以写多个变量名,通过逗号隔开,右边写上你要定义的变量的值,值之间也是通过逗号隔开。
注意:

  • 通过使用不同的变量名来区分变量,变量名不要重复
  • = 为赋值运算符, 不是要写成比较运算符==
  • 变量的命名要遵守一定的命名规则
  • 和 C++ / Java 等语言不同, Python 变量的类型不需要显式指定, 而是在赋值的时候确定的,但是也可以指定。

定义变量举例:

a = 5#第一次定义了变量,下面又对变量的值进行了修改
a, b = 3, 4
print(a, b)

变量的命名规则

硬性规则(务必遵守)

  • 变量名必须由数字字母下划线构成,不能包括其他特殊符号
  • 数字不能开头
  • 变量名不能和 “关键字” 重复
  • 变量名大小写敏感. num 和 Num 是两个不同的变量名 软性规则(建议遵守)
  • 变量名使用有描述性的单词来表示, 尽量表达出变量的作用,见名知意
  • 一个变量名可以由多个单词构成, 长一点没关系, 但是含义要清晰.
  • 当变量名包含多个单词的时候, 可以使用驼峰命名法,只有一个单词的时候,单词首字母小写,当有多个单词的时候,第一个单词首字母小写,其余单词首字母大写。
    也可以使用蛇形命名法来进行命名,不同的单词之间使用下划线进行连接,具体的命名规范根据公司的要求即可 命名规则举例:
a = 10
a1 = 20
_a = 3
name = '名字'
# 驼峰命名法,下面的变量名会有绿色的波浪线,这是因为我们写的变量名,编译器检测到不是一个常见的命名
personalInfo = 'zhansan'
# 蛇形命名法
personal_info = 'lisi'
# 错误的命名规则
$ = 3
1a = 20
# 和关键字重复
if = 20
#无意义的命名规则
x = 1
y = 2

【tips】

当我们在写python代码的时候经常可能遇到各种来自编译器的提示,如红色的波浪线是语法错误,灰色波浪线不影响代码的执行,是PEP8代码的规范性问题。如果出现就是你的代码写的不规范造成的,绿色波浪线。不影响你的代码的执行。下面就是一个PEP8的提示,表示我们的代码写的不规范,变量名,=,变量值之间应该有空格隔开。其他的不规范行为提示和这一样,遇到的时候具体情况具体解决。规范的代码书写有利于我们阅读,和后期的程序的维护。直接根据提示解决就行。

在这里插入图片描述

使用变量

使用变量很简单,直接操作相应的变量名即可,可以直接打印,也可以通过变量名给其他的变量进行赋值

a = 10#第一次,使用=创建了一个变量
b = a#将a的值赋值给了变量b
print(b)

a = 20#第二次是对变量的值进行了修改,不是重新创建了一个变量
print(a)

变量的类型

不同的变量类型就是对不同类型的数据进行了区分。整形变量里面存的就是整数,浮点数类型里面存的是小数,字符串类型里面存的是字符串等等。

整数

a = 10
print(type(a))#type 和 print 类似, 也是 python 内置的函数. 可以使用 type 来查看一个变量的类型.

注意: 和 C++ / Java 等语言不同, Python 的 int 类型变量, 表示的数据范围是没有上限的,它能够根据存储的数据进行动态的扩容, 只要内存足够大, 理论上就可以表示无限大小的数据,因此也不需要其他的数据类型了,如short,long,只要一个int就可以搞定所有的情况。默认占用的内存空间是4个字节。

浮点数(小数)

a = 0.5
print(type(a))

注意: 和 C++ / Java 等语言不同, Python 的小数只有 float 一种类型, 没有 double 类型. 但是实际上Python 的 float 就相当于 C++ / Java 的 double, 表示双精度浮点数,双精度浮点数表示的数据范围,和精确度都比较高,因此在python里面也只需要float这一种数据类型即可表示所有的小数了,默认占用8个字节的空间、

字符串

a = 'hello'
print(type(a))

注意: 因为在python中不区分字符和字符串,一个字符可以看做是长度为1的字符,所以单引号或者双引号或者三引号包裹起来的数据都叫做字符串。字符串是可变长,大小也是没有限制,字符串越长,字符串占用的内存空间就越大。
定义字符串示例:

c = 'hello'
print(type(c))

d = "hello"
print(type(d))

e = '''haha'''
print(type(e))

f = """hehe"""
print(type(f))

通常情况下,字符串里面是不能有和外面一样的引号的,这时会造成语法错,如果字符串内容里面包含了单引号,那么就使用双引号把内容扩起来。如果内容包含了双引号那么就使用单引号把内容扩起来,如果内容里面既包含单引号也包含双引号就使用三双引号把字符串的内容给括起来。情况举例如下:

e = 'My name is "lmm"'
print(type(e))
f = '''My 'name' is "lmm"'''
print(f)

使用len()内置函数求字符串的长度

print(len(d))

在python中也有字符串拼接的操作,使用+号将字符串进行拼接,但是只能是字符串和字符串进行拼接,不能是字符串和数字之间进行拼接或者字符串和其他的数据类型的拼接,否则会出错,这点和java是非常不同的。

a1 = 'hello'
a2 = 'world'
print(a1 + a2)#打印helloworld

拼接出错的代码

a1 = 'hello'
a2 = 'world'
print(a1 + a2)
a3 = 2
print(a1+a2+a3)

在这里插入图片描述
布尔

布尔类型是一个特殊的类型, 取值只有两种, True (真) 和 False (假).,经常用于条件判断,默认占用的内存空间大小为一个字节。

a = True
print(type(a))
b = False
print(type(b))

除了上述类型之外, Python 中还有 list, tuple, dict, 自定义类型等,这些类型之后再进行介绍。
数据类型总结:

为什么会有这么多的变量类型呢?经过上面知识的学习,可以总结出一下几点:

  • 不同的变量类型对数据进行了不同的分类,相同的数据类型往往具有相同的特性和使用规则
  • 类型决定了数据在内存中占据多大空间
  • 类型其实约定了能对这个变量做什么样的操作

动态类型的变量

在 Python 中, 一个变量是什么类型, 是可以在 “程序运行” 过程中发生变化的. 这个特性称为
“动态类型”,如下面的代码在程序执行过程中, a 的类型刚开始是 int, 后面变成了 str。

a = 10
print(type(a))
a = 'hello'
print(type(a))

注意:C++/Java 这样的语言则不允许这样的操作. 一个变量定义后类型就是固定的了. 这种特性则称为 “静态类型”
静态类型的语言有优点也有缺点:

  • 对于中小型程序, 可以大大的解约代码量(比如写一段代码就可以同时支持多种类型)
  • 对于大型程序, 则提高了模块之间的交互成本. (程序猿 A 提供的代码难以被 B 理解,A写的一个模块给B使用,B对于这个模块里面的数据类型不清楚,两者就要进行沟通了)

注释

注释是什么

注释是一种特殊的代码, 它不会影响到程序的执行, 但是能够起到解释说明的作用,
能够帮助程序猿理解程序代码的执行逻辑。如下面的代码,如果没有注释, 直接阅读, 是不容易 get 到代码的含义是计算方差. 但是通过加了一行注释解释一下, 就让人一目了然了,这样有助于后面代码的维护。

注释的基本语法

行注释:使用#开头的都是一个注释,这个注释一般放在一行代码的上面或者右边,几乎不会写到一行代码的下面和前面,使用ctrl+/选中多行进行行注释

# 这是一个注释
print("haha")# 打印输出

文档注释:使用三引号引起来的称为 “文档字符串”, 也可以视为是一种注释,一般放在一个文件/函数/类的前面用于描述这个文件,函数,类,里面可以包含多行内容

"""
这是文档字符串
这是文档字符串
"""

注释的书写规范

  • 内容准确: 注释内容要和代码一致, 匹配, 并在代码修改时及时更新.
  • 篇幅合理: 注释既不应该太精简, 也不应该长篇大论.
  • 使用中文: 一般中国公司都要求使用中文写注释, 外企另当别论.
  • 积极向上: 注释中不要包含负能量(例如 领导 SB 等).

输入输出

和用户交互:

  • 用户把信息传递给程序的过程, 称为 “输入”
  • 程序把结果展示给用户的过程, 称为 “输出”
  • 输入输出的最基本的方法就是控制台. 用户通过控制台输入一些字符串, 程序再通过控 制台打印出一些字符串,比如我windows的cmd窗口,pycharm的运行展示结果的的程序都是一个控制台

通过控制台输出

通过控制台输出:控制台能够输出各种类型的数据,整数,小数,布尔类型的数据等。

print('hello')
a = 10
print(a)
b = True
print(b)

格式化输出

按照一定的格式,在字符串中使用变量,将变量的值进行输出。
通过字符串格式化输出函数.format():

  • 可以在任意的 Python版本中使用
  • 字符串中需要使用变量的地方,使用{}进行占位
    在format 的括号中按照占位的顺序,将变量写上去
# 我的名字是 xx, 年龄 xx 岁, 性别为 xx.
name = '小明'
age = 18
sex = '男'
print('我的名字是 {}, 年龄 {} 岁, 性别为 {}.'.format(name, age, sex))

试用F-string的方式:

  • python 3.6 版本开始可以使用,即大于等于3.6可以使用
  • 在字符串前边加上f’’或者F’’
  • 字符串中需要使用变量的地方,使用{}进行占位
  • 将变量直接写在占位的大括号中
# 我的名字是 xx, 年龄 xx 岁, 性别为 xx.
name = '小明'
age = 18
sex = '男'
print(f'我的名字是 {name}, 年龄 {age} 岁, 性别为 {sex}.')

输入

Python 中使用intput()函数获取到用户的输入,用户输入的内容都被转化为字符串类型,不管你输入什么样的类型。
使用input()输入格式:

  • 变量= input(‘给使用者的提示信息,即告诉别人输入什么内容’)
  • 代码从上到下执行,当代码执行遇到input 的时候,会暂停代码的执行,等待用户的输入
  • 在输入的过程中,如果遇到回车键,表示本次输入结束
  • 使用input获取的内容,都是字符串类型,即str

代码示例:

# 需求, 从键盘录入你的姓名
name = input('请输入你的姓名:')
print(type(name), name)  # 打印类型和变量的值,这里是个字符串

转义字符

转义字符就是将两个字符转义成一个特殊的字符,\n是一个回车或者换行。\t是一个水平制表符,例如我们在使用print()函数进行打印的时候,print()函数中有一个end="\n"所以使用print进行打印的时候会换行。
转义字符代码示例:

print('hello world', end=' ')
print('hello\nworld')
print('hello python')
print('hello\tpython')

结果展示:
在这里插入图片描述

运算符

算数运算符

像 + - * / % ** //等这种进行算术运算的运算符,称为算术运算符,运算符的执行顺序比较简单,先算乘方,后算乘除,最后算加减,如果有括号先算括号。
+, - * / 运算符,这四个运算符比较简单,表示的含义和我们数学上的加减乘除表示的含义是一样的,只是这个/需要注意,这里的整数除以整数结果为小数,不管可以除尽还是不能除尽结果都是小数,也就是要除尽,和c/java不同,它们整数除以整数结果任然是整数,除不尽时会进行截断,就是保留整数部分,把小数部分丢弃。
代码示例:

print(3 + 2 - 1)
a = 15 / 3
print(type(a))
print(a)
b = 1 / 3
print(type(b))
print(b)
print(a * b)

结果展示:
在这里插入图片描述
%求余运算符,就是对结果进行求余数
代码示例:

print(7 % 3)

** 是求乘方. 不光能算整数次方, 还能算小数次方

print(4 ** 2)
print(4 ** 0.5)

//是取整除法(也叫地板除). 整数除以整数, 结果还是整数,有一个为小数,结果就是小数,除得的结果只保留整数部分(舍弃小数部分, 并向下取整. 不是四舍五入)

a = 7 // 2
print(a)
print(type(a))
b = 7 // 2.0
print(b)
print(type(b))

关系运算符

像 < <= > >= == != 这一系列的运算符称为 关系运算符, 它们是在比较操作数之间的>关系,如果关系符合, 则表达式返回 True. 如果关系不符合, 则表达式返回 False。

  • <= 是 “小于等于”
  • “>=” 是 “大于等于”
  • == 是 “等于”
  • != 是 “不等于”
    整数的比较:
a = 1
b = 2
print(a == b)
print(a != b)
print(a >= b)
print(a <= b)

浮点数的比较,对于浮点数进行比较相等,不能使用==,因为计算机中不能准确的表示浮点数,因此在计算过程中,就容易出现非常小的误差,这种误差是不能规避的,这种误差是由于浮点数的设计带来的,不仅Python如此,很多编程语言都是这样的。

print(0.1 + 0.2 == 0.3)
print(0.1)
print(0.2)
print(0.1 + 0.2)
print(0.3)

上面代码的运行结果为:
在这里插入图片描述
从上面的代码执行结果可以看出,0.1和0.2相加的和并不是等于0.3,而是比0.3大,带有很小的误差,这个误差对程序一般没有多大影响,可以忽略,但==是一丝不差的严格进行比较相等,所以相加的结果和0.3进行比较肯定就是不相等的了。
正确的比较方式: 不再严格比较相等了, 而是判定差值小于允许的误差范围,实际工作中, 误差在所难免, 只要保证误差在合理范围内即可。

a = 0.1 + 0.2
b = 0.3
print(-0.000001 < (a - b) < 0.000001)

逻辑运算符

像 and,or,not 这一系列的运算符称为 逻辑运算符.

  • and 并且. 两侧操作数均为 True, 最终结果为 True. 否则为 False. (一假则假)
  • or 或者. 两侧操作数均为 False, 最终结果为 False. 否则为 True. (一真则真)
  • not 逻辑取反. 操作数本身为 True, 则返回 False. 本身为 False, 则返回 True
    代码示例:
# a < b and b < c 这个操作等价于 a < b < c . 这个设定和大部分编程语言都不相同,写起来非常的方便
a = 10
b = 20
c = 30
print(a < b and b < c)
print(a < b and b > c)
print(a > b or b > c)
print(a < b or b > c)
print(not a < b)
print(not a > b)

短路问题: 和其他编程语言类似, Python 也存在短路求值的规则,规则如下:
对于 and, 如果左侧表达式为 False, 则整体一定为 False, 右侧表达式不再执行
对于 or, 如果左侧表达式为 True, 则整体一定为 True, 右侧表达式不再执行

a = 10
b = 20
c = 30
print(a > b and 10 / 0 == 1)# 这里0作为除数,没有抛出异常,就是没有执行
print(a < b or 10 / 0 == 1)# or左侧的条件为真后右边的条件就在执行了,后面的那个条件就不执行了

执行结果如图:
在这里插入图片描述

赋值运算符

= 的使用

  • = 表示赋值. 这个我们已经用过很多次了. 注意和 == 区分.
  • = 除了基本的用法之外, 还可以同时针对多个变量进行赋值
    代码示例:
# 常规赋值
a = 1
# 多元赋值
b, c = 1, 1
# 链式赋值,先把3的值赋给b,再把b的值赋值给a
a = b = 3

通过赋值运算符交换两个变量的值,代码如下:

# 常规写法
a = 10
b = 20
tmp = a
a = b
b = tmp
# 使用多元赋值, 直接一步到位完成交换,很方便的写法
a, b = b, a
print(a, b)

复合赋值运算符

形如+= -= *= /= %=等的运算符称为复合运算符,这样的运算符不仅Python当中有,主流的编程语言中都有,是对一些操作的简写。如a+=1等价于a=a+1,先和后面的数字进行运算,再进行赋值。
代码示例:

a = 1
a = a * 8  # a=8
print(a)
a *= 6  # a=8*6
print(a)

运算结果:
在这里插入图片描述

**【注意】**形如a+=1,这样的代码我们在c/java中也可以写成a++/++a使a的值自增1,但是Python中却不支持这样的操作,因为这样的操作容易混淆,不是特别的方便,a++是先使用a的值再进行自增的,而++a是先自增a的值,再进行使用的。

除了上述之外, Python 中还有一些运算符, 比如 身份运算符 (is, is not), 成员运算符 (in, not in), 位运算符( & | ~ ^ << >>) 等.这里不做介绍。大家可以下来在看看相关书籍了解下,本篇博客要介绍的知识到此就结束了,下篇博客见。()()( ̄▽ ̄)~*。

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

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

相关文章

Python高频面试题——迭代器和可迭代对象

无论是面试测试还是运维涉及到python编码岗位时&#xff0c;迭代器和可迭代对象都是绕不开的一个问题&#xff0c;本文对这两个概念进行重点讲解&#xff0c;本文从什么是迭代讲起&#xff0c;然后介绍迭代器和可迭代对象二者的区别&#xff0c;最后通过for 循环和自定义迭代器…

150万奖金:首届6G智能无线通信系统大赛正式上线

通信与人工智能技术的深度融合已成为无线通信系统发展的最重要方向之一&#xff0c;面向6G&#xff0c;通信与AI融合的角度和深度将进一步扩展&#xff0c;迎接“无限”可能。在6G研究的关键发展阶段&#xff0c;由IMT-2030(6G)推进组主办&#xff0c;中国信息通信研究院、华为…

【折腾服务器 3】群晖学习版中安装 Active Backup for Business 及相关配置 =)

Catch UP 书接上回&#xff0c;在 ESXi 中安装了群晖系统&#xff0c;这个系统主要是用来给 Windows 物理机做备份的&#xff0c;因此在本片主要讲解如何配置 Active Backup for Business 软件。 Chapter 1 设置存储空间 上一篇博客中&#xff0c;安装群晖时分配了一个 32GB…

rancher2.6.2 单机及高可用部署

rancher2.6.2 单机及高可用部署 文章目录rancher2.6.2 单机及高可用部署前言单机部署高可用部署k8s集成前言 1、服务器准备 单机部署&#xff1a; 机器名IP地址部署内容cpu核心数内存(G)硬盘(G)rancher-master192.168.0.18rancher2450 高可用部署&#xff1a; 机器名IP地址…

Linux环境下通过命令行连接WIFI

一. 前言 在调试ARTIK时由于Ubuntu系统不是图形化界面&#xff0c;需要下载相关安装包时发现未联网&#xff0c;因此对Linux下采用命令行连接wifi的具体操作步骤进行总结&#xff0c;对自己在操作过程中遇到的相关问题解决方法进行介绍&#xff0c;同时对于LINUX下无线网络调试…

JUC(一):线程池

个人博客地址&#xff1a; http://xiaohe-blog.top/index.php/archives/14/ 文章目录1. 为什么要使用线程池2. Executor3. ThreadPoolExecutor3.1 七个参数3.2 任务队列3.3 拒绝策略4. 创建线程池5. Executors5.1 CachedThreadPool5.2 FixedThreadPool5.3 SingleThreadExecutor…

Vue3 异步组件 suspense

vue在解析我们的组件时&#xff0c; 是通过打包成一个 js 文件&#xff0c;当我们的一个组件 引入过多子组件是&#xff0c;页面的首屏加载时间 由最后一个组件决定 优化的一种方式就是采用异步组件 &#xff0c;先给慢的组件一个提示语或者 骨架屏 &#xff0c;内容回来在显示…

大话测试数据(一)

导读&#xff1a;测试数据的准备至关重要&#xff0c;无论是手工测试还是自动化测试都要以良好的测试数据准备为基础。本文为霍格沃兹测试学院特邀嘉宾&#xff0c;某互联网巨头企业资深测试技术专家刘晓光&#xff08;skytraveler&#xff09;老师对测试数据管理实践的思考总结…

【K3s】第3篇 解决K3s状态一直是ContainerCreating

目录 1、遇到问题 2、问题解决 2.1 查看docker服务 2.2 增加docker中国镜像源 必看项 2.3 解决docker pull失败 3、结果展示 1、遇到问题 安装部署完k3s时遇到如下问题&#xff1a; sudo kubectl get pods -A pod 容器状态一直为&#xff1a;ContainerCreating 查看容…

现有项目集成seata的记录

背景&#xff1a;现有项目为springcloudnacos 的。但是没有分布式事务处理机制&#xff0c;偶发数据问题&#xff0c;现需要引入seata进行全局事务管理。简单记录一下改造和学习过程&#xff0c;过一段时间自己100%会忘的一干二净&#xff0c;并没有对其进行很深的研究。 前期…

IMX6ULL学习笔记(16)——GPIO输入接口使用【官方SDK方式】

一、GPIO简介 i.MX6ULL 芯片的 GPIO 被分成 5 组,并且每组 GPIO 的数量不尽相同&#xff0c;例如 GPIO1 拥有 32 个引脚&#xff0c; GPIO2 拥有 22 个引脚&#xff0c; 其他 GPIO 分组的数量以及每个 GPIO 的功能请参考 《i.MX 6UltraLite Applications Processor Reference M…

aosp 12/13/lineageos19.1 framework学习编译刷入小米手机,努比亚

hi&#xff0c;学员朋友&#xff0c;大家好&#xff01; 前期一直有同学在问我这边&#xff0c;学习framework需要什么额外设备么&#xff1f;这里其实我一直前期也是给学员说的&#xff0c;如果你是个新手&#xff0c;刚刚开始可以不用&#xff0c;完全可以跟着课程一起学习&a…

贪官产生的本质是什么——谈谈人性与制度的博弈未来

知乎上有人问&#xff1a;贪官产生的本质原因是什么&#xff1f;一直不太能理解贪官是怎么产生的&#xff0c;希望能请各位从人性、社会、特权、阶级、系统工程等角度帮忙分析一下。贪官产生的本质原因是什么&#xff1f;- 青润的回答 - 知乎 https://www.zhihu.com/question/3…

python 动态规划的应用;斐波那契数列,最优解,最优子序列

一、动态规划概念 动态规划&#xff08;Dynamic Programming&#xff0c;DP&#xff09;是运筹学的一个分支&#xff0c;是求解决策过程最优化的过程。20世纪50年代初&#xff0c;美国数学家贝尔曼&#xff08;R.Bellman&#xff09;等人在研究多阶段决策过程的优化问题时&…

IT30--IT与业务业务与ITIT价值(3年之约已满)

从大学开始。。。 读大学前压根就没有见过计算机这个东西&#xff08;不得不感慨信息技术发展之快&#xff09;。可能因为高考数学考的还不错的原因&#xff0c;选择了计算机这个专业&#xff0c;后来研究生读的也是计算机的相关专业。当时班里的女生少&#xff0c;但没想到一…

java中多线程的基础知识

Process与Thread&#xff1a; 程序是指一段静态的代码,是指令和数据的有序集合,其本身没有任何运行的含义,它能够完成某些功能,它是应用软件执行的蓝本&#xff0c;它是一个静态的概念。 进程是关于某个数据集合的一次运行活动,它是操作系统动态执行的基本单元,也是程序的一次…

C++中二叉树的递归遍历方法2-2

在《C中二叉树的递归非遍历方法3-3》中提到&#xff0c;二叉树的层序遍历的输出顺序是从根节点开始&#xff0c;一层一层横向遍历各个节点。如图1所示的二叉树&#xff0c;层序遍历的输出的输出顺序为“1->2->3->4->5->6”。 图1 二叉树结构 1 递归实现层序遍历…

计算机视觉 基于CUDA编程的入门与实践 线程及同步一

一、并行执行规模 CUDA关于并行执行具有分层结构。每次内核启动时可以被切分成多个并行执行的块&#xff0c;而每个块又可以进一步地被切分成多个线程。这种并行执行的副本可以通过两种方式完成&#xff1a;一种是启动多个并行的块&#xff0c;每个块具有1个线程&#xff1b;另…

项目实战之旅游网(五)后台角色管理(下) 后台权限管理

目录 一.后台角色管理&#xff08;下&#xff09; 1.查询角色权限 2.修改角色权限 3.优化侧边栏菜单 二.后台权限管理 1.权限列表 2.新增权限 3.修改权限 4.删除权限 一.后台角色管理&#xff08;下&#xff09; 1.查询角色权限 先新建一个bean类型的实体类&#xf…

单商户商城系统功能拆解53—数据分析

单商户商城系统&#xff0c;也称为B2C自营电商模式单店商城系统。可以快速帮助个人、机构和企业搭建自己的私域交易线上商城。 单商户商城系统完美契合私域流量变现闭环交易使用。通常拥有丰富的营销玩法&#xff0c;例如拼团&#xff0c;秒杀&#xff0c;砍价&#xff0c;包邮…