我试图在用户提示今天的日期及其出生日期时编写代码,以确定他们的年龄。年龄将决定他们的门票价格。它会询问客户是否有优惠券,可以从他们的价格中扣除1美元。到目前为止,我已经想出了这个:
print ("Hello, welcome to Hopper's Computer Museum! To determine your enterance fee, please enter the following:")
print("Your date of birth (mm dd yyyy)")
Date_of_birth = input("--->")
print("Today's date: (mm dd yyyy)")
Todays_date = input("--->")
from datetime import date
def calculate_age(born):
Todays_date = date.today()
return today.year - born.year - ((today.month, today.day) < (born.month, born.day))
if age <= 14:
price==5.00
elif age > 15 and age < 64:
price==9.00
elif age > 65:
price==7.50
print ('Do you have a coupon (y/n)?')
Discount = input("--->")
if Discount == "y" or Discount == "Y":
price = price-1
elif Discount == "n" or Discount == "N":
price = price
print ('Your admission fee is '+str(price))
我正在查看一些类似的问题,我帮助解决了一些问题,但我不确定如何定义“年龄”,以便程序能够阅读它。
所以在查看回复之后会看起来更像这样吗?
print ("Hello, welcome to Hopper's Computer Museum! To determine your enterance fee, please enter the following:")
print("Your date of birth (mm dd yyyy)")
Date_of_birth = input("--->")
print("Today's date: (mm dd yyyy)")
Todays_date = input("--->")
from datetime import date
def calculate_age(born):
today = date.today()
return today.year - born.year - ((today.month, today.day) < (born.month, born.day))
age = calculate_age(Date_of_birth)
if age <= 14:
price==5.00
elif age > 15 and age < 64:
price==9.00
elif age > 65:
price==7.50
print ('Do you have a coupon (y/n)?')
Discount = input("--->")
if Discount == "y" or Discount == "Y":
price = price-1
elif Discount == "n" or Discount == "N":
price = price
print ('Your admission fee is '+str(price))
答案 0 :(得分:2)
您的代码中存在几个问题。你的高级逻辑是好的,但你并没有完全实现。您会收到该错误,因为您从未向变量年龄提供值。您的 calculate_age 功能将执行作业,如果您懒得发送正确的数据并保存答案。另请注意,您对日期的结构做了几个假设,但您还没有编写任何代码来提供结构日期。
您有两个基本选择:
请注意,您的计划没有日期包,没有今天和出生的结构;对这些对象的属性的引用也将是未定义的。您需要完全整理您的程序以获得所需的结果。
为此,我强烈建议使用增量编程:编写一小段代码,然后对其进行调试,直到它按预期方式工作。 然后继续下一个区块。当然,请将此程序作为设计参考,但不要依赖于您在此处使用的名称和流程。
例如,首先指定一个特定的出生日期和一个特定的出生日期&#34;今天&#34;日期,无论以何种形式为您服务。消除逻辑。确保您可以计算年龄(全年),然后分配正确的票价。之后,返回并处理日期输入。
答案 1 :(得分:1)
您永远不会定义age
或致电calculate_age
。只需使用今天的日期致电calculate_age
:
def calculate_age(born):
Todays_date = date.today()
return today.year - born.year - ((today.month, today.day) < (born.month, born.day))
# Here. You need to define age
age = calculate_age(Date_of_birth)
if age <= 14:
price==5.00
elif age > 15 and age < 64:
price==9.00
elif age > 65:
price==7.50
但请注意,您的代码会有一些时髦的东西。您询问用户今天的日期,然后用Todays_date = date.today()
覆盖他们输入的内容,然后您永远不会使用它。你是说today = date.today()
吗?无论如何,除了这个问题。