鱼C论坛

 找回密码
 立即注册
查看: 1500|回复: 2

[已解决]请教:19课课后练习,动动手2

[复制链接]
发表于 2021-1-11 11:19:21 | 显示全部楼层 |阅读模式

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

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

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

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




if nums[i] + nums[j] == target:   为什么不能写成 if i + j ==target:  ? 不是更符合题目,两个数的和是target?
最佳答案
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[i] + nums[j] == target:  #如果两元素相加等于目标整数
            print([i, j] , nums[i] ,' + ' , nums[j] ,' = ', target)
            # 可以再后边再加一些看起来更明确
            isfind = True  #判断参数重新赋值
if isfind == False:  #如果判断参数没经过重新赋值
    print("找不到!")  #那么表示没有找到任意两个元素相加等于目标整数,打印 找不到
19.2.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

而你说的 if i + j 是是没有意义的,这两个就是穷举的列表元素的索引值,并不是列表内元素值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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[i] + nums[j] == target:  #如果两元素相加等于目标整数
            print([i, j] , nums[i] ,' + ' , nums[j] ,' = ', target)
            # 可以再后边再加一些看起来更明确
            isfind = True  #判断参数重新赋值
if isfind == False:  #如果判断参数没经过重新赋值
    print("找不到!")  #那么表示没有找到任意两个元素相加等于目标整数,打印 找不到
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-16 21:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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