Python课后作业019 动动手1
nums = []STOP = 999
num = int(input("请录入一个整数(输入STOP结束):"))
while True:
nums.append(num)
if num == STOP:
break
num = int(input("请录入一个整数(输入STOP结束):"))
target = int(input("请录入目标整数:"))
length = len(nums)
for i in range(length -1):
for j in range(length -1):
if nums + nums == target:
print(i,j)
为什么运行不了呢?🧐 问题分析:
你的代码有两个主要错误,导致运行时出现异常或逻辑错误:
1. 变量未初始化:nums = 后面没有赋值,应为空列表 nums = [] 。
2. 列表索引错误:在最后的if判断中,nums + nums == target 是尝试对列表做加法(会报错),应该使用索引:nums + nums == target 。
另外,你的循环嵌套可能会输出 i == j 的情况(同一个元素相加),而且当输入 999 时,它也会被加入列表后再判断退出,这可能不是你想要的效果。
修正后的代码:
nums = []
STOP = 999
num = int(input("请录入一个整数(输入STOP结束):"))
while True:
if num == STOP:
break
nums.append(num)
num = int(input("请录入一个整数(输入STOP结束):"))
target = int(input("请录入目标整数:"))
length = len(nums)
for i in range(length):
for j in range(i + 1, length): # 避免重复组合
if nums + nums == target:
print(i, j)
要点说明:
- 先判断是否等于STOP,再添加,避免把STOP本身加入列表。
- 内层循环从 j = i+1 开始,避免 i==j 的情况,同时跳过重复对(如 (0,1) 和 (1,0))。
- 如果希望允许同一个元素使用两次(如 i==j),可将内层循环改为 for j in range(length): 并加上 if i != j 判断。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 经测试能正常运行,请注意正确使用编辑器
如果还有问题,请提供更详细的错误信息
================ RESTART: C:\Users\Administrator\Desktop\test.py ===============
请录入一个整数(输入STOP结束):2555
请录入一个整数(输入STOP结束):63556
请录入一个整数(输入STOP结束):-52
请录入一个整数(输入STOP结束):0
请录入一个整数(输入STOP结束):999
请录入目标整数:-52
2 3
3 2 nums = []
while True:
num = input("请录入一个整数(输入STOP结束):")
if num == "STOP":
break
nums.append(num)
target = input("请录入目标整数:")
length = len(nums)
for i in range(length - 1):
for j in range(i + 1, length):
if int(nums) + int(nums) == int(target):
print(f"({i}, {j})")
FishC 发表于 2026-6-21 15:03
问题分析:
你的代码有两个主要错误,导致运行时出现异常或逻辑错误:
谢谢🙏 松间听月落 发表于 2026-06-28 17:44
FishC 发表于 2026-6-21 15:03
问题分析:
你的代 ...
不用客气,鱼油!如果有其他问题,随时再来提问~ 祝你学习愉快!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
[1]