Python-VBA函数之旅-range函数

目录

一、range函数的常见应用场景

二、range函数使用注意事项

三、如何用好range函数?

1、range函数:

1-1、Python:

1-2、VBA:

2、推荐阅读:

个人主页:https://blog.csdn.net/ygb_1024?spm=1010.2135.3001.5421 

一、range函数的常见应用场景

        range函数在Python编程中有广泛的应用场景,因为它为迭代提供了方便的方式,特别是在需要生成一系列连续整数时,常见的应用场景有:

1、循环遍历固定次数的操作:当你需要执行某个操作固定次数时,可以使用range()函数来生成一个数字序列,并在循环中遍历这个序列。

2、索引访问列表/元组/字符串:虽然range()函数本身不直接支持索引,但结合len()函数和列表解析等,可以轻松地对列表/元组/字符串等进行索引操作。

3、生成步进序列:当需要生成一个步长不为1的序列时,可以使用range()函数的第三个参数,这在创建图形、处理数组或矩阵时特别有用。

4、创建数字列表:通过结合list()函数和range()函数,可以轻松创建数字列表。

5、随机选择或打乱顺序:虽然range()函数本身不直接用于随机选择或打乱顺序,但结合其他库(如random)可以很容易地实现这些功能。

6、数学计算:在需要进行数学计算,如求和、求积或计算某个数学公式在不同整数点上的值时,range()函数可以生成所需的整数序列。

7、生成器表达式和列表解析:range()函数常与生成器表达式(generator expressions)和列表解析(list comprehensions)一起使用,以简洁的方式处理数据。

8、图形和动画:在创建图形或动画时,range()函数可以生成坐标点或时间步长。

9、算法和数据结构:在实现各种算法和数据结构时,range()函数可以用于初始化数组、遍历数据结构或模拟算法的执行步骤。

10、科学计算和数据分析:在科学计算和数据分析中,经常需要迭代一组连续的整数或浮点数,虽然numpy等库提供了更高效的数组和矩阵操作,但range()函数在处理简单迭代时仍然很有用。

        总之,range()函数是Python编程中非常实用的一个工具,它简化了对连续数字序列的处理和操作。 

二、range函数使用注意事项

        在使用Python中的range()函数时,需牢记以下事项:

1、不包括结束值:range()函数生成的序列是左闭右开的,即它会包含起始值,但不包含结束值,这意味着range(1, 5)将生成序列[1, 2, 3, 4],而不是[1, 2, 3, 4, 5]。

2、步长可以是负数:虽然range()函数通常用于生成递增序列,但你也可以使用负数作为步长来生成递减序列。例如,range(5, 0, -1)将生成序列[5, 4, 3, 2, 1]。

3、不支持直接索引:range()函数返回的是一个可迭代对象,而不是列表或数组,这意味着你不能像使用列表那样直接通过索引访问range()对象中的元素;如果你需要索引访问,可以将range()对象转换为列表或其他序列类型。

4、内存效率:由于range()对象是可迭代的,它不会一次性生成整个序列并存储在内存中,这使得range()在处理大数据集时非常高效,因为它按需生成值,而不是预先生成所有值,然而,如果你需要将range()对象转换为列表或其他序列类型,则需要注意内存使用情况。

5、Python 2和Python 3的差异:在Python 2中,range()函数返回的是一个列表,而在Python 3中,它返回的是一个范围对象(range object),这种变化使得Python 3在处理大数据集时更加内存高效,如果你在使用Python 2并且希望获得与Python 3相似的内存效率,可以考虑使用xrange()函数(注意:在Python 3中,xrange()已被移除,并被range()取代)。

6、避免不必要的转换:如果你只是需要迭代range()对象中的值,而不需要将它们存储在一个列表中,那么就没有必要将range()对象转换为列表,直接迭代range()对象更加高效。

7、步长不能为0:range()函数的步长参数不能为0,因为这会导致无限循环,如果你尝试使用0作为步长,Python将抛出一个ValueError异常。

