鱼C论坛

 找回密码
 立即注册
查看: 1456|回复: 7

[已解决]求大佬看看 19回动手第一题 代码看着跟答案差不多 但就是得不到正确结果

[复制链接]
发表于 2023-5-1 22:31:00 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 mumei2018 于 2023-5-1 22:42 编辑

nums = []

IsInput = True

while IsInput == True:
    e_a = input("enter a number(enter S to stop):")

    if e_a != 'S':

        nums.append(e_a)

        print(nums)

    else:
        IsInput = False
        
        
target = int(input("enter a target:"))

IsFind = False

n = len(nums)
for i in range(n):
    for j in range(i + 1, n):
        if nums + nums[j] == target:
            print([i, j])
            IsFind = True

if IsFind == False:

    print('not found.')


运行结果如下

= RESTART: C:/Users/Administrator/AppData/Local/Programs/Python/Python311/hw/019b1a.py
enter a number(enter S to stop):80
['80']
enter a number(enter S to stop):20
['80', '20']
enter a number(enter S to stop):S
enter a target:100
not found.
19b1.png
最佳答案
2023-5-1 22:37:27
本帖最后由 sfqxx 于 2023-5-1 22:38 编辑

根据代码运行结果,可以发现没有找到两个数的和为目标值,提示 "not found." 。这说明程序中存在问题,具体来说应该是在计算两个数的和时出了错误。

分析代码可以发现,在循环中计算两个数的和时使用了错误的加法操作 nums + nums[j],而实际上应该是 int(nums) + int(nums[j])。因此需要将代码中的这一行

  1. [/i][/b][b][i]if nums + nums[j] == target:
复制代码

改为

  1. [/i][/b][b][i]if int(nums[i]) + int(nums[j]) == target:[/i][/i][/b][b][i]
复制代码

另外,需要注意将输入的字符串转换为整数类型,可以使用 int() 函数实现。最终修改后的代码如下所示:


  1. nums = []

  2. IsInput = True

  3. while IsInput == True:
  4.     e_a = input("enter a number(enter S to stop):")
  5.     if e_a != 'S':
  6.         nums.append(int(e_a))
  7.         print(nums)
  8.     else:
  9.         IsInput = False
  10.         break

  11. target = int(input("enter a target:"))

  12. IsFind = False

  13. n = len(nums)
  14. for i in range(n):
  15.     for j in range(i + 1, n):
  16.         if int(nums[i]) + int(nums[j]) == target: # 修改此处
  17.             print([i, j])
  18.             IsFind = True

  19. if IsFind == False:
  20.     print('not found.')
复制代码

经过修改后,程序就能够正确地输出符合要求的结果。希望对你有所帮助!
有用请设置最佳答案
19b1.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-1 22:37:27 | 显示全部楼层    本楼为最佳答案   
本帖最后由 sfqxx 于 2023-5-1 22:38 编辑

根据代码运行结果,可以发现没有找到两个数的和为目标值,提示 "not found." 。这说明程序中存在问题,具体来说应该是在计算两个数的和时出了错误。

分析代码可以发现,在循环中计算两个数的和时使用了错误的加法操作 nums + nums[j],而实际上应该是 int(nums) + int(nums[j])。因此需要将代码中的这一行

  1. [/i][/b][b][i]if nums + nums[j] == target:
复制代码

改为

  1. [/i][/b][b][i]if int(nums[i]) + int(nums[j]) == target:[/i][/i][/b][b][i]
复制代码

另外,需要注意将输入的字符串转换为整数类型,可以使用 int() 函数实现。最终修改后的代码如下所示:


  1. nums = []

  2. IsInput = True

  3. while IsInput == True:
  4.     e_a = input("enter a number(enter S to stop):")
  5.     if e_a != 'S':
  6.         nums.append(int(e_a))
  7.         print(nums)
  8.     else:
  9.         IsInput = False
  10.         break

  11. target = int(input("enter a target:"))

  12. IsFind = False

  13. n = len(nums)
  14. for i in range(n):
  15.     for j in range(i + 1, n):
  16.         if int(nums[i]) + int(nums[j]) == target: # 修改此处
  17.             print([i, j])
  18.             IsFind = True

  19. if IsFind == False:
  20.     print('not found.')
复制代码

经过修改后,程序就能够正确地输出符合要求的结果。希望对你有所帮助!
有用请设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-1 22:44:37 | 显示全部楼层
sfqxx 发表于 2023-5-1 22:37
根据代码运行结果,可以发现没有找到两个数的和为目标值,提示 "not found." 。这说明程序中存在问题,具体 ...

谢谢你   修改那一部分num在我的代码里是有的   我发的图里面也是有的  发帖输入的时候也是有的 不知为啥帖子里不显示  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-1 22:45:19 | 显示全部楼层
mumei2018 发表于 2023-5-1 22:44
谢谢你   修改那一部分num在我的代码里是有的   我发的图里面也是有的  发帖输入的时候也是有的 不知为啥 ...

还是有问题?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-1 22:48:42 | 显示全部楼层
sfqxx 发表于 2023-5-1 22:37
根据代码运行结果,可以发现没有找到两个数的和为目标值,提示 "not found." 。这说明程序中存在问题,具体 ...

改成int就成功运行了 谢谢你啦!  不过发帖的时候 不知为啥老有一部分字符不显示
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-1 22:50:36 | 显示全部楼层
sfqxx 发表于 2023-5-1 22:37
根据代码运行结果,可以发现没有找到两个数的和为目标值,提示 "not found." 。这说明程序中存在问题,具体 ...

你的num[ i ]的[ i ]变了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-1 22:50:42 | 显示全部楼层
mumei2018 发表于 2023-5-1 22:48
改成int就成功运行了 谢谢你啦!  不过发帖的时候 不知为啥老有一部分字符不显示


很正常,因为倾斜的字体就是用(i)(把括号替换成[],下同),而您的程序也出现了(i)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-1 22:51:58 | 显示全部楼层
mumei2018 发表于 2023-5-1 22:48
改成int就成功运行了 谢谢你啦!  不过发帖的时候 不知为啥老有一部分字符不显示

不客气,解决了就行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-3 11:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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