猫史档案馆


【Python连续剧--4】for循环与range函数(干货好多doge)

用户:碳碳查看:1463 回复:32 评论:90 创建时间:2020-08-02T11:26:19


也许有很多萌(juan)新(lao)的程序有着这样的问题

如果我们想要打印十次“碳”的话

那就只能把print写十遍:

print("碳")
print("碳")
print("碳")
print("碳")
print("碳")
print("碳")
print("碳")
print("碳")
print("碳")
print("碳")
#水帖成功(dooooge!)

虽然复制粘贴也是很方便的

但是如果我们要写100遍甚至上千上万遍的话

复制粘贴似乎也不是很好用了呢(恼)

这时候我们就可以用到这个语句:

for i in a:
    运行语句

这个语句的意思呢是用i来遍历a

简单点就是每次循环时用i来代替a中的每一个元素,知道i为最后一个元素为止

这里套一下付费课程里面的一个例子:i就是售票员,a是买票的游客,每个游客都要去售票员那里去买票

现在我们来讲一下经常跟for循环搭配的好兄弟range函数:

print(range(10))

我们可以看到运行的结果是:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

所以range函数就生成了一个从0到9的序列(也可以叫列表)

(PS:列表是Python中最基础的多元素数据类型之一)

这里我们要注意的是:

range()函数中只有一个参数时

它生成的序列(列表)含有0但是不含有参数

range()函数中有两个参数时

它会生成一个从第一个参数到第二个参数的序列(含有第一个参数不含有第二个参数)

range()函数中有三个参数时

与含有两个参数类似,但是序列中的每个元素之间的差为第三个参数

(这个非常重要要当重难点记的嗷)

接下来我们来举几个例子:

print(range(10))
print(range(2, 5))
print(range(0, 100, 20))

而运行的结果是:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[2, 3, 4]
[0, 20, 40, 60, 80]

在掌握了range()函数之后呢我们就可以让range()函数与for循环结合在一起用辣:

for i in range(5):
    print("碳")

然后运行的结果就是:

碳
碳
碳
碳
碳

所以这样的话就可以省略很多彳亍代码辣

(这里碳小声告诉你们一个技巧嗷)

(当有一段代码是以下语句的形式的话:)

for i in range(x):
    运行语句

(这个代码的意思就是执行x回for循环中的运行语句嗷)

像i这样的只是一个被定义的变量的名字,大多数的字符都可以当这个i(i可以不调用,而且for循环外也可以用)

比如下面的代码运行时:

for i in range(5):
    print(i)
print(i)

运行结果就4:

0
1
2
3
4
4

于是这节课就到这里结束辣

课后作业:

1.写出一个可以执行50次且第一个数字是1每次打印的数字之间的差都是3的程序(选做)

2.试着开发脑洞自己做出一个有趣的程序(选做)

 

更新一下之前写的预告:

预告:

大概在学到5集还是6集的时候某人会举行一个Python程序设计大赛嗷

代码范围的话就是某人教程帖里面的内容

大家可以把做好的程序放在评论区

三天过后碳会选出名次的嗷~

奖励:

第一名:250源码币(+50创意奖励)+某人做的获奖证书+包邮编程猫绝版猪年公仔

第二名:150源码币(+50创意奖励)+某人做的获奖证书

第三名:100源码币(+25创意奖励)+某人做的获奖证书

幸运选手:50源码币

幸运选手抽奖方法:(用random库的randint函数随机生成一个整数并且抽取)

这里奉上猪年公仔的自拍:

center_image

(不知道是某碳的拍照技术太渣还是电脑的原因总觉得有点暗)

如果要报名的话就在本帖下面的置顶评论里面打出来自己的名字嗷

 


回复

上一页第 1 页 / 共 2 页下一页
碳碳

 ↓ 报 名 名 单 ↓

点赞1


评论

哦不是吧还没人

报名

报名awa

报名

报名!!!!!感觉自己一定会赢

报名

报名嗷

报名

我我我我我我我我我我我我我我我我我我我我我报名

具体什么时候

报名

报名


碳碳

我项我自己

点赞0


评论


March_12thMarch_12th

这样如何?

import turtle
import random
turtle = turtle.Pen()
turtle.speed(0)
turtle.hideturtle()
n = random.randint(4, 7)
color = ['red', 'orange', 'blue', 'green', 'yellow', 'purple']
length = 400
while n:
    for i in range(n):
        turtle.pencolor(random.choice(color))
        turtle.forward((length / n))
        turtle.left((360 / n))

点赞0


评论

我们还没学到turtle哎(疑惑)


一个STUB用户_6923702一个STUB用户_6923702

妈妈妈妈,今天我打了大佬的脸

center_image

点赞0


评论

注意下面

range生成的是range对象,既不是列表(Python2患者?)也不是迭代器

王 八编辑器是js写的,肯定有疏忽

或者不是疏忽识别的

什么鬼

谁说range生成的是列表/快乐