8、避免在循环中修改索引:虽然Python允许你在循环中修改循环变量(如i),但在使用range()函数的循环中,这通常是没有意义的,因为range()生成的序列是不可变的,修改循环变量不会影响下一次迭代中的值。

9、注意循环的边界条件:在使用range()函数时,确保你理解了循环的边界条件,如果你不小心设置了错误的起始值、终止值或步长,可能会导致循环不执行、执行次数太少或太多。

三、如何用好range函数?

        为了充分利用Python中的range()函数,请你遵循以下建议:

1、理解参数:确保你清楚range()函数的三个参数:start(起始值,默认为0),stop(终止值,不包括在内)和step(步长,默认为1)。

2、简洁的循环:使用range()函数可以简洁地编写循环,而无需手动创建数字列表。

3、步长迭代:利用步长参数step来迭代跳过某些值或反向迭代。

4、转换为列表:如果你需要操作整个序列,或者需要多次迭代它,可以将range()对象转换为列表。

5、避免在循环中修改索引:尽管技术上你可以在循环中修改循环变量(如i),但这通常是不必要的,因为range()函数生成的序列是不可变的。

6、使用切片:虽然range()对象本身不支持切片,但你可以将其转换为列表后再进行切片操作。

7、数学运算:结合sum()、min()、max()等内置函数,对range()生成的序列进行数学运算。

8、避免不必要的转换:如果你不需要整个序列,那么就没有必要将其转换为列表,直接使用range()对象进行迭代更加内存友好。

9、与其他序列类型结合使用:你可以使用range()函数生成的索引来访问列表、元组或其他序列类型的元素。

10、理解range()与xrange()的区别(Python 2):如果你正在使用Python 2,请注意range()函数会生成一个列表,而xrange()会生成一个类似迭代器的对象,更加节省内存;在Python 3中,range()的功能与Python 2中的xrange()相同。

11、利用列表推导式(List Comprehensions):虽然这不是直接使用range(),但你可以结合使用列表推导式和range()来创建更复杂的列表。

12、文档和示例:经常查阅Python官方文档,以及查找和阅读使用range()函数的示例代码,这有助于你更好地理解其用法和最佳实践。

