這個問題在這里已經有了答案: 范圍規則的簡短描述? (9 個回答) 在函式中使用全域變數 21 個回答 昨天關閉。
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!')
如果我執行此操作,則ainreorder()函式(第 16 行)不會替換aincount_ordered_pizza()函式(第 1 行)。這是為什么?
我認為它可以替換它們,因為變數已被覆寫,但如果我這樣做:
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!')
它顯示了正確的值。有人可以幫我嗎?先感謝您!
uj5u.com熱心網友回復:
如果global a在函式全域解釋中使用運算式, 則可以更改全域變數值
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":
global a
a = int(input("How many pizza would you like to order? ")) #line 16
count_ordered_pizza()
reorder()
print('Bye!')
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/396324.html
