于熙顿 发表于 2021-8-5 21:21:29

新手求助

def change(a,b):
        i = 0
    for i in b:
      i = i + b
    a = a - i
    return a
x = 100
price =
print(change(x,price))
为什么执行这段代码后报错了?

逃兵 发表于 2021-8-5 21:24:57

def change(a,b):
    i = 0
    for j in b:
      i = i + j
    a = a - i
    return a
x = 100
price =
print(change(x,price))

大马强 发表于 2021-8-5 21:25:10

i = i + b
你一个整型和一个相加不了,可以和列表里的元素相加

于熙顿 发表于 2021-8-5 21:28:01

大马强 发表于 2021-8-5 21:25
你一个整型和一个相加不了,可以和列表里的元素相加

我的意思是想让i分别跟列表中的每个数相加 为啥变成整型跟列表相加了

于熙顿 发表于 2021-8-5 21:28:34

逃兵 发表于 2021-8-5 21:24


我感觉我的代码跟你的也一样 为啥我的就不行呢

逃兵 发表于 2021-8-5 21:29:41

于熙顿 发表于 2021-8-5 21:28
我感觉我的代码跟你的也一样 为啥我的就不行呢

滥用变量i了
加的话不能加b
我把你的i变成了j,就不一样了

大马强 发表于 2021-8-5 21:30:37

不一样呀,j是列表里的元素,你直接加上一个列表,那当然不行

于熙顿 发表于 2021-8-5 21:35:16

逃兵 发表于 2021-8-5 21:29
滥用变量i了
加的话不能加b
我把你的i变成了j,就不一样了

i和j不都是变量么既然变量i用了有问题那为啥j也作为一个变量就没问题

逃兵 发表于 2021-8-5 21:38:40

于熙顿 发表于 2021-8-5 21:35
i和j不都是变量么既然变量i用了有问题那为啥j也作为一个变量就没问题

      i = 0
    for i in b:
      i = i + b
上面i = 0下面for i in b会覆盖掉上面的i = 0

i = i +b ,i是数字,b是列表

于熙顿 发表于 2021-8-5 21:41:32

逃兵 发表于 2021-8-5 21:38
上面i = 0下面for i in b会覆盖掉上面的i = 0

i = i +b ,i是数字,b是列表

是不是因为变量j事先没被赋值所以可以用变量j与列表b相加

逃兵 发表于 2021-8-5 21:43:17

于熙顿 发表于 2021-8-5 21:41
是不是因为变量j事先没被赋值所以可以用变量j与列表b相加

我并没有拿j跟b相加

i= 0 #赋值i
for j in b: #从b中取j
    i = i + j #i+j,没有出现j+b

大马强 发表于 2021-8-5 21:45:35

l =
for i in l:
    print("我是元素",i)
    print("我是列表",l)
你执行这个段代码,你就知道,i和l的区别

大马强 发表于 2021-8-5 21:48:18

py的变量是不用提前声明
i = 1
print("我类型现在是", type(i))
i = 'abc'
print("我类型现在是", type(i))
而且你赋不同类型值也会相改变

于熙顿 发表于 2021-8-5 22:02:20

逃兵 发表于 2021-8-5 21:38
上面i = 0下面for i in b会覆盖掉上面的i = 0

i = i +b ,i是数字,b是列表

为啥for语句会把i=0覆盖
不是按顺序执行的吗

于熙顿 发表于 2021-8-5 22:03:00

大马强 发表于 2021-8-5 21:48
py的变量是不用提前声明

而且你赋不同类型值也会相改变

区别明白了 但是我的问题还没明白{:10_266:}

逃兵 发表于 2021-8-5 22:03:00

于熙顿 发表于 2021-8-5 22:02
为啥for语句会把i=0覆盖
不是按顺序执行的吗

for循环相当于给i重新赋值,每一次都重置掉了

大马强 发表于 2021-8-5 22:03:37

于熙顿 发表于 2021-8-5 22:02
为啥for语句会把i=0覆盖
不是按顺序执行的吗

是呀,但是后来者为王呀,后面的一定会将前面的值覆盖掉

大马强 发表于 2021-8-5 22:07:13

于熙顿 发表于 2021-8-5 22:03
区别明白了 但是我的问题还没明白

你的问题不是为啥会报错吗
你的本意是用i加上列表的每一个值
但你是写成i加上列表,就好像你要娶个妹子,你不会去娶她老妈吧{:10_277:}
for j in b:
   i + = j# j是b的元素

于熙顿 发表于 2021-8-5 22:13:58

逃兵 发表于 2021-8-5 21:43
我并没有拿j跟b相加

我终于想明白了 谢谢

于熙顿 发表于 2021-8-5 22:15:06

大马强 发表于 2021-8-5 22:07
你的问题不是为啥会报错吗
你的本意是用i加上列表的每一个值
但你是写成i加上列表,就好像你要娶个妹 ...

抱歉我才看到看明白了谢谢只可惜最佳答案不能设置多个楼层{:10_243:}
页: [1] 2
查看完整版本: 新手求助