1、range函数:
1-1、Python:
# 1.函数:range
# 2.功能:用于生成一个新的range类型,多用于for循环语句中,用于生成指定范围的整数
# 3.语法:
# 3-1、range(stop)
# 3-2、range(start, stop)
# 3-3、range(start, stop[, step])
# 4.参数:
# 4-1、start:表示起始整数(包括起始整数),默认起始值为0,起始整数可以省略,若省略,则默认从0开始
# 4-2、stop:表示结束整数(但不包括结束整数),结束整数不能省略
# 4-3、step:表示步长,即两个数之间的间隔,如果省略step参数,则默认步长为1
# 5.返回值:返回的是一个不可变的序列类型,但它本身并不是列表,而是一个range对象
# 6.说明:
# 6-1、参数stop可以大于0,也可以小于或等于0,但是当stop参数小于或等于0时,生成的range对象是不包含任何元素的
# 6-2、range()函数接收的参数必须是整数,不能是浮点数等其他数据类型,否则会提示类型错误
# 6-3、在使用range()函数时,如果只有1个参数,那么表示指定得是stop结束整数;如果是两个参数,则表示指定得是start起始整数和stop结束整数;只有3个参数都存在,最后一个参数才表示step步长
# 7.示例:
# 用dir()函数获取该函数内置的属性和方法
print(dir(range))
# ['__bool__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__',
# '__getattribute__', '__getitem__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__',
# '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__setattr__',
# '__sizeof__', '__str__', '__subclasshook__', 'count', 'index', 'start', 'step', 'stop']# 用help()函数获取该函数的文档信息
help(range)# 应用一:循环遍历固定次数的操作
# 示例1:打印从0到4的数字
for i in range(5):print(i)
# 0
# 1
# 2
# 3
# 4# 示例2:遍历一个列表并打印其索引和值
my_list = ['apple', 'banana', 'cherry']
for index in range(len(my_list)):print(f"Index: {index}, Value: {my_list[index]}")
# Index: 0, Value: apple
# Index: 1, Value: banana
# Index: 2, Value: cherry# 示例3:使用range()生成一个包含奇数的列表
odd_numbers = [i for i in range(1, 10, 2)]
print(odd_numbers)
# [1, 3, 5, 7, 9]# 示例4:使用range()进行固定次数的操作(例如,重复一个操作10次)
for _ in range(10):  # 使用 _ 作为循环变量,因为我们不关心它的具体值# 这里放你想要重复的操作print("This operation is repeated 10 times.")
# This operation is repeated 10 times.
# This operation is repeated 10 times.
# This operation is repeated 10 times.
# This operation is repeated 10 times.
# This operation is repeated 10 times.
# This operation is repeated 10 times.
# This operation is repeated 10 times.
# This operation is repeated 10 times.
# This operation is repeated 10 times.
# This operation is repeated 10 times.# 示例5:从10倒数到1(包括1和10)
for i in range(10, 0, -1):  # 从10开始,到0(不包括),步长为-1print(i)
# 10
# 9
# 8
# 7
# 6
# 5
# 4
# 3
# 2
# 1# 应用二:索引访问列表/元组/字符串
# 示例1:访问列表的元素
my_list = ['apple', 'banana', 'cherry', 'date', 'elderberry']
# 使用range()和len()来遍历列表的索引
for index in range(len(my_list)):print(f"Index {index}: {my_list[index]}")
# Index 0: apple
# Index 1: banana
# Index 2: cherry
# Index 3: date
# Index 4: elderberry# 示例2:访问元组的元素
my_tuple = ('apple', 'banana', 'cherry')
# 直接使用range()和已知的长度来遍历元组的索引
for index in range(len(my_tuple)):print(f"Index {index}: {my_tuple[index]}")
# Index 0: apple
# Index 1: banana
# Index 2: cherry# 示例3:访问字符串的字符(索引)
my_string = "myelsa"
# 使用range()和len()来遍历字符串的索引
for index in range(len(my_string)):print(f"Index {index}: {my_string[index]}")
# Index 0: m
# Index 1: y
# Index 2: e
# Index 3: l
# Index 4: s
# Index 5: a# 示例4:使用enumerate()函数(range()函数的替代方案,更简洁高效)
my_list = ['apple', 'banana', 'cherry']
# 使用enumerate()来遍历列表的索引和值
for index, value in enumerate(my_list):print(f"Index {index}: {value}")
my_tuple = ('apple', 'banana', 'cherry')
# 类似地,使用enumerate()来遍历元组
for index, value in enumerate(my_tuple):print(f"Index {index}: {value}")
my_string = "hello"
# 对于字符串,enumerate()仍然适用
for index, char in enumerate(my_string):print(f"Index {index}: {char}")
# Index 0: apple
# Index 1: banana
# Index 2: cherry
# Index 0: apple
# Index 1: banana
# Index 2: cherry
# Index 0: h
# Index 1: e
# Index 2: l
# Index 3: l
# Index 4: o# 应用三:生成步进序列
# 示例1:生成从0开始,步长为2的序列,直到但不包括10
# 使用range(start, stop, step)的形式
for i in range(0, 10, 2):print(i)
# 0
# 2
# 4
# 6
# 8# 示例2:生成从5开始,步长为3的序列,直到但不包括20
for i in range(5, 20, 3):print(i)
# 5
# 8
# 11
# 14
# 17# 示例3:生成从5开始,步长为-1的序列,直到但不包括0
# 这是一个递减的步进序列
for i in range(5, 0, -1):print(i)
# 5
# 4
# 3
# 2
# 1# 示例4:使用列表推导式生成步进序列的列表
# 生成一个包含从0到18之间所有偶数的列表
even_numbers = [i for i in range(0, 19, 2)]
print(even_numbers)
# [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]# 示例5:生成一个包含负数的步进序列,并计算其平方
# 生成一个包含从-5到5之间(包括-5但不包括5)所有奇数的序列,并计算它们的平方
for i in range(-5, 5, 2):square = i ** 2print(f"{i} 的平方是 {square}")
# -5 的平方是 25
# -3 的平方是 9
# -1 的平方是 1
# 1 的平方是 1
# 3 的平方是 9# 应用四:创建数字列表
# 示例1:创建一个从0到4的数字列表
# 使用列表推导式
numbers = [i for i in range(5)]
print(numbers)
# 或者使用list()函数
numbers = list(range(5))
print(numbers)
# [0, 1, 2, 3, 4]
# [0, 1, 2, 3, 4]# 示例2:创建一个从1到10的数字列表(包含10)
numbers = [i for i in range(1, 11)]
print(numbers)
# [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]# 示例3:创建一个从10到0的递减数字列表
numbers = [i for i in range(10, -1, -1)]
print(numbers)
# [10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]# 示例4:创建一个步长为2的数字列表
numbers = [i for i in range(0, 10, 2)]
print(numbers)
# [0, 2, 4, 6, 8]# 示例5:创建一个包含特定范围内偶数的列表
# 例如,包含2到18之间的所有偶数
numbers = [i for i in range(2, 19, 2)]
print(numbers)
# [2, 4, 6, 8, 10, 12, 14, 16, 18]# 应用五:随机选择或打乱顺序
# 示例1:从列表中随机选择一个元素
import random
# 假设我们有一个列表
my_list = [1, 2, 3, 4, 5]
# 使用random.choice从列表中随机选择一个元素
random_element = random.choice(my_list)
print(random_element)  # 输出可能是列表中的任何一个元素# 示例2:打乱列表的顺序(随机排序)
import random
# 假设我们有一个列表
my_list = [1, 2, 3, 4, 5]
# 使用random.shuffle打乱列表的顺序
random.shuffle(my_list)
print(my_list)  # 输出是一个被打乱顺序的列表# 示例3:从range()生成的数字中随机选择一个
import random
# 使用range()生成一个数字范围
numbers = list(range(1, 11))  # 创建一个包含 1 到 10 的列表
# 从这个列表中随机选择一个元素
random_number = random.choice(numbers)
print(random_number)  # 输出可能是1到10之间的任何一个数字# 示例4:打乱由range()生成的数字列表的顺序
import random
# 使用range()生成一个数字范围,并转换为列表
numbers = list(range(1, 11))  # 创建一个包含1到10的列表
# 打乱这个列表的顺序
random.shuffle(numbers)
print(numbers)  # 输出是一个被打乱顺序的列表,包含1到10的数字# 应用六:数学计算
# 示例1:计算数字列表的和
total = 0
for i in range(1, 6):  # 迭代从1到5的数字total += i  # 将每个数字加到total上
print("1到5的和是:", total)
# 1到5的和是: 15# 示例2:计算数字列表的平方和
total = 0
for i in range(1, 6):  # 迭代从1到5的数字total += i ** 2  # 将每个数字的平方加到total上
print("1到5的平方和是:", total)
# 1到5的平方和是: 55# 示例3:计算阶乘
factorial = 1
n = 5
for i in range(1, n + 1):  # 迭代从1到n的数字factorial *= i  # 将每个数字乘到factorial上
print(f"{n} 的阶乘是:", factorial)
# 5 的阶乘是: 120# 示例4:计算斐波那契数列的前几项
def fibonacci(n):a, b = 0, 1fib_sequence = [a]for _ in range(n):a, b = b, a + bfib_sequence.append(b)return fib_sequence
print(fibonacci(10))  # 打印斐波那契数列的前10项
# [0, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]# 示例5:使用range()进行数学模拟(例如计算抛硬币正面朝上的次数)
import random
num_trials = 100  # 抛硬币的次数
num_heads = 0  # 正面朝上的次数
for _ in range(num_trials):if random.choice(['heads', 'tails']) == 'heads':num_heads += 1
print(f"抛了 {num_trials} 次硬币,正面朝上的次数是: {num_heads}")
# 抛了 100 次硬币,正面朝上的次数是: 53# 应用七:生成器表达式和列表解析
# 示例1:使用生成器表达式
# 生成器表达式,用于生成0到9的平方
squares = (i ** 2 for i in range(10))
# 遍历生成器并打印结果
for square in squares:print(square)
# 0
# 1
# 4
# 9
# 16
# 25
# 36
# 49
# 64
# 81# 示例2:使用列表解析
# 列表解析,用于生成0到9的平方列表
squares = [i ** 2 for i in range(10)]
# 打印列表
print(squares)
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]# 示例3:带有条件的列表解析
# 列表解析,用于生成0到19之间所有偶数的平方列表
even_squares = [i ** 2 for i in range(20) if i % 2 == 0]
# 打印列表
print(even_squares)
# [0, 4, 16, 36, 64, 100, 144, 196, 256, 324]# 示例4:使用range()的步长与列表解析
# 列表解析,用于生成从10开始,步长为3,到31结束的数字列表
numbers = [i for i in range(10, 32, 3)]
# 打印列表
print(numbers)
# [10, 13, 16, 19, 22, 25, 28, 31]# 示例5:结合range()和str.format()使用列表解析
# 列表解析,用于生成一个字符串列表,其中包含从1到5的数字的字符串表示形式,格式为 'Number: X'
strings = ['Number: {}'.format(i) for i in range(1, 6)]
# 打印列表
print(strings)
# ['Number: 1', 'Number: 2', 'Number: 3', 'Number: 4', 'Number: 5']# 应用八:图形和动画
# 示例1:使用matplotlib绘制一个简单的正弦波
import matplotlib.pyplot as plt
import numpy as np
# 使用 numpy 的 linspace 来生成更平滑的数据点(类似于range的连续版本)
x = np.linspace(0, 2 * np.pi, 100)  # 类似于range(0, int(2*np.pi*100), 1)但更平滑
y = np.sin(x)
# 绘制图形
plt.plot(x, y)
plt.title('Simple Sine Wave')
plt.xlabel('x')
plt.ylabel('sin(x)')
plt.grid(True)
plt.show()# 示例2:使用matplotlib.animation创建一个简单的动画
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
fig, ax = plt.subplots()
# 初始化数据
xdata, ydata = [], []
ln, = plt.plot([], [], 'ro')
def init():ax.set_xlim(0, 2 * np.pi)ax.set_ylim(-1, 1)return ln,
def update(frame):xdata.append(frame / 100)  # 使用类似于range的效果,但这里是连续的ydata.append(np.sin(frame / 100))ln.set_data(xdata, ydata)return ln,
# 创建一个动画对象,每帧更新一次数据
ani = animation.FuncAnimation(fig, update, frames=np.linspace(0, 2 * np.pi, 128),init_func=init, blit=True)
# 显示动画
plt.show()# 应用九:算法和数据结构
# 示例1:使用二分查找算法
def binary_search(arr, target):low = 0high = len(arr) - 1while low <= high:mid = (low + high) // 2if arr[mid] == target:return midelif arr[mid] < target:low = mid + 1else:high = mid - 1return -1
# 假设我们有一个已排序的数组
arr = [2, 3, 4, 10, 40]
target = 10
# 使用 range 来模拟数组索引的迭代
for i in range(len(arr)):# 这里只是为了演示,实际上我们不会这样遍历数组进行二分查找print(f"Current index: {i}, Value: {arr[i]}")
# 使用二分查找算法查找目标值
result = binary_search(arr, target)
print(f"Target {target} found at index {result} if result != -1 else 'not found'.")
# Current index: 0, Value: 2
# Current index: 1, Value: 3
# Current index: 2, Value: 4
# Current index: 3, Value: 10
# Current index: 4, Value: 40
# Target 10 found at index 3 if result != -1 else 'not found'.# 示例2:实现简单的冒泡排序算法
def bubble_sort(arr):n = len(arr)for i in range(n):for j in range(0, n - i - 1):  # 最后一个元素已经是最大的,不需要再比较if arr[j] > arr[j + 1]:arr[j], arr[j + 1] = arr[j + 1], arr[j]  # 交换元素
# 示例数组
arr = [64, 34, 25, 12, 22, 11, 90]
print("Original array is:", arr)
# 对数组进行冒泡排序
bubble_sort(arr)
print("Sorted array is:", arr)
# Original array is: [64, 34, 25, 12, 22, 11, 90]
# Sorted array is: [11, 12, 22, 25, 34, 64, 90]# 示例3:使用动态规划解决斐波那契数列问题
def fibonacci(n):if n <= 1:return ndp = [0] * (n + 1)dp[0], dp[1] = 0, 1for i in range(2, n + 1):dp[i] = dp[i - 1] + dp[i - 2]return dp[n]
# 示例:计算斐波那契数列的第168项
print(fibonacci(168))
# 57602132235424755886206198685365216# 示例4:使用栈实现逆序列表
class Stack:def __init__(self):self.stack = []def push(self, item):self.stack.append(item)def pop(self):if not self.is_empty():return self.stack.pop()return Nonedef is_empty(self):return len(self.stack) == 0
# 使用栈逆序列表
def reverse_list_using_stack(lst):stack = Stack()for item in lst:stack.push(item)reversed_lst = []while not stack.is_empty():reversed_lst.append(stack.pop())return reversed_lst
# 示例列表
lst = [1, 2, 3, 4, 5]
print("Original list:", lst)
reversed_lst = reverse_list_using_stack(lst)
print("Reversed list:", reversed_lst)
# Original list: [1, 2, 3, 4, 5]
# Reversed list: [5, 4, 3, 2, 1]# 应用十:科学计算和数据分析
# 示例1:计算数列和
# 计算从1到n的自然数之和
def sum_of_series(n):total = 0for i in range(1, n + 1):total += ireturn total
# 示例
n = 10
print(f"The sum of numbers from 1 to {n} is {sum_of_series(n)}")
# The sum of numbers from 1 to 10 is 55# 示例2:使用NumPy进行数组操作
import numpy as np
# 创建一个从0到9的数组
arr = np.arange(10)
# 计算每个元素的平方
squared_arr = arr ** 2
print(squared_arr)
# [ 0  1  4  9 16 25 36 49 64 81]# 示例3:计算数列的平均值
# 使用range生成数列,并计算平均值
def average_of_series(n):total = sum(range(1, n + 1))return total / n
# 示例
n = 10
print(f"The average of numbers from 1 to {n} is {average_of_series(n)}")
# The average of numbers from 1 to 10 is 5.5# 示例4:使用Pandas进行数据分析
import pandas as pd
# 使用range生成索引和列名
index = range(1, 6)  # 索引从1到5
columns = ['A', 'B', 'C']
# 创建一个示例数据帧
data = {'A': [1, 2, 3, 4, 5],'B': [10, 20, 30, 40, 50],'C': [100, 200, 300, 400, 500]}
df = pd.DataFrame(data, index=index)
# 显示数据帧
print(df)
# 使用range迭代数据帧的行
for i in range(len(df)):row = df.iloc[i]print(f"Row {i + 1}: {row.values}")
#    A   B    C
# 1  1  10  100
# 2  2  20  200
# 3  3  30  300
# 4  4  40  400
# 5  5  50  500
# Row 1: [  1  10 100]
# Row 2: [  2  20 200]
# Row 3: [  3  30 300]
# Row 4: [  4  40 400]
# Row 5: [  5  50 500]# 示例5:在图形中标记数据点
import matplotlib.pyplot as plt
# 假设我们有一些x和y数据点
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]
# 绘制散点图
plt.scatter(x, y)
# 使用range生成标签并添加到图中
for i in range(len(x)):plt.text(x[i], y[i], f'({x[i]}, {y[i]})', ha='center', va='bottom')
plt.show()
1-2、VBA:
略,待后补。
2、推荐阅读:

