3. python练习题3-自由落体

3. python练习题3-自由落体

【目录】

文章目录

  • 3. python练习题3-自由落体
    • 1. 目标任务
    • 2. 解题思路
    • 3. 知识回顾-`%`占位符格式化处理
      • 3.1 概述
      • 3.2 占位符的多种用法
      • 3.3 格式化操作符辅助指令
      • 3.4 将整数和浮点数格式化为字符串
    • 4. 解题思路
      • 4.1 球第1次下落
      • 4.2 球第2次下落
    • 5. 最终代码
    • 6. 其他解题方法
      • 6.1 使用while循环方式1
      • 6.2 使用while循环方式2
      • 6.3 函数递归调用方式1
      • 6.4 使用函数递归调用方式2
      • 6.5 使用列表推导式结合幂函数、求和函数实现

【正文】

1. 目标任务

一个球从100米高度自由落下,每次落地后反跳回原高度的一半再落下。
求它在第10次落地时,共经过多少米?
求第10次反弹多高?

2. 解题思路

Python一切皆对象,我们做题时首先要确定题目所需的对象。
对象1=初始高度=100
对象2=每次下落高度
对象3=每次反弹高度=每次下落高度的一半
对象4=落地次数=10
对象5=单次自由落下经过的路程=每次下落的高度+每次反弹的高度
对象6=每次自由落下经过的累计总路程=前面累计总路程+本次自由落下经过的路程
对象7=球第10次反弹的高度

 次数    下落的高度    反弹的高度    单次总路程               累计总路程
第1次:    100                50               100+50=150            150
第2次:    50                  25               50+25=75                150+75=225
第3次:    25                 12.5             25+12.5=37.5           225+37.5=262.5
第4次:    12.5               6.25            12.5+6.25=18.75       262.5+18.75=281.25

球下落十次,一个动作要重复10次。
重复的动作,还需要控制次数。
第一反应就要想到for循环range搭配。
每次反弹的高度都是下落高度的一半,这个除法就能实现。
除法在Python中用/符号表示。

3. 知识回顾-%占位符格式化处理

3.1 概述

在Python中,我们通常用%来占位,也就是生活中占座的意思。

因此将%称为占位符。

它的作用是先在要输出的内容中占一个位置,最后再告诉程序那个被占了的位置要输出什么内容。

语法通常如下:

要输出的内容 % 需要格式化的变量或数值

在这里插入图片描述

3.2 占位符的多种用法

%占位符有很多种用法:

  • %s:获取传入对象的str方法的返回值,并将其格式化到指定位置。

  • %o:将整数转换成八进制表示,并将其格式化到指定位置。

  • %x:将整数转换成十六进制表示,并将其格式化到指定位置。

  • %d:将整数、浮点数转换成十进制表示,并将其格式化到指定位置。

  • %f:将整数、浮点数转换成浮点数表示,并将其格式化到指定位置(默认保留小数点后6位)。

除了上面这些,还有其他的语法。

3.3 格式化操作符辅助指令

以下内容初学者了解即可。

在这里插入图片描述

3.4 将整数和浮点数格式化为字符串

以本题为例,要打印如下语句:

球第1次落下,共经过150.00米。

球第1次反弹的高度为50.00米。

其中次数为整数,距离为保留小数点后两位的浮点数。

【代码示例】

# 变量i表示次数,数据类型为整数
i=1

# total_distance表示总路程
total_distance=150.000000

# bounce_height表示反弹的高度
bounce_height=50.000000

print("球第%d次落下,共经过%.2f米。" % (i, total_distance))

print("球第%d次反弹的高度为%.2f米。" %(i, bounce_height))

【终端输出】

球第1次落下,共经过150.00米。
球第1次反弹的高度为50.00米。

【代码解析】

print("球第%d次落下,共经过%.2f米。" % (i, total_distance))
  • “球第%d次落下,共经过%.2f米。” 是一个字符串,其中 %d 和 %f 是占位符,用于表示后面要填入的变量。
  • (i, total_distance) 是一个元组,包含了变量i total_distance 的值,分别对应占位符 %d%f
  • %d 表示要填入一个整数值,对应变量 i 的值。
  • %.2f 表示要填入一个浮点数值,并保留两位小数,对应变量 total_distance 的值。