哦不是吧我学的Python3不是这样的(写帖子的时候还在王 八编辑器里面试了的

看来王 八编辑器还是不是很好用

233

type()呢?


一个STUB用户_6923702一个STUB用户_6923702

应该没人知道可以这样循环吧

import sys
sys.setrecursionlimit(8)
def a():
    print('看我循环!!')
    try:
        a()
    except:
        return
a()
#循环次数=上面的递归深度-4

点赞1


评论

别,立马碾压我的水平(汗

递归函数……………… 最好注意点,别一下子搞个无限递归,内存分分钟爆炸

那是你电脑不行(doge)

好像Python有规定的递归次数吧...

不知道啊


NirvanaOvONirvanaOvO

切~八百年前就学会了/doge

点赞0


评论

然鹅你就不看看我的好玩模式

(下方)

他是教给萌新的

切~我也就学了一百几十节课而已(doooooge!

对对对

你确定???RE懂吗?REQUESTS懂么?PYGAL懂吗?

正则表达式爬虫画图

没看到狗头你就输了(doge)


一个STUB用户_6923702一个STUB用户_6923702

第五期出了吗(可爱大眼睛)/doge

点赞1


评论

还霉有啊(doge)

555我要看第五集!!!

明天更!明天必须更!(确信)

上午很有可能

坐等(可爱)

马上去更嗷(确信)

耶!!!!!

啊这出现了点问题我发不了帖子了(恼)

马上去找官方解决


啸猫啸猫

while True:
    input()

你完全不知道input可以放外面

点赞1


评论

???

不知道你在说神魔

嗯。是的,可以放外面,只是不能记录返回值

昂,其实是不能直接放在外面滴

如果放外面,while循环内部得放个pass

为什么我就不需要pass呢?

系统就会报错


lsk666666lsk666666

e…………

现在萌新的门槛都这麽高了吗??!!

点赞2


评论

hhhhhhh


宏图大志EB9j宏图大志EB9j

奇怪奇怪奇怪...

range()生成的东西看起来并不是列表...

print(type(range(1, 10)))
# 运行结果:<class "range">

但,这东西可以用来迭代

for i in range(1, 10 + 1) :
    print(i)

# 运行结果:1
# 2
# 3
# 4
# 5
# 6
# 7
# 8
# 9
# 10

好怪...

点赞1


评论

本来range()函数生成的是列表

但是i这个变量重复赋值为列表中的每一个函数

锁以打印出来的是纯数字昂(也许是这样解释的吧)

是,range不是list不是tuple,是一个单独的类,打印出来为range(……)。详见https://shequ.codemao.cn/community/307007

不是列表啦!

https://shequ.codemao.cn/community/329846

那我的王·八编辑器怕不是假的(doge)

才怪,range类型

这叫遍历!

对啊???(雾隐之术)

2.x的确是list, 但是3.x就是序列了


Moira屑玖iMoira屑玖i

顶顶

点赞1


评论

dd


86135clc86135clc

range函数返回的是range类型

点赞2


评论

对对对海龟编辑器有问题


_Rise__Rise_

序列和列表不是一个东西……

点赞1


评论

序列包括列表,但列表不包括序列

我傻了都(雾隐之术)


LogicMLogicM

感谢你让我知道了奆的读音(doge)

点赞1


评论

老语文带师了(doge)


LogicMLogicM

i = 1
b = 1
print(b)
for i in range(151):
    b = (b + 1)
    if (b % 3 == 1):
        print(b)
#是个屑没错了

点赞1


评论

可以了可以了(doge)

b = (b + 1)可以写成b + = 1(doge)


虐心工作间虐心工作间

额……楼下绝对多此一举,而且还是错的

for i in range(1, 3 * 50 + 2, 3):
    print(i)

点赞1


评论

所以写152他不香吗(doge)

对的吧?

range()有三个数值耶。。。


ArchitectsArchitects

az

点赞0


评论


Chengxuyee_已退Chengxuyee_已退

复制粘贴很好用啊

先复制一个

粘贴到10个的时候在复制这10个

用这10个粘贴10次变成100个

在复制这100个

……emotion_doge

点赞0


评论


不起眼的账号不起眼的账号

奆...

点赞0


评论


一个STUB用户_6923702一个STUB用户_6923702

Hey......

点赞0


评论


stickmanstickman

JUST TRY THIS CODE(TITTER)

while True:
   print("电脑崩屏预备……")

点赞0


评论

不会的,只是程序崩溃


一块蒙脱石一块蒙脱石

for应该是这样

for(int i;i<10;i++)

是吧?

点赞0


评论

你这不是PYTHON的,是C的

作者的printf打错了(doge)

c语言?

doge


云游box3der尖头叉子云游box3der尖头叉子

foriinrange(50,3) print(1)

点赞1


评论


任尔东西南北风(代码BIT)任尔东西南北风(代码BIT)

print("[doge]")
print("帖子里怎么那么多doge")

点赞1


评论


小苏打_小苏打_

print([i*3+1 for i in range(50)])

有比这更短的吗 :(

 

<doge /><狗头保命 />

点赞0


评论

map(lambda i:i*3+1,range(50))

列表解析真不错

#qwq.py print([i*3+1 for i in range(50)]) #awa.py import qwq 就9个字母(doge)

麻烦了 print(range(1,151,3))

窝草,列表生成式


孤言孤言

center_image

点赞2


评论

确实,range就是个生成器

有可能他的Py版本是2.x呢

py2.x版本的print语句不长教程那样


OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO

我扩展一下

print(range(3))

会显示:

range(0,10)

点赞0


评论


一块蒙脱石一块蒙脱石

print('O',end='')
while True:
    print('h',end='')

点赞0


评论


该账号已被封禁该账号已被封禁

《某 人 的》

点赞0


评论


疯狂的ren疯狂的ren

for i in range(1,100):
    print(i,end' ')

点赞0


评论

少了个等于号,应该是: for i in range(1,100): print(i, end=' ')

哦,当时没注意

这么久了,你是怎么挖到的