2-1、Python-VBA函数之旅-property()函数

Python算法之旅:Algorithm

Python函数之旅:Functions

个人主页:https://blog.csdn.net/ygb_1024?spm=1010.2135.3001.5421 

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

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

相关文章

JavaSE——异常(1/2)-认识异常(介绍,异常的体系,了解如何解决异常)、自定义异常(自定义异常的种类,实例演示)

目录 认识异常 介绍 异常的体系 了解如何解决异常 自定义异常 自定义异常的种类 实例演示 认识异常 介绍 什么是异常&#xff1f; 异常就是代表程序出现的问题。 比如&#xff1a; int[] arr {10,20,30}; System.out.println(arr[3]);System.out.println(10 / 0); …

VS调试技巧

1. 什么是bug bug本意是“昆⾍”或“⾍⼦”&#xff0c;现在⼀般是指在电脑系统或程序中&#xff0c;隐藏着的⼀些未被发现的缺陷或 问题&#xff0c;简称程序漏洞。 “Bug” 的创始⼈格蕾丝赫柏&#xff08;Grace Murray Hopper&#xff09;&#xff0c;她是⼀位为美国海军⼯…

【痕迹】QQ+微信朋友圈和聊天记录分析工具1.0.3

【痕迹】QQ微信朋友圈和聊天记录分析工具1.0.3 &#xff08;1&#xff09;纯Python语言实现&#xff0c;使用Flask后端&#xff0c;本地分析&#xff0c;不上传个人数据。 &#xff08;2&#xff09;数据可视化分析QQ、微信聊天记录&#xff0c;提取某一天的聊天记录与大模型…

