【发布时间】:2022-01-26 06:53:44
【问题描述】:
a = int(input("How many pizza would you like to order? ")) #line 1
def count_ordered_pizza():
if a==0:
print("Okay see u next time!")
elif a==1:
print(str(a)+ " pizza ordered.")
elif a>1:
print(str(a)+ " pizzas ordered.")
else:
print("Sorry that's impossible")
def reorder():
user_said= str(input('Do you wish to order again? State Y/N. '))
while user_said != "N":
a = int(input("How many pizza would you like to order? ")) #line 16
count_ordered_pizza()
reorder()
print('Bye!')
如果我执行此操作,reorder() 函数(第 16 行)中的 a 不会替换 count_ordered_pizza() 函数(第 1 行)中的 a。这是为什么呢?
我认为它可以替换它们,因为变量已被覆盖,但如果我这样做:
def reorder():
user_said= str(input('Do you wish to order again? State Y/N. '))
while user_said != "N":
a = int(input("How many pizza would you like to order? ")) #line 16
if a==0:
print("Okay see u next time!")
elif a==1:
print(str(a)+ " pizza ordered.")
elif a>1:
print(str(a)+ " pizzas ordered.")
else:
print("Sorry that's impossible")
reorder()
print('Bye!')
它显示了正确的值。有人可以帮我吗?提前谢谢!
【问题讨论】:
-
"如果我执行此操作,
reorder()函数(第 16 行)中的a不会替换count_ordered_pizza()函数(第 1 行)中的a。这是为什么呢? "当然不是,它们是两个不同的变量。一个是全局变量,另一个是reorder中的局部变量 -
你可以在
reorder中改变全局a,但你不应该。在函数之间共享数据的更好方法是将输入作为参数提供并返回值。另一种选择是使用一个类来封装状态
标签: python function variables while-loop