19讲的列表(I)课后作业最后一题不明白
最后,回忆前面我们学习过的 random 模块,生成一个由 10000 个整数(范围是 1 ~ 65535)构成的随机列表,目标值 target 由用户输入,程序结果如下:import random
nums = []
for i in range(10000):
x = random.randint(1, 65535)
nums.append(x)
target = int(input("请录入目标整数:"))
isFind = False
n = len(nums)
for i in range(n):
for j in range(i+1, n):
if nums + nums == target:
print()
isFind = True
if isFind == False:
print("找不到!")
这代码不是做出图片的效果
那图片的意思 不是生成录入的目标整数个数的列表吗? 根据题目要求,我们需要生成包含10000个随机整数的列表(范围1~65535),然后在列表中查找两个数之和等于用户输入的target。你的代码有三处需要修正:
1. 列表未初始化:应使用 nums = []
2. 元素访问错误:应使用 nums + nums
3. 输出格式错误:应输出具体索引和数值
修正后的完整代码:
import random
nums = []# 初始化空列表
for i in range(10000):
x = random.randint(1, 65535)
nums.append(x)
target = int(input("请录入目标整数:"))
isFind = False
n = len(nums)
for i in range(n):
for j in range(i+1, n):
if nums + nums == target:# 修正元素访问
print(f"nums[{i}] + nums[{j}] = {nums} + {nums} = {target}")# 添加输出
isFind = True
if not isFind:
print("找不到!")
说明:
1. 生成的列表长度固定为10000,与用户输入的target无关
2. 图片中的"请录入目标整数"是指输入要查找的和(target),不是列表长度
3. 当找到符合条件的数对时,会输出具体位置和数值
4. 如果遍历完所有组合都找不到,输出"找不到!"
运行效果示例:
请录入目标整数:80000
nums + nums = 12345 + 67655 = 80000
(实际输出取决于随机生成的数值)
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 明白了,没有理解题目,原来用户输入的target等于列表中两个数之和,打印出对应的两个数的标号 gpa5031 发表于 2025-07-29 15:35
明白了,没有理解题目,原来用户输入的target等于列表 ...
您理解得对!用户输入的 `target` 是要在列表中查找的"两数之和",需要打印出符合条件的两个元素的**索引位置**。以下是修正后的完整代码和说明:
import random
# 初始化空列表
nums = []
# 生成10000个随机整数 (1~65535)
for i in range(10000):
nums.append(random.randint(1, 65535))
target = int(input("请录入目标整数:"))
isFind = False
n = len(nums)
# 双重循环查找两数之和
for i in range(n):
for j in range(i + 1, n):# j从i+1开始避免重复
if nums + nums == target:# 关键:使用索引访问元素
print(f"nums[{i}] + nums[{j}] = {nums} + {nums} = {target}")
isFind = True
if not isFind:
print("找不到!")
### 关键修正说明:
1. **列表初始化**:`nums = []` 创建空列表
2. **元素访问**:`nums + nums` 正确访问元素(原代码遗漏索引)
3. **输出格式**:使用 `f-string` 输出索引位置和具体数值
4. **避免重复**:`j` 从 `i+1` 开始,避免同一个元素用两次
### 执行示例:
请录入目标整数:80000
nums + nums = 23456 + 56544 = 80000
nums + nums = 45678 + 34322 = 80000
### 注意事项:
1. 可能找到多组解(全部输出)
2. 列表长度固定为10000,与target无关
3. 最坏情况需要约5000万次比较(10000选2),在Python中可能需要几秒时间完成
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 记得设置最佳答案或改为已解决 某一个“天” 发表于 2025-7-29 15:55
记得设置最佳答案或改为已解决
OK
页:
[1]