精准读取CSV/Excel数据 - 灵活指定行列范围的 Python 解决方案

文章目录 源代码项目简介导入相关库__file_exists 装饰器函数的签名和注释主要功能的实现运行演示读取 Excel 文件 源代码 https://github.com/ma0513207162/PyPrecip。pyprecip\reading\read_api.py 路径下。 项目简介 PyPrecip 是一个专注于气候数据处理的 Python 库&#xf…

Spring 当中的Bean 作用域

Spring 当中的Bean 作用域 文章目录 Spring 当中的Bean 作用域每博一文案1. Spring6 当中的 Bean的作用域1.2 singleton 默认1.3 prototype1.4 Spring 中的 bean 标签当中scope 属性其他的值说明1.5 自定义作用域&#xff0c;一个线程一个 Bean 2. 总结:3. 最后&#xff1a; 每…

蓝桥杯练习系统(算法训练)ALGO-947 贫穷的城市

资源限制 内存限制&#xff1a;256.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s 问题描述 某城市有n个小镇&#xff0c;编号是1~n。由于贫穷和缺乏城市规划的人才&#xff0c;每个小镇有且仅有一段单向的公路通往别…

【数学】三角函数相关

目录 一、三角函数 二、诱导公式 1.介绍 2.示例 三、其它重要公式 ID&#xff1a;HL_5461 一、三角函数 对于如图所示三角形&#xff1a; 三角函数公式表达其它关系正弦函数/余弦函数/正切函数余切函数正割函数余割函数 二、诱导公式 1.介绍 奇变偶不变&#xff0c;符…

