输入出生日期

时间:2019-04-27 10:13:27

标签: python python-3.x string

伙计们,我在输入出生日期格式为dd / mm / yyyy时遇到问题

要遵循的指示是

  1. 提示用户在下面输入出生日期。

  2. 通过将字符串切成3个切片来提取3个字段。要将日期与月份分开,您将需要首先使用find()方法找到第一个斜杠的位置。要将月份与年份分开,您将需要使用rfind()方法来查找最后一个斜杠的位置。

我已经尝试在建立索引的同时进行字符串切片和连接,但是对于如何做到这一点,或者我什至正在这样做,都感到很困惑。也不允许使用条件语句。

birthday = input("Enter your date of birth: ",)

day = birthday.find("/")
month = birthday.find("/")
year = birthday.rfind("/")

print("Day: ",day)
print("Month: ", month)
print("Year: ", year)

预期格式为:

输入您的生日:1985年8月30日

日:30

月:8

年份:1985

6 个答案:

答案 0 :(得分:5)

使用rfind()是一种绕行方式。可以,但是使用

会更好
day, month, year = birthday.split("/")

如果您的讲师坚持使用find / rfind方法,那么您可以按照以下方式进行操作:

day = birthday[:birthday.find("/")]
month = birthday[birthday.find("/")+1:-birthday.rfind("/")-1]
year = birthday[-birthday.rfind("/"):]

该练习的目的可能是教您如何对字符串进行切片,而不是如何编写可读的Python。

答案 1 :(得分:1)

如果您需要进一步处理日期,datetime模块将非常有用:

from datetime import datetime

birthday = input("Enter your date of birth: ")

bday = datetime.strptime(birthday, '%d/%m/%Y')

print(f'Day: {bday.day}')
print(f'Month: {bday.month}')
print(f'Year: {bday.year}')

一个重要的优势是,这有助于防止用户输入错误的日期,例如,将32位设置为日期,将13位设置为月份值。

答案 2 :(得分:1)

docs阅读有关findrfind的信息。它们返回找到的事件的最低和最高索引。因此,您应该改为:

b = "30/8/1985"

first_sep, last_sep = b.find("/"), b.rfind("/")
day = b[:first_sep]
month = b[first_sep+1:last_sep]
year = b[last_sep+1:]

print("Day: ", day)
print("Month: ", month)
print("Year: ", year)

输出:

Day:  30
Month:  8
Year:  1985

答案 3 :(得分:0)

birthday = input("Enter your date of birth: ",)
birthday_list = birthday.split("/")
print("Day: ",birthday_list[0])
print("Month: ", birthday_list[1])
print("Year: ", birthday_list[2])

答案 4 :(得分:0)

您可以使用正则表达式。

birthday = input("Enter your date of birth: ",)
match = re.search(r'\d{4}-\d{2}-\d{2}', birthday)
date = datetime.strptime(match.group(), '%Y-%m-%d').date()

然后您可以从中获取日,月,年。 请参阅https://docs.python.org/3/library/datetime.html#date-objects

答案 5 :(得分:0)

这很有效:

import datetime

birthday = input('Enter your birthday in dd/mm/yyyy format')
day, month, year = list(map(int, birthday.split("/")))
birthdate = datetime.date(year, month, day)

print(f"Birthday is on {birthdate.strftime('%d/%m/%Y')}")