鱼C论坛

 找回密码
 立即注册
查看: 1601|回复: 12

[已解决]课后作业19讲 random 模块问题

[复制链接]
发表于 2022-1-20 09:40:34 | 显示全部楼层 |阅读模式

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

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

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

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

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

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

其中第一个for  i in range(10000):啥意思呀?循环中没有参数i??
最佳答案
2022-1-20 10:02:05

range() 函数有三个参数:start、end、step 其中 stast 默认值为 0; step 默认值为 1

该就是创建一个从 start ~ end-1 步长间隔为 step 的整数序列,当 range 只填入一个数值时,此时的参数是被赋值给 end 的

所以这里 range(10000) 相当于创建从 0 ~ 9999 步长为 1 的 整数序列。在配合 for 循环,遍历了这整个 整数序列

但是 循环体中 没有用到 i 变量, 说明这里循环只是为了用于重复次数,即从代码中可以看出,每次循环生成随机数后加入列表中去,则最终会有 10000 个随机数被加入列表中去
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-1-20 09:47:47 | 显示全部楼层
循环一万次  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-1-20 09:49:56 | 显示全部楼层
只是往列表中添加一万个数据而已   参数i没什么用  更简洁的理解就是  我循环一次   就加一个数据到列表中   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-1-20 09:52:59 | 显示全部楼层
for  i in range(10000)要结合循环体看,就是将他的循环体执行10000次, x = random.randint(1,65535)就是在1到65535随机取1个整数,执行10000次就是如题的生成10000 个整数(范围是 1 ~ 65535)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-1-20 10:02:05 | 显示全部楼层    本楼为最佳答案   

range() 函数有三个参数:start、end、step 其中 stast 默认值为 0; step 默认值为 1

该就是创建一个从 start ~ end-1 步长间隔为 step 的整数序列,当 range 只填入一个数值时,此时的参数是被赋值给 end 的

所以这里 range(10000) 相当于创建从 0 ~ 9999 步长为 1 的 整数序列。在配合 for 循环,遍历了这整个 整数序列

但是 循环体中 没有用到 i 变量, 说明这里循环只是为了用于重复次数,即从代码中可以看出,每次循环生成随机数后加入列表中去,则最终会有 10000 个随机数被加入列表中去
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-1-20 10:05:18 | 显示全部楼层
有啊!您看 for i in range(10000) 这里不是含有变量 i 吗?
for 循环 搭配的 range(x,y) 表示生成一串由 x ~ y 组成的可迭代对象 ,比如:
for each in range(0,5):
    print(each)
它就会返回:
0
1
2
3
4
注意,里面并不包含 5 这个数,但包含 0 这个数,
而其中 它的第 1 个参数是可以省略不写的,如:
for each in range(5):
    print(each)
也是和刚才一样的效果:
0
1
2
3
4
这里没有设置第一个参数,它就会默认设置为 0 ,
所以就等价于:range(0,5)
所以这里您写的 for i in range(10000) 就是表示:
循环从 0 ~ 10000 的数,不包含 10000,
也就是循环 10000 次其间包含的语句,语法如下:
for 变量 in 可迭代对象:
    代码
所以这里包含的代码:
x = random.randint(1,65535)
nums.append(x)
就会被执行 10000 遍,
注意,range() 语句 的第二个参数是不可省略的!
所以这个 for 循环有时候不一定非要用到里面的变量名 i,
有时候只是单纯的想把程序执行 10000 遍而已,
只不过是因为 for 循环写起来更简洁高效:
这是 while 循环:
i = 0
while i < 5:
     print(i)
     i += 1

0
1
2
3
4

而同样的效果,for 循环可以这样写:
for i in range(5):
    print(i)

0
1
2
3
4

所以正是因为它的简洁性,所以有时只是单纯想用它做循环,不去调用里面每次的 1.


懂了吗?不懂可以再问!懂了就给个好评呗!!!

打字不易!请给个好评!!!
兄弟!请给个好评!求求了!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2022-1-20 10:07:11 | 显示全部楼层
在吗?请给个好评!
打字不易!兄弟!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2022-1-20 10:08:51 | 显示全部楼层
给个好评!求求了!

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-1-20 12:26:29 | 显示全部楼层
python爱好者. 发表于 2022-1-20 10:05
有啊!您看 for i in range(10000) 这里不是含有变量 i 吗?
for 循环 搭配的 range(x,y) 表示生成一串由  ...

哥们 你真棒!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-1-20 13:46:01 | 显示全部楼层
感谢兄弟好评!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-1-20 13:46:48 | 显示全部楼层
虽然不是最佳,
但依然很感激您的夸奖!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-1-20 14:12:32 | 显示全部楼层
python爱好者. 发表于 2022-1-20 13:46
虽然不是最佳,
但依然很感激您的夸奖!

第一次发求助帖 不太了解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-1-20 14:23:28 | 显示全部楼层
没事!兄弟!
不是你的错误!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-29 09:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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