鱼C论坛

 找回密码
 立即注册
查看: 1256|回复: 4

[已解决]Python课后作业列表【1】动动手第1题

[复制链接]
发表于 2023-4-1 16:43:26 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 Mr.KKKK 于 2023-4-1 16:45 编辑

以下代码哪里错了,结果总是为'没找到'
nums = []
isinput = True

while isinput == True:
    a = input('请录入一个整数(输入STOP结束):')
    if a != 'STOP':
        nums.append(a)
    else:
        isinput = False
     
   
target = input('请输入目标整数:')
n = len(nums)
for i in range(n):
    for j in range(i+1,n):
        if nums + nums[j] == target:
            print([i,j])
        else:
            print('没找到')
     
最佳答案
2023-4-1 16:47:30
代码中有两个问题需要解决。

首先,从输入中获取的整数被存储为字符串类型,而我们需要将它们转换为整数类型。

第二个问题是,在else子句中使用print('没找到')是不正确的,

因为这会在每次循环没有找到匹配时都输出"没找到"。我们需要在循环之外检查是否找到了匹配的元素对。

请参阅修改后的代码:

  1. nums = []
  2. isinput = True

  3. while isinput == True:
  4.     a = input('请录入一个整数(输入STOP结束):')
  5.     if a != 'STOP':
  6.         nums.append(int(a))  # 将输入的数字转换为整数类型
  7.     else:
  8.         isinput = False

  9. target = int(input('请输入目标整数:'))  # 将目标整数转换为整数类型
  10. n = len(nums)
  11. found = False  # 设置一个标志来检查是否找到匹配的元素对

  12. for i in range(n):
  13.     for j in range(i + 1, n):
  14.         if nums[i] + nums[j] == target:
  15.             print([i, j])
  16.             found = True  # 如果找到匹配的元素对,将found设置为True

  17. if not found:
  18.     print('没找到')
复制代码


现在代码应该能够正常工作并给出正确的结果。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-4-1 16:47:30 | 显示全部楼层    本楼为最佳答案   
代码中有两个问题需要解决。

首先,从输入中获取的整数被存储为字符串类型,而我们需要将它们转换为整数类型。

第二个问题是,在else子句中使用print('没找到')是不正确的,

因为这会在每次循环没有找到匹配时都输出"没找到"。我们需要在循环之外检查是否找到了匹配的元素对。

请参阅修改后的代码:

  1. nums = []
  2. isinput = True

  3. while isinput == True:
  4.     a = input('请录入一个整数(输入STOP结束):')
  5.     if a != 'STOP':
  6.         nums.append(int(a))  # 将输入的数字转换为整数类型
  7.     else:
  8.         isinput = False

  9. target = int(input('请输入目标整数:'))  # 将目标整数转换为整数类型
  10. n = len(nums)
  11. found = False  # 设置一个标志来检查是否找到匹配的元素对

  12. for i in range(n):
  13.     for j in range(i + 1, n):
  14.         if nums[i] + nums[j] == target:
  15.             print([i, j])
  16.             found = True  # 如果找到匹配的元素对,将found设置为True

  17. if not found:
  18.     print('没找到')
复制代码


现在代码应该能够正常工作并给出正确的结果。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-1 16:50:10 | 显示全部楼层
代码中的问题出现在第 15 行,具体原因如下:
1. 在代码中,从输入的 a 中得到的是字符串类型,而不是整数类型,需要将其转换为整数类型才能进行数值计算。
2. 在代码中,判断 nums + nums[j] 是否等于目标整数 target 的方式是错误的,应该是 nums + nums[j] == int(target)。
3. 在代码中,如果找到了满足条件的值,应该直接打印结果并退出循环,而不是每次循环都打印一次。
修改后的代码如下所示:

  1. nums = []
  2. isinput = True
  3. while isinput == True:
  4.     a = input('请录入一个整数(输入STOP结束):')
  5.     if a != 'STOP':
  6.         nums.append(int(a))
  7.     else:
  8.         isinput = False
  9. target = input('请输入目标整数:')
  10. n = len(nums)
  11. found = False
  12. for i in range(n):
  13.     for j in range(i+1,n):
  14.         if nums[i] + nums[j] == int(target):
  15.             print([i,j])
  16.             found = True
  17.             break
  18.     if found:
  19.         break
  20. if not found:
  21.     print('没找到')
复制代码


修改后的代码中,首先将输入的字符串类型的整数转换为了整数类型,然后修改了判断条件,最后添加了一个 found 变量,用于标记是否找到了符合条件的值,如果找到了则直接退出循环并打印结果,否则在循环结束后打印 '没找到'。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-1 16:51:49 | 显示全部楼层
sfqxx 发表于 2023-4-1 16:50
代码中的问题出现在第 15 行,具体原因如下:
1. 在代码中,从输入的 a 中得到的是字符串类型,而不是整数 ...


呃被你们几个chatgpt给抢了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-1 17:50:36 | 显示全部楼层
c,凭什么不选我!!!!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-24 17:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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