Python 输入出生日期

Python 输入出生日期,python,python-3.x,string,Python,Python 3.x,String,伙计们,我在用dd/mm/yyyy格式输入出生日期时遇到了一个问题 要遵循的说明如下: 提示用户在下面输入出生日期 通过将字符串分为3个片段来提取3个字段。要将日期与月份分开,首先需要使用find方法来查找第一条斜线的位置。要将月份与年份分开,需要使用rfind方法查找最后一条斜线的位置 我曾经尝试过在索引的同时进行字符串切片和连接,但对于如何实现这一点,或者我是否正在实现这一点,我还很不确定。也不允许使用条件语句 birthday = input("Enter your date of bir

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

要遵循的说明如下:

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

通过将字符串分为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年使用rfind是一种迂回的方法。这会管用的,但你最好还是

day, month, year = birthday.split("/")
如果您的讲师坚持“查找/重新查找”方法,则您可以通过以下方式进行:

day = birthday[:birthday.find("/")]
month = birthday[birthday.find("/")+1:birthday.rfind("/")]
year = birthday[birthday.rfind("/")+1:]
这个练习的目的可能是教你如何切分字符串,而不是如何编写可读的Python。

你可以使用正则表达式

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])
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()
然后你可以从中得到一天,一个月,一年。
请参阅

如果您对日期有进一步的处理,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作为月值。

阅读关于查找和重新查找的内容。它们返回找到的事件的最低和最高索引。因此,你应该改为:

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)
输出:

这一点非常有效:

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')}")
尝试日、月、年=生日。使用find和rfind而不是split拆分“/”效率低下。您的代码缺少切片部分—您只获得索引—您仍然需要将字符串切片到所需的数据中—您的问题是什么?要求家庭作业帮助的问题必须包括到目前为止你为解决问题所做工作的总结,以及对你解决问题的困难的描述。请阅读你的文章。
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')}")