【发布时间】:2020-09-09 17:04:08
【问题描述】:
这段代码的目的是:
- 要求用户输入他的姓名。
- 要求用户输入他的出生日期
- 代码会将姓名拆分为名字、中间名和姓氏
- 代码将以年、月和日为单位计算年龄。
- 代码会将所有这些数据存储在字典中
代码如下:
from datetime import datetime
from dateutil.relativedelta import relativedelta
class Test:
def __init__(self):
self.today = datetime.today()
def name(self):
first_name, middle_name, last_name = input("enter your name:\n".title()).split(' ')
return first_name, middle_name, last_name
def age(self):
date_of_birth = input("enter your date of birth:\n")
date_of_birth = datetime.strptime(date_of_birth, "%d/%m/%Y")
age = relativedelta(self.today, date_of_birth)
return age
def data(self):
data = {"first name": self.name()[0],
"middle_name": self.name()[1],
"last name": self.name()[2],
"age years": self.age().years,
"age months": self.age().months,
"age days": self.age().days}
print(data)
Test().data()
代码没有错误。
但是名字和年龄的问题每个重复了三遍。 像这样的
输入您的出生日期:
26/9/1986
输入您的出生日期:
26/9/1986
输入您的出生日期:
26/9/1986
【问题讨论】:
-
每次你打电话给
self.age(你打了三遍),它都会问问题,与self.name类似 -
self.name()称为名称函数。调用一次,将结果存储在变量中,然后构建字典 -
在将变量加载到
data字典之前,您应该将self.name()分配给变量。
标签: python user-input