mlucy3636 发表于 2021-1-11 11:19:21

请教:19课课后练习,动动手2

本帖最后由 mlucy3636 于 2021-1-11 14:19 编辑

题目:最后,回忆前面我们学习过的 random 模块,生成一个由 10000 个整数(范围是 1 ~ 65535)构成的随机列表,目标值 target 由用户输入。


{:9_218:}

if nums + nums == target:   为什么不能写成 if i + j ==target:? 不是更符合题目,两个数的和是target?

qq1151985918 发表于 2021-1-11 11:29:34

代码虽然并不全面但也看得出来,nums明显是那个随机列表么,而且这代码 的if 还有写问题,列表怎么能够和元素相加?
应该是 if nums + nums == target:吧
print()就是打印所有能够满足列表内两个元素相加等于target的值的列表元素索引值

而你说的 if i + j 是是没有意义的,这两个就是穷举的列表元素的索引值,并不是列表内元素值

qq1151985918 发表于 2021-1-11 14:42:23

import random#加载模块
nums = []#空列表
for i in range(10000):#循环10000次
    x = random.randint(1, 65535)# x 随机取1-65535之间的值
    nums.append(x)#将x添加进 nums 列表
target = int(input("请录入目标整数:")) #输入target目标整数
isfind = False#设定目标判断参数,找到后重新赋值 True
n = len(nums)#没什么必要,因为很明确 nums 有10000个元素,直接用就可以

for i in range(n): # n == 10000执行循环10000次,i 取值 0-9999
    for j in range(i+1, n): # j == i + 1,就是找nums中第i位以后的元素
      if nums + nums == target:#如果两元素相加等于目标整数
            print( , nums ,' + ' , nums ,' = ', target)
            # 可以再后边再加一些看起来更明确
            isfind = True#判断参数重新赋值
if isfind == False:#如果判断参数没经过重新赋值
    print("找不到!")#那么表示没有找到任意两个元素相加等于目标整数,打印 找不到
页: [1]
查看完整版本: 请教:19课课后练习,动动手2