-1
저는 파이썬과 프로그래밍 전반에있어 완벽한 초보자입니다. Spotify's Best Before puzzle에 대한 프로그램을 만들었습니다. 그것은 받아 들여졌다. 나는 인터넷에서 소란스럽게 보았고 문제에 대한 다른 해결책을 보았고 내가 본 모든 사람들은 importet 여러 모듈을 포함하여 Calendar 모듈을 포함하고있다. 나는 이것이 아마도 좋은 해결책이라는 것을 이해하지만, 나는 모든 것을 스스로 연습하고 싶었다.파이썬 프로그램 단순화
나는 모든 팁과 힌트를 주셔서 감사하지만, 주로 코드를 가져올 필요가 없습니다. 기본적으로 수정이 필요한 printer(a)
및 dataMaker()
입니다.
normYear = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
leapYear = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
answerList = []
u''' Check if any of the integers are years '''
def yearCheck():
for x in xrange(0, 3):
a = dataList[x]
if len(a) > 2:
if not len(a) == 4 and int(a) in xrange(2000,3000):
if int(a) in xrange(100,1000):
dataList[x] = int(a) + 2000
else:
print data + u" is illegal"
u''' Make integers and sort '''
def integer():
for x in xrange(0, 3):
dataList[x] = int(dataList[x])
dataList.sort()
u''' Check for possible leap years '''
def leapYears():
global leapList
leapList = []
for x in xrange(0, 3):
if dataList[x] % 4 == 0:
if dataList[x] % 100 == 0:
if dataList[x] % 400 == 0:
leapList.append(x)
else:
leapList.append(x)
u''' Changes year type '''
def defYear(a):
global xYear
if a in leapList:
xYear = leapYear
else:
xYear = normYear
u''' Printer '''
def printer(a):
if dataList[a] < 2000:
dataList[a] += 2000
year = dataList[a]
del dataList[a]
if not dataList[0] == 0:
month = dataList.pop(0)
day = dataList.pop(0)
answerList.append(unicode(year))
answerList.append(unicode(u'%02d' % month))
answerList.append(unicode(u'%02d' % day))
print u'-'.join(answerList)
else:
print data + u" is illegal"
u''' Looks for legal dates, first [Y<M<D] then [M<Y<D] then [M,D,Y] '''
def dateMaker():
for x in xrange(0,4):
defYear(x)
if x == 0:
if dataList[1] <= 12 and dataList[2] <= xYear[dataList[1]-1]:
printer(x)
break
elif x == 1:
if dataList[0] <= 12 and dataList[2] <= xYear[dataList[0]-1]:
printer(x)
break
elif x == 2:
if dataList[0] <= 12 and dataList[1] <= xYear[dataList[0]-1]:
printer(x)
break
else:
print data + u" is illegal"
u''' Program '''
data = raw_input()
dataList = data.split(u"/")
yearCheck()
integer()
leapYears()
dateMaker()
안녕하세요. 이것은 정말로 질문이 아닙니다. 문제가 발생하면 예상 결과와 오류를 지적하십시오. 실제로 작동한다면 http://codereview.stackexchange.com/이이 게시물의 장소입니다. –
좋습니다, 감사합니다 !! –
을 삭제해야합니까? –