4. 解题思路

球要下落10次,编写出的代码不方便我们检查。
且很多同学对10次其实没什么概念。
初学者编写代码建议从球第1次落下开始编写代码。

4.1 球第1次下落

【代码示例】

# 初始高度100米
height = 100

# 初始化总共经过的累计路程为0
total_distance = 0

# 反弹高度为初始高度的一半
bounce_height = height/2

# 本次总路程=下落的高度+反弹的高度
pre_total_distance = height+bounce_height

# 累计总路程=前面累计总路程+本次总路程
total_distance=total_distance+pre_total_distance

# 输出球自由落下经过的距离,保留两位小数   
print("球从100米高度自由落下,共经过%.2f米。" % total_distance)
# 输出第1次反弹的高度,保留两位小数。
print("球第1次反弹的高度为%.2f米。" % bounce_height)

【终端输出】

球从100米高度自由落下,共经过150.00米。
球第1次反弹的高度为50.00米。

【解析】

第1次落下的代码我们主要完成了代码中变量的初始化赋值以及输出框架的搭建。

4.2 球第2次下落

球第2次落下的反弹的高度,是第1次反弹高度的一半。
第1次反弹的高度是计算得来的。
这里我们需要一个循环迭代的过程,这里先以for循环为例。

【代码示例】

# 初始高度100米
height = 100

# bounce_height表示的是每次反弹高度
# 需要为它设置一个初始值
# 因为每次反弹高度同时又是下次的下落高度
# 小球的初始高度为100米,
# 因此为bounce_height设置初始值时,
# 可以想象为小球上次反弹了100米
bounce_height = height

# 初始化总共经过的距离为0
total_distance = 0

# range(1,3)表示只循环2次
# range取值含前不含后
for i in range(1,3):
    # 每次下落高度为上次反弹高度
    per_height = bounce_height
    
    # 每次反弹高度为每次下落高度的一半
    bounce_height = per_height/2

    # 每次总路程=每次下落的高度+每次反弹的高度
    per_total_distance=per_height+bounce_height

    # 总路程=前面累计总路程+当次总路程
    total_distance = total_distance+per_total_distance    

    # 输出球自由落下的总经过距离,保留两位小数   
    print("球第%d次落下,共经过%.2f米。" % (i, total_distance))
    # 输出当次反弹的高度,保留两位小数。
    print("球第%d次反弹的高度为%.2f米。" %(i, bounce_height))

【终端输出】

球第1次落下,共经过150.00米。
球第1次反弹的高度为50.00米。
球第2次落下,共经过225.00米。
球第2次反弹的高度为25.00米。

【解析】

上面的代码先定义并初始化3个变量:

初始下落高度:height 初始化为100。

每次反弹高度:bounce_height 初始化为初始下落高度。

每次下落小球经过的累计总距离:total_distance 初始化为0。

然后设置一个for循环,循环体描述一次下落的过程,过程中求取两个变量的值。

每次下落小球经过的累计总距离total_distance,以及每次反弹高度bounce_height。

这里可以替换range(1,3)中的值来检验代码是否准确。

5. 最终代码

【代码示例】

# 初始高度100米
height = 100

# bounce_height表示的是每次反弹高度,
# 需要为它设置一个初始值
# 因为每次反弹高度同时又是下次的下落高度
# 现在小球的初始高度为100米,
# 因此为bounce_height设置初始值时,
# 可以想象为小球上次反弹了100米
bounce_height = height

# 初始化总共经过的距离为0
total_distance = 0

for i in range(1,11):
    # 每次下落高度为上次反弹高度
    per_height = bounce_height
    
    # 每次反弹高度为每次下落高度的一半
    bounce_height = per_height/2

    # 每次总路程=每次下落的高度+每次反弹的高度
    per_total_distance=per_height+bounce_height

    # 总路程=前面累计总路程+当次总路程
    total_distance = total_distance+per_total_distance    

