个人费用根据用户输入而定,但我的代码不会添加它们来创建总费用1 当它运行时,它保持变量totalcost相同。
它应根据我的函数中的公式计算总成本。我无法弄清楚为什么这不起作用。
import sys*
#VARIABLES
total_EntrancePrice=0
costcoins=0
totalcost=0
#PEOPLE IN PARTY
print("How many people are included in your party?")
num_of_people= int(input())
#ENTRANCE FEE
entrance_fee_price = 10
def get_total_EntrancePrice():
total_EntrancePrice=num_of_people*entrance_fee_price
print("Your total price with %s people is %s dollars" %(num_of_people, total_EntrancePrice))
get_total_EntrancePrice()
yes = "yes"
yes1 = "Yes"
no = "no"
no1 = "No"
#COINS?
coins = str(input("Would you like to buy coins?:"))
if coins == yes or yes1:
print("Okay great! Each coin costs 20 cents. How many coins would you like?")
coinsbought=int(input())
priceforcoin=.20
def get_costcoins():
costcoins=coinsbought*priceforcoin
print("Your total price of %s coins is %s dollars" %(coinsbought, costcoins))
get_costcoins()
elif coins ==no or no1:
print("No worries, it's not mandatory to buy some")
else:
print("Im sorry, I dont understand your response")
#TOTAL COST WITH TAX
tax=total_EntrancePrice+costcoins/10
def get_totalcost():
totalcost=total_EntrancePrice+costcoins+tax
print("Your total for today with %s people and %s coins is %s dollars. Thank you for visitiing our Lost at Sea location. Have a wonderful day!" %(num_of_people, coinsbought,totalcost))
get_totalcost()
答案 0 :(得分:0)
这是范围的问题,如果这是您第一次遇到它,可能会造成混淆。我自己也不是经验丰富的编码员,所以请原谅任何技术上的不准确之处。我将尝试解释问题的主旨。
所以,举一个简单的例子:
var = 1
def change():
var = 2
change()
print(var)
打印1
这种奇怪行为的原因是,当change
中的var发生变化时,它被限制在函数内部。
当您打印var
时,您将其打印在函数外部,或者在新变量的范围之外。如果你这样做了:
var = 1
def change():
var = 2
print(var)
change()
输出为2
,但函数外部的var
仍为1。
有多种方法可以解决您的问题。一个是使用(令人讨厌的)全局变量。另一种方法是使用return
将变量设置为“OUTSIDE”范围内的函数的输出。这就是我的意思。
var = 1
def change():
return 2
var = change()
print(var)
打印2
返回,如果您没有遇到它,则返回输出的函数。当我说var = change()
时,python会执行以下操作:“所以,var
将等于此事change
,当我运行更改时,我得到此输出2
因此var = 2
。
在您的情况下,您将计算函数中的成本,然后返回它并将此输出分配给函数外部的变量。
在您自己的代码中尝试并实现它!