鱼C论坛

 找回密码
 立即注册
查看: 2049|回复: 3

[已解决]课后作业不懂的地方

[复制链接]
发表于 2022-9-7 19:07:24 | 显示全部楼层 |阅读模式

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

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

x
import random

nums = []

for i in range(10000):
    x = random.randint(1, 65535)
    nums.append(x)

target = int(input("请录入目标整数:"))

isFind = False
n = len(nums)
for i in range(n):
    for j in range(i+1, n):
        if nums[i] + nums[j] == target:
            print([i, j])
            isFind = True

if isFind == False:
    print("找不到!")



大佬可以解析一下这段代码吗?看不怎么懂
最佳答案
2022-9-7 21:18:20
本帖最后由 wisone 于 2022-9-7 21:20 编辑
import random     #导入 random模块

nums = []             #定义一个空的 nums 列表

for i in range(10000):       # i 取值 从0-9999  即循环10000次
    x = random.randint(1, 65535)        # 返回 一个 1-65535 之间的整数并赋值给x
    nums.append(x)            #将x添加到空列表。
#以上循环就是生成一个 10000个整数组成的nums列表

target = int(input("请录入目标整数:"))   # 输入一个目标整数

isFind = False          #设置找到标识为 假
n = len(nums)         #获得nums列表的成员个数,即10000
for i in range(n):      # i 从0 - 9999
    for j in range(i+1, n):  #j 从1-9999
        if nums[i] + nums[j] == target:  #如果nums列表中任意两个成员之和等于所输入目标整数
            print([i, j])                              #输出两个成员的下标
            isFind = True                        # 设置找到标识为 真
# 以上循环就是查找nums列表中任意两成员之和等于所输入目标整数的下标并输出
if isFind == False:        #判断找到标识 是否被重置  即上述循环没有找到符合条件的下标
    print("找不到!")      #没有重置(没有符合相加等于目标输入整数的下标) 输出 “找不到!”
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-9-7 20:55:05 | 显示全部楼层
就是看看随机生成的数,有没有两数之和等于输入的数,如果有的话,就把所有的这些数的位置打印出来,如果没有的话,就打印没有
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-7 21:10:22 | 显示全部楼层
import random

# 创建随机数
nums = []
for i in range(10000):
    x = random.randint(1, 65535)
    nums.append(x)



# 输入目标值
target = int(input("请录入目标整数:"))

# 此变量为标志变量,初始化为 False 表示在 nums 列表中未找到两数和为目标值的,反之为 True 表示找到两数和为目标值的数
isFind = False

# 获取整个随机列表的长度
n = len(nums)

# 遍历整个随机数列表,开始查找两数和等于目标值的数
# 第一个 for 循环从 0 索引位置元素开始,第二个 for 循环从 1 索引位置开始(不允许自身加自身,否则可以也从 0 开始)
# 直到第二个 for 循环结束,若找到符合条件的数,那么标志变量(isFind)赋值为 True,说明此次随机数组中至少有一个被找到
# 等到 for 循环结束时,只要找到一个数,就不会执行最后的 if ,因为 isFind 参数被赋值为 True 
for i in range(n):
    for j in range(i+1, n):
        if nums[i] + nums[j] == target:
            print([i, j])
            isFind = True

if isFind == False:
    print("找不到!")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-7 21:18:20 | 显示全部楼层    本楼为最佳答案   
本帖最后由 wisone 于 2022-9-7 21:20 编辑
import random     #导入 random模块

nums = []             #定义一个空的 nums 列表

for i in range(10000):       # i 取值 从0-9999  即循环10000次
    x = random.randint(1, 65535)        # 返回 一个 1-65535 之间的整数并赋值给x
    nums.append(x)            #将x添加到空列表。
#以上循环就是生成一个 10000个整数组成的nums列表

target = int(input("请录入目标整数:"))   # 输入一个目标整数

isFind = False          #设置找到标识为 假
n = len(nums)         #获得nums列表的成员个数,即10000
for i in range(n):      # i 从0 - 9999
    for j in range(i+1, n):  #j 从1-9999
        if nums[i] + nums[j] == target:  #如果nums列表中任意两个成员之和等于所输入目标整数
            print([i, j])                              #输出两个成员的下标
            isFind = True                        # 设置找到标识为 真
# 以上循环就是查找nums列表中任意两成员之和等于所输入目标整数的下标并输出
if isFind == False:        #判断找到标识 是否被重置  即上述循环没有找到符合条件的下标
    print("找不到!")      #没有重置(没有符合相加等于目标输入整数的下标) 输出 “找不到!”
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-28 18:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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