# 注意!题目求的是在第10次落地时,共经过多少米
# 由于每次总路程都是小球每次下落高度加上每次反弹高度
# 所以最后还需要把总路程减去第10次反弹高度
total_distance=total_distance-bounce_height

# 输出球在第10次落地时,共经过多少米,保留两位小数   
print("球第%d次落地时,共经过%.2f米。" % (i, total_distance))
# 输出当次反弹的高度,保留两位小数。
print("球第%d次反弹的高度为%.2f米。" %(i, bounce_height))

【终端输出】

球第10次落地时,共经过299.61米。
球第10次反弹的高度为0.10米。

【解析】

最终代码只要在前面代码的基础上,把次数i值在range函数参数中设置循环范围为10次,即range(1,11)即可。
由于题目第一个求的是小球第10次落地时共经过的累计距离,也就是说不包括第10次弹起的距离。
因此在循环结束后,还需要把total_distance减去当前的bounce_height的值,才是题目所求的答案。

6. 其他解题方法

同一个问题,通常都会有灵活多变的不同解题思路和编程方法。
这方面的积极思考和探索,对我们拓展思路、开阔视野,以及对编程语言灵活熟练的掌握尤为重要!

这里列出其他几种不同的解题方法和代码,供大家参考。

6.1 使用while循环方式1

【代码示例】

# 初始高度100米
height = 100

# bounce_height表示的是每次反弹高度,
# 需要为它设置一个初始值
# 因为每次反弹高度同时又是下次的下落高度
# 现在小球的初始高度为100米,
# 因此为bounce_height设置初始值时,
# 可以想象为小球上次反弹了100米
bounce_height = height

# 初始化总共经过的距离为0
total_distance = 0

# 初始化次数为0
i=0

# 直接在while语句中设置循环条件
while i<10:

    # 次数加1
    i+=1

    # 每次下落高度为上次反弹高度
    per_height = bounce_height
    
    # 每次反弹高度为每次下落高度的一半
    bounce_height = per_height/2

    # 每次总路程=每次下落的高度+每次反弹的高度
    per_total_distance=per_height+bounce_height

    # 总路程=前面累计总路程+当次总路程
    total_distance = total_distance+per_total_distance    

# 注意!题目求的是在第10次落地时,共经过多少米
# 由于每次总路程都是小球每次下落高度加上每次反弹高度
# 所以最后还需要把总路程减去第10次反弹高度
total_distance=total_distance-bounce_height

# 输出球在第10次落地时,共经过多少米,保留两位小数   
print("球第%d次落地时,共经过%.2f米。" % (i, total_distance))
# 输出当次反弹的高度,保留两位小数。
print("球第%d次反弹的高度为%.2f米。" %(i, bounce_height))

【终端输出】

球第10次落地时,共经过299.61米。
球第10次反弹的高度为0.10米。

【解析】

不同于for循环直接在range( )函数中设置i值的循环范围,这里的while循环首先在循环外部定义并设定i的初始值为0。

然后在设置循环的while语句中给出满足循环的条件:i<10,当满足该条件时都会执行循环体中的代码。

注意,这种设置循环条件的方式能使循环自然终止,而不需要在循环体中使用break语句终止循环。

循环体中每轮循环都会把次数i值自加1,当i增加到10时,已不满足条件i<10,则不再执行循环体中的代码而终止循环。

特别要注意i值的初始值、循环条件的具体设定、i值自加语句在循环体中的位置这三者需要相互密切配合。

在这里,由于i值初始值为0,进入循环体后要首先把i值自加,因此循环条件则必须设置为i<10,而不能设置为i<11。

6.2 使用while循环方式2

【代码示例】

# 初始高度100米
height = 100

# bounce_height表是每次反弹高度,
# 需要为它设置一个初始值
# 因为每次反弹高度同时又是下次的下落高度
# 现在小球的初始高度为100米,
# 因此为bounce_height设置初始值时,
# 可以想象为小球上次反弹了100米
bounce_height = height

# 初始化总共经过的距离为0
total_distance = 0

# 初始化次数为0
i=0

