鱼C论坛

 找回密码
 立即注册
查看: 4585|回复: 8

[已解决]代码异常

[复制链接]
发表于 2023-5-23 19:37:29 | 显示全部楼层
从您提供的代码中,我看不到图片,但是根据您的代码,我发现了几个可能的问题:

1. 在  while  循环中,您的代码会等待用户输入一个值或“STOP”来停止循环。但是如果用户输入了其他非数字的字符串, int(n)  将会抛出一个  ValueError ,因为这个字符串无法转换为整数。

2. 在结束  while  循环后,您再次尝试将输入转换为整数  target=int(input("请录入目标整数:")) 。如果用户输入的不是整数,这也会导致  ValueError 。

3. 在您的代码中,您试图获取字符串  n  的长度  len(n) ,这可能不是您想要的。您可能想要获取列表  num  的长度  len(num) 。

4. 您的循环  if i<len(n)-1:  不在任何循环体内,这将只会执行一次。为了遍历整个列表,您需要将此部分代码放入一个循环中。同样, if result==target:  后面的代码也只会执行一次,应该放入循环内。

下面是一个修改后的版本,应该可以解决您的问题:

  1. num=[]
  2. n=0
  3. i=0
  4. j=1

  5. while True:
  6.     try:
  7.         n=input("请录入一个整数(输入STOP结束):")
  8.         if n!="STOP":
  9.             num.append(int(n))
  10.         else:
  11.             target=int(input("请录入目标整数:"))
  12.             break
  13.     except ValueError:
  14.         print("输入的不是一个整数,请重新输入。")

  15. while i < len(num) - 1:
  16.     while j < len(num):
  17.         result=num[i]+num[j]
  18.         if result==target:
  19.             print([i,j])
  20.             break
  21.         j+=1
  22.     else:
  23.         i+=1
  24.         j=i+1
复制代码


这段代码应该可以根据用户输入的整数和目标整数,找到相加等于目标的两个整数的索引。请注意,如果列表中没有任何两个数的和等于目标整数,该程序将不会输出任何结果。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-1 19:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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