课后题求助,python新版第019讲最后一题
回忆前面我们学习过的 random 模块,生成一个由 10000 个整数(范围是 1 ~ 65535)构成的随机列表,目标值 target 由用户输入。请在该数组中找出和为目标值的两个元素,并将它们的数组下标值打印出来。
import random
nums = []
k=0
while k in range(0,10):
temp = random.randint(1,20)
nums.append(temp)
k = k +1
zbd = False
target = int(input('请输入目标整数:'))
n = len(nums)# 获取 nums 的长度,并将结果存放到 n 变量中 #
for i in range(n):
for j in range(i,n):
if nums + nums == target:
print('[',i,',',j,']') # 将找到的两个元素下标值以列表的形式打印出来 #
else:
zbd = True
if zbd == True:
print('zbd')
代码问题出在哪里呢,谢谢 代码问题出在循环嵌套的部分。在找到和为目标值的两个元素时,应该立即打印它们的下标值,并且在找到后应该立即跳出循环。目前的代码在找到和为目标值的两个元素后仍然会继续执行,导致重复打印相同的下标值。此外,代码中的 zbd 变量没有正确的逻辑判断,导致无法正确判断是否找到了和为目标值的两个元素。
下面是修复后的代码:
import random
nums = []
k = 0
while k < 10000:
temp = random.randint(1, 65535)
nums.append(temp)
k += 1
target = int(input('请输入目标整数:'))
found = False
for i in range(len(nums)):
for j in range(i + 1, len(nums)):
if nums[ i] + nums == target:
print('[', i, ',', j, ']')
found = True
break
if not found:
print('zbd')
修复后的代码通过两层循环遍历列表中的元素,找到和为目标值的两个元素后,立即打印它们的下标值,并使用found变量进行标记。如果找不到和为目标值的两个元素,则打印 'zbd'。
页:
[1]