# 不在while语句中设置循环条件
while True:

    # 进入循环体后,在最开始设置循环终止条件
    if i==10:

        # 这种方式需要使用break语句来终止循环
        break

    # 每次下落高度为上次反弹高度
    per_height = bounce_height
    
    # 每次反弹高度为每次下落高度的一半
    bounce_height = per_height/2

    # 每次总路程=每次下落的高度+每次反弹的高度
    per_total_distance=per_height+bounce_height

    # 总路程=前面累计总路程+当次总路程
    total_distance = total_distance+per_total_distance    

    # 次数加1
    i+=1

# 注意!题目求的是在第10次落地时,共经过多少米
# 由于每次总路程都是小球每次下落高度加上每次反弹高度
# 所以最后还需要把总路程减去第10次反弹高度
total_distance=total_distance-bounce_height

# 输出球在第10次落地时,共经过多少米,保留两位小数   
print("球第%d次落地时,共经过%.2f米。" % (i, total_distance))
# 输出当次反弹的高度,保留两位小数。
print("球第%d次反弹的高度为%.2f米。" %(i, bounce_height))

【终端输出】

球第10次落地时,共经过299.61米。
球第10次反弹的高度为0.10米。

【解析】

这里同样采用while循环,只是在循环终止条件的设置方式上有所变动。

不在while语句中直接设置循环终止条件,改为在循环体中使用if语句来设置。

同样需要注意i值的初始值、循环条件的具体设定、i值自加语句在循环体中的位置这三者之间的相互配合。

另外,这种方式在设置循环终止条件的if语句中,必然需要使用break语句来终止循环。

6.3 函数递归调用方式1

小球自由落体运动是一个落下、弹起、再落下、再弹起…的循环往复的运动过程,

每一次的落下和弹起都遵循相似的模式,因此,可以考虑使用函数递归调用的方式来解决问题。

递归函数知识回顾可参考下面的链接:

58.Python的递归函数

在使用函数递归调用方法时,需要注意以下几点:

  1. 递归函数体中的代码需要满足程序逐层级深入的循环往复调用要求,能解决每一层级的问题需求。

  2. 递归函数体中提供往下级继续调用的,必须是函数本身。

  3. 递归函数的参数设置和传递的合理准确是成功的关键。

  4. 递归函数体中必须设置停止、退出函数调用的正确且有效的条件,否则很可能导致无限调用使程序崩溃的情况。

我们可以以本题为例,看一下具体该如何进行一个成功的函数递归调用。

【代码示例】

# 采用递归函数方式,总距离total_distance作为函数参数进行传递调用


# 初始高度100米
height = 100

# 初始化总共经过的距离为0
total_distance = 0

# 设置递归函数参数为次数i、下落高度height、累计总路程total_distance
def fall(i,height,total_distance):
           
    # 每次反弹高度为每次下落高度的一半
    bounce_height = height/2

    # 每次总路程=每次下落的高度+每次反弹的高度
    per_total_distance=height+bounce_height

    # 总路程=前面累计总路程+当次总路程
    total_distance = total_distance+per_total_distance    

    # 当第10次时,计算题目最终所求,打印结果,终止函数递归调用并返回
    if i==10:

        # 注意!题目求的是在第10次落地时,共经过多少米
        # 由于每次总路程都是小球每次下落高度加上每次反弹高度
        # 所以最后还需要把总路程减去第10次反弹高度
        total_distance=total_distance-bounce_height

        # 输出球在第10次落地时,共经过多少米,保留两位小数   
        print("球第%d次落地时,共经过%.2f米。" % (i, total_distance))
        # 输出当次反弹的高度,保留两位小数。
        print("球第%d次反弹的高度为%.2f米。" %(i, bounce_height))

        # 必须返回
        return
    
    # 次数加1
    i+=1

    # 进行下一轮函数调用,注意把本轮的弹起高度作为下轮的下落高度进行参数传递
    fall(i,bounce_height,total_distance)

fall(1,height,total_distance)

【终端输出】

球第10次落地时,共经过299.61米。
球第10次反弹的高度为0.10米。

