关于全局变量
如图,已经定义了一个全局变量,但最后的结果计算不正确,还是按照原来的局部变量计算,问题出在哪里? 问题出在你传入的参数是原始old_price,也就是80先计算final_price后
再定义的全局变量old_price
这个时候fnal_price已经计算完了
old_price的值才被全局变量修改 你的运行结果就是预期的啊,全局变量 old_price 在 discount() 中被修改为 90,最后在主函数中打印出来的值正是 90 啊,难道你希望它打印出别的值? 我想让最后输出的价格是67.5(90*0.75),该怎么修改呢? 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)
页:
[1]