鱼C论坛

 找回密码
 立即注册
查看: 2318|回复: 16

变量可否用循环的方式指定?

[复制链接]
发表于 2021-1-20 13:02:05 | 显示全部楼层 |阅读模式

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

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

x
比如需要20个变量,a1-a20,如何才能用简单的方式申明变量和赋值呢

用列表的方式看似可以,但实际使用中还是被当成了字符串而不是变量
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-20 13:26:23 | 显示全部楼层
例:
给a1~a20赋值1~20
  1. A = [i for i in range(1,21)]
  2. for i in range(20):
  3.     exec('a'+str(A[i])+'='+str(A[i]))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-20 13:27:55 | 显示全部楼层
列表会被当成字符串?列表多方便
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-20 13:41:56 | 显示全部楼层
列表存值,用到的时候再取出来赋值给新变量。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-20 15:32:11 | 显示全部楼层
  1. for i in range(1, 21):
  2.     locals()['a%d'%i] = i
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-20 20:40:46 | 显示全部楼层

你这个方法出来的a1-a20的变量不需要赋值而是在其他地方使用,变量如何在其他地方拿出来?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-20 20:41:17 | 显示全部楼层
逃兵 发表于 2021-1-20 13:26
例:
给a1~a20赋值1~20

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

使用道具 举报

 楼主| 发表于 2021-1-20 20:43:42 | 显示全部楼层
qq1151985918 发表于 2021-1-20 13:27
列表会被当成字符串?列表多方便

ch=['ch1','ch2','ch3','ch4','ch5','ch6','ch7','ch8','ch9','ch10','ch11','ch12','ch13','ch14','ch15',]
for item_choice in range(15):
      ch[item_choice]

这样的可以得到ch1,ch2,但这个ch都是个字符串
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-20 22:14:32 | 显示全部楼层

不要赋值指的是什么呢,指向None?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-21 11:43:49 | 显示全部楼层
cdzjf 发表于 2021-1-20 20:40
你这个方法出来的a1-a20的变量不需要赋值而是在其他地方使用,变量如何在其他地方拿出来?

python是动态语言,变量必须赋值才能定义。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-21 15:08:58 | 显示全部楼层
逃兵 发表于 2021-1-20 22:14
不要赋值指的是什么呢,指向None?

简单说变量的值可以通过循环累加,
但我要多个变量,名字也是用累加的方法,这个我还没有看到什么好的办法,如果有100个变量不可能都用手打100个变量啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-21 15:13:01 | 显示全部楼层
冬雪雪冬 发表于 2021-1-21 11:43
python是动态语言,变量必须赋值才能定义。

ch=['ch1','ch2','ch3','ch4','ch5','ch6','ch7','ch8','ch9','ch10','ch11','ch12','ch13','ch14','ch15',]
        for item_choice in range(15):
            che[item_choice] = tk.Checkbutton(root, text=tx[item_choice], variable=ch_bu[item_choice], command=t.ch[item_choice])
            che[item_choice].place(x=1100, y=y1)
            y1+=20

类似我这样的,这样执行就出错,AttributeError: 'xxx' object has no attribute 'ch'

t.ch[item_choice])这里就出错了,他认为我的这个ch1,是个字符串,不是变量
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-21 16:01:11 | 显示全部楼层
cdzjf 发表于 2021-1-21 15:08
简单说变量的值可以通过循环累加,
但我要多个变量,名字也是用累加的方法,这个我还没有看到什么好的办 ...

  1. for i in range(1,20):
  2.     exec('a'+str(i)+'='+str(i))
复制代码

  1. for i in range(1, 21):
  2.     locals()['a%d'%i] = i
复制代码


这俩方法都行,你只要修改range的第二个参数,改成多少就有多少个变量

实例:
  1. >>> a1
  2. 1
  3. >>> a2
  4. 2
  5. >>> a3
  6. 3
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-21 21:19:09 | 显示全部楼层
cdzjf 发表于 2021-1-21 15:13
ch=['ch1','ch2','ch3','ch4','ch5','ch6','ch7','ch8','ch9','ch10','ch11','ch12','ch13','ch14','ch15 ...

的确,'ch1'是字符串
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-23 22:34:57 | 显示全部楼层
逃兵 发表于 2021-1-21 16:01
这俩方法都行,你只要修改range的第二个参数,改成多少就有多少个变量

实例:

请问这样以后,变量a1-a19如何使用?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-23 22:35:33 | 显示全部楼层
冬雪雪冬 发表于 2021-1-21 21:19
的确,'ch1'是字符串

这样有办法解决吗,难道要一个一个手动定义?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-24 09:32:14 | 显示全部楼层
cdzjf 发表于 2021-1-23 22:35
这样有办法解决吗,难道要一个一个手动定义?

只能用locals()的字典赋值,或在程序中写一个py文件,再import
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-22 17:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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