【解析】

  1. 递归函数体中描述的是小球每次下落再弹起的运动过程,每轮都具有相似的运动模式,只是相关参数有所变化,可以进行循环往复调用;

  2. 每次调用都能得到当次的几个关键数据值:每次反弹高度、每次总路程、每次累计总路程;

  3. 函数体最后调用的是函数自身,只是传递的参数值有所变化;

  4. 设计函数的三个参数:次数i、下落高度height、累计总路程total_distance。这三个参数都随着每次的调用进行规律性变化,影响并决定着下一轮的调用结果,因此,这样的参数设置是合理有效的。

  5. 函数中提供了终止函数调用的正确且有效的条件(正确包括终止调用的正确时机、终止调用时的数据准确;有效即代表的确可以实现终止调用),并有return语句终止函数调用。

6.4 使用函数递归调用方式2

【代码示例】

# 采用递归函数方式,
# 总距离total_distance设为全局变量,
# 而不作为函数参数进行传递调用


# 初始高度100米
height = 100

# 初始化总共经过的距离为0
total_distance = 0

# 设置函数参数,total_distance不作为函数参数进行传递调用
def fall(i,height):
           
    # 当在函数内部用自加方式修改全局变量时,需要用gloabal进行声明
    global total_distance

    # 每次反弹高度为每次下落高度的一半
    bounce_height = height/2

    # 每次总路程=每次下落的高度+每次反弹的高度
    per_total_distance=height+bounce_height

    # 总路程=前面累计总路程+当次总路程
    total_distance = total_distance+per_total_distance    

    # 当第10次时,计算题目最终所求,打印结果,终止函数递归调用并返回
    if i==10:

        # 注意!题目求的是在第10次落地时,共经过多少米
        # 由于每次总路程都是小球每次下落高度加上每次反弹高度
        # 所以最后还需要把总路程减去第10次反弹高度
        total_distance=total_distance-bounce_height

        # 输出球在第10次落地时,共经过多少米,保留两位小数   
        print("球第%d次落地时,共经过%.2f米。" % (i, total_distance))
        # 输出当次反弹的高度,保留两位小数。
        print("球第%d次反弹的高度为%.2f米。" %(i, bounce_height))

        # 必须返回
        return
    
    # 次数加1
    i+=1

    # 进行下一轮函数调用
    fall(i,bounce_height)

fall(1,height)

【终端输出】

球第10次落地时,共经过299.61米。
球第10次反弹的高度为0.10米。

【解析】

与前面的函数递归调用方式1唯一不同之处在于:总距离total_distance在这里设为全局变量,而不作为函数参数进行传递调用。

这当然也是可以的,但需要注意一点:total_distance是浮点类型,是不可变数据类型,

函数中原则上是不允许改变不可变数据类型的全局变量值的,如果必须改变,则需要在函数中使用global语句对该全局变量进行改变值的声明。

另外,参数i也是可以设置为全局变量的,因为其每次调用的值改变严格遵循自加一的规律。

但参数height却不能设置为全局变量,因为在调用过程中,是把本轮的弹起高度作为下轮的下落高度进行参数传递,

height值每一轮都会发生改变,而如果将其设置为全局变量,可以从代码中观察到它自始至终都不会发生改变,这显示是不准确的。

这种细节处一定要做精准考究,才能确保函数递归调用的准确性。

6.5 使用列表推导式结合幂函数、求和函数实现

【代码示例】

# 使用列表推导式结合幂函数、求和函数实现

# 定义了一个名为distance_bounce_list的列表
# 使用列表推导式生成了包含10个元组的列表
# 每个元组包含两个值
# 第一个值表示球在第i次落地时的总经过距离
# 第二个值表示球在第i次反弹时的高度。
distance_bounce_list=[(100/pow(2,i)+100/pow(2,i+1),100/pow(2,i+1)) for i in range(10)]

# 使用sum函数对distance_bounce_list中每个元组的第一个值进行求和
# 得到球在前9次落地时的总经过距离
total_distance=sum([distance_bounce[0] for distance_bounce in distance_bounce_list])

# 通过索引[-1]获取distance_bounce_list中最后一个元组
# [1]取出其中的第二个值,即球在第10次反弹时的高度。
last_bounce_height=distance_bounce_list[-1][1]

