鱼C论坛

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

[已解决]新手求助

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

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

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

x
  1. def change(a,b):
  2.         i = 0
  3.     for i in b:
  4.         i = i + b
  5.     a = a - i
  6.     return a
  7. x = 100
  8. price = [8, 17, 22]
  9. print(change(x,price))
复制代码

为什么执行这段代码后报错了?
最佳答案
2021-8-5 21:43:17
于熙顿 发表于 2021-8-5 21:41
是不是因为变量j事先没被赋值所以可以用变量j与列表b相加

我并没有拿j跟b相加

  1. i  = 0 #赋值i
  2. for j in b: #从b中取j
  3.     i = i + j #i+j,没有出现j+b
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-8-5 21:24:57 | 显示全部楼层
  1. def change(a,b):
  2.     i = 0
  3.     for j in b:
  4.         i = i + j
  5.     a = a - i
  6.     return a
  7. x = 100
  8. price = [8, 17, 22]
  9. print(change(x,price))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-5 21:25:10 | 显示全部楼层
  1. i = i + b
复制代码

你一个整型和一个相加不了,可以和列表里的元素相加
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

我的意思是想让i分别跟列表中的每个数相加 为啥变成整型跟列表相加了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

我感觉我的代码跟你的也一样 为啥我的就不行呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

滥用变量i了
加的话不能加b
我把你的i变成了j,就不一样了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-5 21:30:37 | 显示全部楼层
不一样呀,j是列表里的元素,你直接加上一个列表,那当然不行
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

i和j不都是变量么  既然变量i用了有问题那为啥j也作为一个变量就没问题
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-5 21:38:40 | 显示全部楼层
于熙顿 发表于 2021-8-5 21:35
i和j不都是变量么  既然变量i用了有问题那为啥j也作为一个变量就没问题
  1.         i = 0
  2.     for i in b:
  3.         i = i + b
复制代码

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

i = i +b ,i是数字,b是列表
小甲鱼最新课程 -> https://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相加
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-5 21:43:17 | 显示全部楼层    本楼为最佳答案   
于熙顿 发表于 2021-8-5 21:41
是不是因为变量j事先没被赋值所以可以用变量j与列表b相加

我并没有拿j跟b相加

  1. i  = 0 #赋值i
  2. for j in b: #从b中取j
  3.     i = i + j #i+j,没有出现j+b
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-5 21:45:35 | 显示全部楼层
  1. l = [1,2,3,4]
  2. for i in l:
  3.     print("我是元素",i)
  4.     print("我是列表",l)
复制代码

你执行这个段代码,你就知道,i和l的区别
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-5 21:48:18 | 显示全部楼层
py的变量是不用提前声明
  1. i = 1
  2. print("我类型现在是", type(i))
  3. i = 'abc'
  4. print("我类型现在是", type(i))
复制代码

而且你赋不同类型值也会相改变
小甲鱼最新课程 -> https://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覆盖
不是按顺序执行的吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

区别明白了 但是我的问题还没明白
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

for循环相当于给i重新赋值,每一次都重置掉了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

是呀,但是后来者为王呀,后面的一定会将前面的值覆盖掉
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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


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

使用道具 举报

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

我终于想明白了 谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

抱歉我才看到  看明白了谢谢  只可惜最佳答案不能设置多个楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-20 17:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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