鱼C论坛

 找回密码
 立即注册
查看: 1827|回复: 21

[已解决]新手求助

[复制链接]
发表于 2021-8-5 21:21:29 | 显示全部楼层 |阅读模式

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

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

x
def change(a,b):
        i = 0
    for i in b:
        i = i + b
    a = a - i
    return a
x = 100
price = [8, 17, 22]
print(change(x,price))
为什么执行这段代码后报错了?
最佳答案
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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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 = [8, 17, 22]
print(change(x,price))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-5 21:25:10 | 显示全部楼层
 i = i + b
你一个整型和一个相加不了,可以和列表里的元素相加
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-5 21:28:01 | 显示全部楼层
大马强 发表于 2021-8-5 21:25
你一个整型和一个相加不了,可以和列表里的元素相加

我的意思是想让i分别跟列表中的每个数相加 为啥变成整型跟列表相加了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-5 21:28:34 | 显示全部楼层

我感觉我的代码跟你的也一样 为啥我的就不行呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-5 21:29:41 | 显示全部楼层
于熙顿 发表于 2021-8-5 21:28
我感觉我的代码跟你的也一样 为啥我的就不行呢

滥用变量i了
加的话不能加b
我把你的i变成了j,就不一样了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-5 21:30:37 | 显示全部楼层
不一样呀,j是列表里的元素,你直接加上一个列表,那当然不行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-5 21:35:16 | 显示全部楼层
逃兵 发表于 2021-8-5 21:29
滥用变量i了
加的话不能加b
我把你的i变成了j,就不一样了

i和j不都是变量么  既然变量i用了有问题那为啥j也作为一个变量就没问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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是列表
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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相加
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-5 21:45:35 | 显示全部楼层
l = [1,2,3,4]
for i in l:
    print("我是元素",i)
    print("我是列表",l)
你执行这个段代码,你就知道,i和l的区别
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-5 21:48:18 | 显示全部楼层
py的变量是不用提前声明
i = 1
print("我类型现在是", type(i))
i = 'abc'
print("我类型现在是", type(i))
而且你赋不同类型值也会相改变
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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覆盖
不是按顺序执行的吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-5 22:03:00 | 显示全部楼层
大马强 发表于 2021-8-5 21:48
py的变量是不用提前声明

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

区别明白了 但是我的问题还没明白
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-5 22:03:00 | 显示全部楼层
于熙顿 发表于 2021-8-5 22:02
为啥for语句会把i=0覆盖
不是按顺序执行的吗

for循环相当于给i重新赋值,每一次都重置掉了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-5 22:03:37 | 显示全部楼层
于熙顿 发表于 2021-8-5 22:02
为啥for语句会把i=0覆盖
不是按顺序执行的吗

是呀,但是后来者为王呀,后面的一定会将前面的值覆盖掉
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-5 22:07:13 | 显示全部楼层
于熙顿 发表于 2021-8-5 22:03
区别明白了 但是我的问题还没明白


你的问题不是为啥会报错吗
你的本意是用i加上列表的每一个值
但你是写成i加上列表,就好像你要娶个妹子,你不会去娶她老妈吧
for j in b:
     i + = j  # j是b的元素
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-5 22:13:58 | 显示全部楼层
逃兵 发表于 2021-8-5 21:43
我并没有拿j跟b相加

我终于想明白了 谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

抱歉我才看到  看明白了谢谢  只可惜最佳答案不能设置多个楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-13 17:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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