pythontip 挑战python 21-30 题解

入门题的解答过程,有更好的解题方法或者编码方法请留言

有部分内容参考了:[1]http://www.cnblogs.com/xiongqiangcs/p/3416072.html

和[2]http://www.cnblogs.com/easymath3/p/3468800.html

21:回文子串

for i in range(len(a) - n+1):
    if a[i: i+n/2 :1] == a[i+n-1: i+n-n/2-1:-1]:
        print 'YES'
        break
else:
    print 'NO'

22:时间就是金钱

stL = map(int, st.split(':'))
stN = stL[0]*3600 + stL[1]*60 + stL[2]
etL = map(int, et.split(':'))
etN = etL[0]*3600 + etL[1]*60 + etL[2]
print etN - stN

23:365 Or 366?

y = int(year)
if y%4==0 and y%100!=0 or y%400==0:
    print 366
else:
    print 365

24:一马当先

我用的宽度优先的搜索方法

step  = ((2,1),(1,2),(-1,2),(-2,1),(-2,-1),(-1,-2),(1,-2),(2,-1))
isVisit = [[False]*(m+1) for i in range(n+1)]
isVisit[0][0] = True
visit= [(0,0)]
def wfs():
    minCnt = 0
    while len(visit) != 0:
        l = len(visit)
        minCnt += 1
        for i in range(l):
            a,b = visit.pop(0)
            for p in step:
                tmpa,tmpb = a+p[0], b+p[1]
                #print tmpa, tmpb
                if tmpa == n and tmpb ==m:
                    return minCnt
                if tmpa >-1 and tmpa <=n and tmpb > -1 and tmpb <= m and not isVisit[tmpa][tmpb]:
                    isVisit[tmpa][tmpb] = True
                    visit.append((tmpa,tmpb))
                #print visit
    else:
        return -1
print wfs()

25:格式化时间

print '%04d-%02d-%02d %02d:%02d:%02d' % (int(t['year']),int(t['month']),int(t['day']),int(t['hour']),int(t['minute']),int (t['second']))

26:序列判断

up = sorted(L)
down = up[::-1]
if up == L:
    print 'UP'
elif down == L:
    print 'DOWN'
else:
    print 'WRONG'

27:加油站

for i in range(n):
    oil, coil = 0, 0
    for j in range(n):
        t = (i+j)%n
        oil = oil + limit[t] - cost[t]
        if oil < 0:
            break
    else:
        print i
        break
else:
    print -1

28:相同数字

这个答案是参考的别人的,我觉得挺巧妙的,就抄来了,见:http://www.cnblogs.com/xiongqiangcs/p/3416072.html

print ('NO' if len(set(L)) == len(L) else 'YES')

29:判断三角形

if a+b>c and b+c>a and c+a>b:
    print 'YES'
else:
    print 'NO'

30:National Day

print 'Happy'
原文地址:https://www.cnblogs.com/zijin/p/3492568.html