# 将球在第10次反弹时的高度从总经过距离中减去
total_distance-=last_bounce_height
print('球第10次落地时,共经过%.2f米。'%total_distance)
print('球第10次反弹的高度为%.2f米。'%last_bounce_height)

【终端输出】

球第10次落地时,共经过299.61米。
球第10次反弹的高度为0.10米。

列表推导式可参考如下链接:

90. Python列表推导式

本例结合使用了一些python语言中相对来说复杂一点的语法、技巧来实现。

而事实上无论从代码的友好性、结构清晰性还是执行效率性等各方面来衡量,都是不足取的,唯一的优点也就是大幅减少了代码行数而已。

在这里只作为一种练习和研究探索,让我们可以温习一下相关的语法和技巧,也拓宽一下自己的思路,锻炼一下自己思考解决问题的灵活多变能力。

对于初学者而言,有一定理解难度,因此不做要求深究。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

可能是最便宜的姿态传感器,国产三轴加速度计SC7A20

可能是最便宜的姿态传感器 三轴检测 批量参考价格&#xff1a;整盘单价&#xff1a;1.242&#xff0c;一个包装10K&#xff0c;希望厂家能出点数量少的包装&#xff0c;这一盘太多了&#xff1a;&#xff09; 特点 宽电压范围 1.71V-3.6V 1.8V 兼容数字 IO 口 低功耗模式下…

【论文精读】 GPT,GPT-2,GPT-3:大力出奇迹

系列文章目录 【论文精读】Transformer&#xff1a;Attention Is All You Need 【论文精读】BERT&#xff1a;Pre-training of Deep Bidirectional Transformers for Language Understanding 文章目录 系列文章目录一、前言二、GPT&#xff08;一&#xff09;文章概览&#xf…

44.网络游戏逆向分析与漏洞攻防-角色管理功能通信分析-角色创建服务器反馈数据包分析

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 如果看不懂、不知道现在做的什么&#xff0c;那就跟着做完看效果 现在的代码都是依据数据包来写的&#xff0c;如果看不懂代码&#xff0c;就说明没看懂数据包…

vue快速入门(五)v-show与v-if

注释很详细&#xff0c;直接上代码 上一篇 新增内容 v-if与v-show底层的区别v-if与v-show的效果 源码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice…

排序算法-希尔排序

希尔排序是插入排序的一种改进版本&#xff0c;通过将整个序列按一定间隔分组&#xff0c;对每个分组进行插入排序&#xff0c;然后逐渐减小间隔&#xff0c;直到间隔为1&#xff0c;最后对整个序列进行一次插入排序。希尔排序的核心思想是利用插入排序对近乎有序的序列进行排序…

Vue监听器watch的基本用法

文章目录 1. 作用2. 格式3. 示例3.1 value 值为字符串3.2 value 值为函数3.3 value 值为对象 4. 与计算属性对比 1. 作用 监视数据变化&#xff0c;执行一些业务逻辑或异步操作。 2. 格式 监听器 watch 内部以 key &#xff1a;value 的形式定义&#xff0c;key 是 data 中的…

基于springboot实现墙绘产品展示交易平台管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现墙绘产品展示交易平台管理系统演示 摘要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本墙绘产品展示交易平台就是在这样的大环境下诞生&…

继承.Java

目录 1&#xff0c;概述 1.1继承的含义 1.2什么时候用继承 1.3继承的好处 1.4继承的特点 2&#xff0c;继承的格式 3&#xff0c;可以继承哪些内容 4&#xff0c;成员方法和成员变量的访问特点 5&#xff0c;构造方法的访问特点 6&#xff0c;this&#xff0c;super…

【ARM 嵌入式 C 常用数据结构系列 25 -- container_of 宏 使用介绍】

文章目录 container_of 宏container_of 宏的定义container_of 使用示例应用场景总结 container_of 宏 在Linux内核编程中&#xff0c;container_of宏是一个非常有用的工具&#xff0c;它允许开发者从指向结构体中某个成员的指针反向获得包含它的完整结构体的指针。这在实现基于…

基于深度学习的植物叶片病害识别系统(网页版+YOLOv8/v7/v6/v5代码+训练数据集)

