|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
目标效果:
请输入一个整数(输入STOP结束):22
请输入一个整数(输入STOP结束):33
请输入一个整数(输入STOP结束):45
请输入一个整数(输入STOP结束):18
请输入一个整数(输入STOP结束):62
请输入一个整数(输入STOP结束):88
请输入一个整数(输入STOP结束):93
请输入一个整数(输入STOP结束):72
请输入一个整数(输入STOP结束):67
请输入一个整数(输入STOP结束):19
请输入一个整数(输入STOP结束):STOP
请录入目标整数:100
[1, 8]
我的代码
#找出目标和
nums = []
while True :
n = input("请输入一个整数(输入STOP结束):")
if n == "STOP":
break
nums.append(int(n))
target = int(input("请录入目标整数:"))
L = len(nums)
for x in range(0,L):
for y in range(0,L):
if nums[x] + nums[y] == target:
break
break
nums = []
nums.append(x)
nums.append(y)
print(nums)
输出[1,9], 我就很迷惑?
本帖最后由 jackz007 于 2023-12-24 15:48 编辑
因为寻找目标数是在循环没有完成,同时,也没有找到目标数的情况下,被强制结束的,而被打印的也只是循环被中断时的num[x] 和 num[y] 而已。
问题通过下面的代码进行指出。
- nums = []
- while True :
- n = input("请输入一个整数(输入STOP结束):")
- if n == "STOP":
- break
- nums.append(int(n))
-
- target = int(input("请录入目标整数:"))
- L = len(nums)
- for x in range(0,L):
- for y in range(0,L):
- if nums[x] + nums[y] == target:
- break
- break # 问题出在这里,在没有找到 target 的情况下,外层循环(x)执行 1 次,内层循环(y)跑完一圈的时候,就会无条件强制结束循环,而这个时候,根本就没有找到目标数 Target。
- nums = []
- nums.append(x)
- nums.append(y)
- print(nums)
复制代码
下面是我修改的代码,谨供楼主参考。
- nums = []
- while True :
- n = input("请输入一个整数(输入STOP结束):")
- if n . upper() == "STOP" : # 不光接受 'STOP' ,还应该接受 'Stop' 或者 'stop' 等
- break
- nums.append(int(n))
-
- target = int(input("请录入目标整数:"))
- r = False # 增加一个布尔变量,用来指示是否已经成功匹配到目标数,同时,也用于控制循环。
- for x in range(len(nums)) :
- for y in range(x + 1 , len(nums)) :
- if nums[x] + nums[y] == target:
- r = True # 匹配到目标数,翻转布尔变量的值
- break # 结束循环
- if r : # 根据布尔变量的值确定是否需要结束循环
- break
- if r :
- print('[', x , ',' , y ,']' , sep = '')
- else :
- print('非常抱歉,没有匹配到目标数。')
复制代码
|
|