微信小程序 手机号授权登录

手机号授权登录 效果展示 这里面用的是 uni-app 官方的登录 他支持多端发布 https://zh.uniapp.dcloud.io/api/plugins/login.html#loginhttps://zh.uniapp.dcloud.io/api/plugins/login.html#login 下面是代码 <template><!-- 授权按钮 --><button v-if&quo…

Spring+Vue的卓越托管中心管理系统的设计与实现+PPT+论文+讲解+售后

相比于以前的传统手工管理方式&#xff0c;智能化的管理方式可以大幅降低运营人员成本&#xff0c;实现了卓越托管中心管理系统的标准化、制度化、程序化的管理&#xff0c;有效地防止了卓越托管中心管理系统的随意管理&#xff0c;提高了信息的处理速度和精确度&#xff0c;能…

DI-engine强化学习入门(十又二分之一)如何使用RNN——数据处理、隐藏状态、Burn-in

一、数据处理 用于训练 RNN 的 mini-batch 数据不同于通常的数据。 这些数据通常应按时间序列排列。 对于 DI-engine, 这个处理是在 collector 阶段完成的。 用户需要在配置文件中指定 learn_unroll_len 以确保序列数据的长度与算法匹配。 对于大多数情况&#xff0c; learn_un…

神经网络极简入门

