cdzjf 发表于 2021-1-20 13:02:05

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

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

用列表的方式看似可以,但实际使用中还是被当成了字符串而不是变量

逃兵 发表于 2021-1-20 13:26:23

例:
给a1~a20赋值1~20
A =
for i in range(20):
    exec('a'+str(A)+'='+str(A))

qq1151985918 发表于 2021-1-20 13:27:55

列表会被当成字符串?列表多方便

°蓝鲤歌蓝 发表于 2021-1-20 13:41:56

列表存值,用到的时候再取出来赋值给新变量。

冬雪雪冬 发表于 2021-1-20 15:32:11

for i in range(1, 21):
    locals()['a%d'%i] = i

cdzjf 发表于 2021-1-20 20:40:46

冬雪雪冬 发表于 2021-1-20 15:32


你这个方法出来的a1-a20的变量不需要赋值而是在其他地方使用,变量如何在其他地方拿出来?

cdzjf 发表于 2021-1-20 20:41:17

逃兵 发表于 2021-1-20 13:26
例:
给a1~a20赋值1~20

不要赋值呢

cdzjf 发表于 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

这样的可以得到ch1,ch2,但这个ch都是个字符串

逃兵 发表于 2021-1-20 22:14:32

cdzjf 发表于 2021-1-20 20:41
不要赋值呢

不要赋值指的是什么呢,指向None?

冬雪雪冬 发表于 2021-1-21 11:43:49

cdzjf 发表于 2021-1-20 20:40
你这个方法出来的a1-a20的变量不需要赋值而是在其他地方使用,变量如何在其他地方拿出来?

python是动态语言,变量必须赋值才能定义。

cdzjf 发表于 2021-1-21 15:08:58

逃兵 发表于 2021-1-20 22:14
不要赋值指的是什么呢,指向None?

简单说变量的值可以通过循环累加,
但我要多个变量,名字也是用累加的方法,这个我还没有看到什么好的办法,如果有100个变量不可能都用手打100个变量啊

cdzjf 发表于 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 = tk.Checkbutton(root, text=tx, variable=ch_bu, command=t.ch)
            che.place(x=1100, y=y1)
            y1+=20

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

t.ch)这里就出错了,他认为我的这个ch1,是个字符串,不是变量

逃兵 发表于 2021-1-21 16:01:11

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

for i in range(1,20):
    exec('a'+str(i)+'='+str(i))

for i in range(1, 21):
    locals()['a%d'%i] = i

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

实例:
>>> a1
1
>>> a2
2
>>> a3
3

冬雪雪冬 发表于 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'是字符串

cdzjf 发表于 2021-1-23 22:34:57

逃兵 发表于 2021-1-21 16:01
这俩方法都行,你只要修改range的第二个参数,改成多少就有多少个变量

实例:

请问这样以后,变量a1-a19如何使用?

cdzjf 发表于 2021-1-23 22:35:33

冬雪雪冬 发表于 2021-1-21 21:19
的确,'ch1'是字符串

这样有办法解决吗,难道要一个一个手动定义?

冬雪雪冬 发表于 2021-1-24 09:32:14

cdzjf 发表于 2021-1-23 22:35
这样有办法解决吗,难道要一个一个手动定义?

只能用locals()的字典赋值,或在程序中写一个py文件,再import
页: [1]
查看完整版本: 变量可否用循环的方式指定?