EasonShan 发表于 2020-4-10 23:01:24

关于变量问题

name=,列表中的F,i,s,h变量没有定义就会报错,为什么for i in range(5)中 i 没有定义变量就不会报错?

冬雪雪冬 发表于 2020-4-10 23:05:14

在for中每次循环都相对应给i赋值

i = 0
i = 1
i = 2
i = 3
i = 4

悠悠2264 发表于 2020-4-10 23:06:15

本帖最后由 悠悠2264 于 2020-4-10 23:18 编辑

F,i,s,h都是列表的元素,不是变量。for i in range(5)的i会每次都赋值好

sunrise085 发表于 2020-4-10 23:08:18

前者,你是要使用该变量,然而没有定义就使用,当然会报错啦

后者,这里就是定义啊,for每次循环分别将0~4赋值给i啊

估计前者你应该是打算写name=['F','i','s','h']这样Fish就是四个字符常量了

bigbird0419 发表于 2020-4-10 23:18:19

编译器会自动检测类型,前提是编译器得知道你的意图,且是唯一的确定的意图,你给的例子中,name如果不初始化,则编译器搞不清你要让name是字符串、数字、列表,后者i编译器能唯一确定它是[0,5)的整数。
补充说明一下,编译器是很智能的,如 for i in range(5),i是整数,如果 for i in name,则i是你定义的列表name中的一个元素。

Tashmo 发表于 2020-4-11 07:02:50

前者你需要在定义时明确的告诉编辑器你列表里的东西是什么,如果你给的是字符串,需要"   "(加双引号),如果是变量,则需要在使用这个变量之前,给这个变量定义,否则编辑器无法识别并将它视为不存在。
后者for i in XXX:这个语法python本身就对他进行了定义, i 是一个变量 你也可以给他改名为其他的,无论是什么名字,编辑器都能识别。

zltzlt 发表于 2020-4-11 08:15:05

F i s h 都是之前定义好的变量,for i in range(5) 中的 i 是 for 循环赋值的,i 等于 0 ~ 4 中的每一个值
页: [1]
查看完整版本: 关于变量问题