神经网络是深度学习的基础&#xff0c;正是深度学习的兴起&#xff0c;让停滞不前的人工智能再一次的取得飞速的发展。 其实神经网络的理论由来已久&#xff0c;灵感来自仿生智能计算&#xff0c;只是以前限于硬件的计算能力&#xff0c;没有突出的表现&#xff0c;直至谷歌的A…

mysql workbench如何导出insert语句?

进行导出设置 导出的sql文件 CREATE DATABASE IF NOT EXISTS jeesite /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */ /*!80016 DEFAULT ENCRYPTIONN */; USE jeesite; -- MySQL dump 10.13 Distrib 8.0.28, for Win64 (x86_64) -- -- Host: 127.0…

如何使用dockerfile文件将项目打包成镜像

要根据Dockerfile文件来打包一个Docker镜像&#xff0c;你需要遵循以下步骤。这里假设你已经安装了Docker环境。 1. 准备Dockerfile 确保你的Dockerfile文件已经准备就绪&#xff0c;并且位于你希望构建上下文的目录中。Dockerfile是一个文本文件&#xff0c;包含了用户可以调…

顺序表的实现(迈入数据结构的大门)(1)

什么是数据结构 数据结构是由&#xff1a;“数据”与“结构”两部分组成 数据与结构 数据&#xff1a;如我们所看见的广告、图片、视频等&#xff0c;常见的数值&#xff0c;教务系统里的&#xff08;姓名、性别、学号、学历等等&#xff09;&#xff1b; 结构&#xff1a;当…

