我必须让用户以mm/dd/yy
格式输入日期,然后以长January, ##, ####
格式输出字符串。我不能为我的生活将这个月替换为一个词。
def main():
get_date=input('Input a date in mm/dd/yy format!\nIf you would like to enter a 1-digit number, enter a zero first, then the number\nDate:')
month= int(get_date[:2])
day=int(get_date[3:5])
year=int(get_date[6:])
validate(month, day, year)#validates input
get_month(get_date)
def validate(month,day,year):
while month>12 or month<1 or day>31 or day<1 or year!=15:
print("if you would like to enter a one-digit number, enter a zero first, then the number\n theres only 12 months in a year\n only up to 31 days in a month, and\n you must enter 15 as the year")
get_date=input('Input a date in mm/dd/yy format!:')
month= int(get_date[:2])
day=int(get_date[3:5])
year=int(get_date[6:])
def get_month(get_date):
if get_date.startswith('01'):
get_date.replace('01','January')
print(get_date)
我尝试了很多东西来解决这个问题,但我不能让 1月而不是 01 。
答案 0 :(得分:3)
Python中的字符串是不可变的,它们一旦创建就不会改变。这意味着任何修改它的函数都必须返回一个新字符串。你需要捕获这个新值。
get_date = get_date.replace('01','January')
答案 1 :(得分:1)
您可以使用python的日期模块执行此操作(并简化代码)。
strptime函数将使用格式代码解析字符串中的日期。如果它无法正确解析,则会引发值错误,因此无需自定义验证功能
https://docs.python.org/2.7/library/datetime.html#datetime.datetime.strptime
strftime函数将打印出根据相同代码格式化的日期。
https://docs.python.org/2.7/library/datetime.html#datetime.datetime.strftime
更新后,您的代码将如下所示:
from datetime import datetime
parsed = None
while not parsed:
get_date=input('Input a date in mm/dd/yy format!\nIf you would like to enter a 1-digit number, enter a zero first, then the number\nDate:')
try:
parsed = datetime.strptime(get_date, '%m/%d/%y')
except ValueError:
parsed = None
print parsed.strftime('%B %d, %Y')
答案 2 :(得分:0)
为什么不使用datetime模块?
year = 2007; month=11; day=3
import datetime
d = datetime.date(year, month, day)
print d.strftime("%d %B %Y")
答案 3 :(得分:0)
最好使用Python的datetime
模块:
from datetime import datetime
entered_date = input('Input a date in mm/dd/yy format!\nIf you would like to enter a 1-digit number, enter a zero first, then the number\nDate:')
d = datetime.strptime(entered_date, '%m/%d/%y')
entered_date = d.strftime('%B, %d, %Y')
e.g。
'February, 29, 2016'
通过这种方式,您可以捕获无效日期(例如02/29/15)以及格式错误的日期。