鱼C论坛

 找回密码
 立即注册
查看: 2566|回复: 6

019的全局变量

[复制链接]
发表于 2020-2-19 16:29:08 | 显示全部楼层 |阅读模式

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

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

x
def discounts(price,rate):
   
    global old_price
    old_price = 50
    final_price = price *rate
    print('修改后old_price的值是1:',old_price)
    return final_price

old_price = float(input('请输入原价:'))
rate = float(input('请输入折扣率:'))
new_price = discounts(old_price,rate)
print('修改后old_price的值是2:',old_price)
print('打折后的价格是:',new_price)

运行结果是:
请输入原价:100
请输入折扣率:0.08
修改后old_price的值是1: 50
修改后old_price的值是2: 50
打折后的价格是: 8.0

为什么打折后的结果是8.0,而不是4.0呢?old_price的值不是变成50了呢
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-2-19 16:37:07 | 显示全部楼层
您好
您在
  1. new_price = discounts(old_price,rate)
复制代码

  1. print('打折后的价格是:',new_price)
复制代码

之间并没有对new_price进行操作呀,所以他就不变。

源代码修改为
  1. def discounts(price,rate):
  2.    
  3.     global old_price
  4.     old_price = 50
  5.     final_price = price *rate
  6.     print('修改后old_price的值是1:',old_price)
  7.     return final_price

  8. old_price = float(input('请输入原价:'))
  9. rate = float(input('请输入折扣率:'))
  10. new_price = discounts(old_price,rate)
  11. print('修改后old_price的值是2:',old_price)
  12. new_price = discounts(old_price,rate)
  13. print('打折后的价格是:',new_price)
复制代码


希望能帮到你!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-19 16:50:40 | 显示全部楼层
还是不太明白,new_price不是要调用discounts函数吗?discounts函数里的old_price不是定义成全局变量50了吗?为什么最终结果还是8呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-19 16:54:32 | 显示全部楼层
minshow 发表于 2020-2-19 16:50
还是不太明白,new_price不是要调用discounts函数吗?discounts函数里的old_price不是定义成全局变量50了吗 ...

你在discount没有写操作new_price啊
不信可以找找discount函数里哪里有new_price
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-19 21:13:28 | 显示全部楼层
qiuyouzhi 发表于 2020-2-19 16:54
你在discount没有写操作new_price啊
不信可以找找discount函数里哪里有new_price

不好意思,我还是难以理解。
我难以理解的点是,我在函数内部已经定义了old_price为全局变量,值为50。但函数外的old_price我输入的是100,那在调用的过程中,100不是应该被50覆盖了吗?new_prince不是应该是50*0.08吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-19 22:18:45 | 显示全部楼层
minshow 发表于 2020-2-19 21:13
不好意思,我还是难以理解。
我难以理解的点是,我在函数内部已经定义了old_price为全局变量,值为50。 ...

discount是在输入old_price之后再覆盖的,你可以看顺序
也就是说,是50覆盖了100,不是100覆盖了50
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-20 11:42:45 | 显示全部楼层
discounts(old_price,rate)中变量名已变为内部名称price,是不再是old_price
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-22 15:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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