线性表--数据结构设计与操作

单链表 1.单链表的定义&#xff1a; typedef struct LNode{Elemtype data;struct Lnode *next; }LNode ,*LinkList;//单链表的数据结构&#xff08;手写&#xff09; #include<iostream> #include<vector> #include<algorithm>typedef int TypeElem; //单链表…

OpenAI API搭建的智能家居助手;私密大型语言模型(LLM)聊天机器人;视频和音频文件的自动化识别和翻译工具

✨ 1: GPT Home 基于Raspberry Pi和OpenAI API搭建的智能家居助手 GPT Home是一个基于Raspberry Pi和OpenAI API搭建的智能家居助手&#xff0c;功能上类似于Google Nest Hub或Amazon Alexa。通过详细的设置指南和配件列表&#xff0c;用户可以自行组装和配置这个设备&#x…

Ansible自动运维工具之playbook

一.inventory主机清单 1.定义 Inventory支持对主机进行分组&#xff0c;每个组内可以定义多个主机&#xff0c;每个主机都可以定义在任何一个或多个主机组内。 2.变量 &#xff08;1&#xff09;主机变量 [webservers] 192.168.10.14 ansible_port22 ansible_userroot ans…

使用sqlmodel实现唯一性校验

代码&#xff1a; from sqlmodel import Field, Session, SQLModel, create_engine# 声明模型 class User(SQLModel, tableTrue):id: int | None Field(defaultNone, primary_keyTrue)# 不能为空&#xff0c;必须唯一name: str Field(nullableFalse, uniqueTrue)age: int | …

Flutter弹窗链-顺序弹出对话框

效果 前言 弹窗的顺序执行在App中是一个比较常见的应用场景。比如进入App首页&#xff0c;一系列的弹窗就会弹出。如果不做处理就会导致弹窗堆积的全部弹出&#xff0c;严重影响用户体验。 如果多个弹窗中又有判断逻辑&#xff0c;根据点击后需要弹出另一个弹窗&#xff0c;这…

大数据Scala教程从入门到精通第五篇:Scala环境搭建

一&#xff1a;安装步骤 1&#xff1a;scala安装 1&#xff1a;首先确保 JDK1.8 安装成功: 2&#xff1a;下载对应的 Scala 安装文件 scala-2.12.11.zip 3&#xff1a;解压 scala-2.12.11.zip 4&#xff1a;配置 Scala 的环境变量 在Windows上安装Scala_windows安装scala…