鱼C论坛

 找回密码
 立即注册
查看: 36|回复: 1

Python课后作业019 动动手1

[复制链接]
发表于 7 小时前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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[i] + nums[j] == target:
            print(i,j)
为什么运行不了呢?🧐
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 7 小时前 | 显示全部楼层
问题分析:  
你的代码有两个主要错误,导致运行时出现异常或逻辑错误:  

1. 变量未初始化nums = 后面没有赋值,应为空列表 nums = [] 。  
2. 列表索引错误:在最后的if判断中,nums + nums == target 是尝试对列表做加法(会报错),应该使用索引:nums[i] + nums[j] == target 。  

另外,你的循环嵌套可能会输出 i == j 的情况(同一个元素相加),而且当输入 999 时,它也会被加入列表后再判断退出,这可能不是你想要的效果。  

修正后的代码:  

  1.   
  2. nums = []  
  3. STOP = 999  
  4. num = int(input("请录入一个整数(输入STOP结束):"))  
  5. while True:  
  6.     if num == STOP:  
  7.         break  
  8.     nums.append(num)  
  9.     num = int(input("请录入一个整数(输入STOP结束):"))  

  10. target = int(input("请录入目标整数:"))  

  11. length = len(nums)  
  12. for i in range(length):  
  13.     for j in range(i + 1, length):   # 避免重复组合  
  14.         if nums[i] + nums[j] == target:  
  15.             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 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-6-21 22:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表