摘要&#xff1a;本文深入研究了基于YOLOv8/v7/v6/v5的植物叶片病害识别系统&#xff0c;核心采用YOLOv8并整合了YOLOv7、YOLOv6、YOLOv5算法&#xff0c;进行性能指标对比&#xff1b;详述了国内外研究现状、数据集处理、算法原理、模型构建与训练代码&#xff0c;及基于Strea…

【IT运维入门(ITHW)系列】之「快速部署」第一期清单(持续更新)

ITHW是Information Technology Hello World的缩写简拼。意在提供IT领域的入门相关知识&#xff0c;近期给大家带来的是主流技术选型的快速部署系列&#xff0c;意在最大程度地简化部署过程&#xff0c;以便能快速体验或测试相关技术选型。 ITHW快捷部署系列&#xff08;第一期&…

【服务器部署篇】关于云服务器的选择和购买

作者介绍&#xff1a;本人笔名姑苏老陈&#xff0c;从事JAVA开发工作十多年了&#xff0c;带过大学刚毕业的实习生&#xff0c;也带过技术团队。最近有个朋友的表弟&#xff0c;马上要大学毕业了&#xff0c;想从事JAVA开发工作&#xff0c;但不知道从何处入手。于是&#xff0…

蓝桥杯(4):python动态规划DF[1]

动态规划相当于正着想&#xff1f;dfs主要适用于位置的变化&#xff1f; 子问题&#xff01;状态&#xff0c;状态转移方程 1 一维DP 1.1 定义 重叠子问题&#xff01;转换成子问题 &#xff0c;与记忆化搜索很像 1.2 例子 1.2.1 上楼梯 子问题到最终的问题只能跨一步&…

攻防世界 xff_referer 题目解析

xff_referer 一&#xff1a;了解xxf和Referer X-Forwarded-For:简称XFF头&#xff0c;它代表客户端&#xff0c;也就是HTTP的请求端真实的IP&#xff0c;只有在通过了HTTP 代理或者负载均衡服务器时才会添加该项。 一般的客户端发送HTTP请求没有X-Forwarded-For头的&#xff0…

基于springboot+vue的企业校园招聘面试管理系统【超级管理员、平台企业、学校、学生、HR】

招聘系统将为招聘者和求职者构建一个功能齐全、方便快捷的招聘平台&#xff0c;减少双方投入招聘活动的成本&#xff0c;为招聘求职双方带来便利&#xff0c;系统将实现如下目标&#xff1a; (1)针对系统内的不同角色&#xff0c;系统能够赋予其不同的操作权限。招聘者和求职者…

51单片机入门_江协科技_19~20_OB记录的笔记

19. 串口通讯 19.1. 串口介绍&#xff1a; •串口是一种应用十分广泛的通讯接口&#xff0c;串口成本低、容易使用、通信线路简单&#xff0c;可实现两个设备的互相通信。 •单片机的串口可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信&#xff0c;极大的…

玩转ChatGPT:Kimi测评(图片识别)

一、写在前面 ChatGPT作为一款领先的语言模型&#xff0c;其强大的语言理解和生成能力&#xff0c;让无数用户惊叹不已。然而&#xff0c;使用的高门槛往往让国内普通用户望而却步。 最近&#xff0c;一款由月之暗面科技有限公司开发的智能助手——Kimi&#xff0c;很火爆哦。…

大意了MySQL关键字EXPLAIN

一、问题 然后explain带了单引号、以区别其关键字 二、报错如下 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near explain, us.nickname AS user_send_nickname, ua.nickname…

【GEE实践应用】GEE下载遥感数据以及下载后在ArcGIS中的常见显示问题处理(以下载哨兵2号数据为例)

本期内容我们使用GEE进行遥感数据的下载&#xff0c;使用的相关代码如下所示&#xff0c;其中table是我们提前导入的下载遥感数据的研究区域的矢量边界数据。 var district table;var dsize district.size(); print(dsize);var district_geometry district.geometry();Map.…

力扣热题100_链表_2_两数相加

文章目录 题目链接解题思路解题代码 题目链接 2. 两数相加 给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。 请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。 …