鱼C论坛

 找回密码
 立即注册
查看: 2052|回复: 4

[已解决]关于全局变量

[复制链接]
发表于 2020-11-29 11:38:10 | 显示全部楼层 |阅读模式

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

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

x
如图,已经定义了一个全局变量,但最后的结果计算不正确,还是按照原来的局部变量计算,问题出在哪里?
最佳答案
2020-11-29 16:53:59
smartsy 发表于 2020-11-29 12:09
我想让最后输出的价格是67.5(90*0.75),该怎么修改呢?

用了global,那就没必要再传参了。
传进去的参数是一个原变量的拷贝,只是实参的值,不再是原变量。所以你的程序中,在discount方法内,price和old_price是两个变量,互不干扰,你是用price计算的,与old_price无关
def discount(rate):
    global old_price
    old_price=90
    final_price=old_price*rate
    print("在局部修改后的价格是%.2f"%old_price)
    return final_price
old_price=float(input("原始价格:"))
rate=float(input("折扣率:"))
new_price=discount(rate)

print("全局变量old_price现在是:%.2f"%old_price)
print("打折后的价格是:%.2f"%new_price)
19b842876d905481d85f74cc0c20bb0.png
0cc0cef9363640ba896b0894e18d6e3.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-29 11:51:32 | 显示全部楼层
问题出在你传入的参数是原始old_price,也就是80
先计算final_price后
再定义的全局变量old_price
这个时候fnal_price已经计算完了
old_price的值才被全局变量修改
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-29 11:53:37 | 显示全部楼层
        你的运行结果就是预期的啊,全局变量 old_price 在 discount() 中被修改为 90,最后在主函数中打印出来的值正是 90 啊,难道你希望它打印出别的值?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-29 12:09:26 | 显示全部楼层
我想让最后输出的价格是67.5(90*0.75),该怎么修改呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-29 16:53:59 | 显示全部楼层    本楼为最佳答案   
smartsy 发表于 2020-11-29 12:09
我想让最后输出的价格是67.5(90*0.75),该怎么修改呢?

用了global,那就没必要再传参了。
传进去的参数是一个原变量的拷贝,只是实参的值,不再是原变量。所以你的程序中,在discount方法内,price和old_price是两个变量,互不干扰,你是用price计算的,与old_price无关
def discount(rate):
    global old_price
    old_price=90
    final_price=old_price*rate
    print("在局部修改后的价格是%.2f"%old_price)
    return final_price
old_price=float(input("原始价格:"))
rate=float(input("折扣率:"))
new_price=discount(rate)

print("全局变量old_price现在是:%.2f"%old_price)
print("打折后的价格是:%.2f"%new_price)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-17 06:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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