有一组连续正整数,随机乱序后生成一组数据后,小蓝不小心删掉了其中一个数,已知所删掉的这个数不是这组数据中最小的也不是最大的,现在请你编写Python程序帮助小蓝找到删除的那个数
时间: 2024-05-08 11:17:41 浏览: 141
思路:由于原数列是连续正整数,所以可以计算出原数列的和,然后将乱序后的数据求和,两者之差就是删除的那个数。
代码如下:
```python
def find_missing_num(nums):
n = len(nums) + 1 # 原数列长度
total = (1 + n) * n // 2 # 原数列的和
sum_nums = sum(nums) # 乱序后数据的和
return total - sum_nums
# 测试
nums = [1, 3, 5, 2, 6, 7, 8, 9]
print(find_missing_num(nums)) # 输出:4
```
解释:原数列为1,2,3,4,5,6,7,8,9,乱序后的数据为1,3,5,2,6,7,8,9,所删除的数为4。
相关问题
定义一个一维的整数数组,其中存储随机生成的100个整数,从小到大进行排序,输出排序后的结果。
可以使用以下代码实现:
```python
import random
# 生成随机整数数组
arr = [random.randint(1, 100) for i in range(100)]
# 排序
arr.sort()
# 输出排序后的结果
print(arr)
```
其中,`random.randint(1, 100)` 用于生成 1 到 100 之间的随机整数,`arr.sort()` 用于对数组进行排序,最后使用 `print(arr)` 输出排序后的结果。
模拟考试试卷的乱序处理,安排一个一维数组存放20个不重复的整数,产生一个新的数组存放原来数组元素乱序处理后的数据。分别打印出新旧数组
以下是用 Python 实现的代码:
```python
import random
# 生成不重复的随机整数数组
arr = random.sample(range(1, 101), 20)
# 打印原来的数组
print("原来的数组:", arr)
# 打乱数组元素并存放到新数组
new_arr = arr.copy()
random.shuffle(new_arr)
# 打印新数组
print("新数组:", new_arr)
```
代码解析:
1. 首先通过 `random.sample` 函数生成一个长度为 20 的不重复随机整数数组 `arr`,其中 `range(1, 101)` 表示从 1 到 100 中取数。
2. 接着打印出原来的数组 `arr`。
3. 通过将 `arr` 复制一份作为 `new_arr`,再使用 `random.shuffle` 函数对 `new_arr` 进行乱序处理,即将其中的元素随机打乱顺序。
4. 最后打印出新数组 `new_arr`。
注意:以上代码中使用了 `copy` 方法来复制数组,这是因为直接将 `arr` 赋值给 `new_arr` 的话,它们将指向同一块内存地址,此时对 `new_arr` 的修改也会影响到 `arr`。
阅读全文