Python挑战100题(14~20)

Python015

Python挑战100题(14~20),第1张

题目:给你个小写英文字符串a和一个非负数b(0<=b<26), 将a中的每个小写字符替换成字母表中比它大b的字母。这里将字母表的z和a相连,如果超过了z就回到了a。

例如a="cagy", b=3,

则输出 :fdjb

提示: ord('a') = 97, ord('b') = 98, chr(97) = a

参考答案:

题目:给你一个字符串a和一个正整数n,判断a中是否存在长度为n的回文子串。如果存在,则输出YES,否则输出NO。

回文串的定义: 记串str逆序之后的字符串是str1,若str=str1,则称str是回文串,如"abcba".

参考答案:

题目:给你两个时间st和et(00:00:00<=st <= et<=23:59:59), 请你给出这两个时间间隔的秒数。

如:st="00:00:00", et="00:00:10", 则输出10.

参考答案:

方法一:切片

方法二:time模块

题目:给你一个时间t(t是一个字典,共有六个字符串key(year,month,day,hour,minute,second),值为每个值为数字组成的字符串,

如t={'year':'2013','month':'9','day':'30','hour':'16','minute':'45','second':'2'}

请将其按照以下格式输出, 格式:XXXX-XX-XX XX:XX:XX。如上例应该输出: 2013-09-30 16:45:02。

参考答案:

方法一:利用datetime模块

方法二:一行

题目:给你一个整数组成的列表L,按照下列条件输出:

若L是升序排列的,则输出"UP"

若L是降序排列的,则输出"DOWN"

若L无序,则输出"WRONG"。

参考答案:

题目:一个环形的公路上有n个加油站,编号为0,1,2,...n-1,

每个加油站加油都有一个上限,保存在列表limit中,即limit[i]为第i个加油站加油的上限,

而从第i个加油站开车开到第(i+1)%n个加油站需要cost[i]升油,cost为一个列表。

现在有一辆开始时没有油的车,要从一个加油站出发绕这个公路跑一圈回到起点。

给你整数n,列表limit和列表cost,你来判断能否完成任务。

如果能够完成任务,输出起始的加油站编号,如果有多个,输出编号最小的。

如果不能完成任务,输出-1。

参考答案:

构造新的limit和cost并遍历,来源 http://www.pythontip.com/coding/report_detail/3195/

题目:给你一个整数列表L,判断L中是否存在相同的数字,

若存在,输出YES,否则输出NO。

参考答案:

问题:编写一个程序,它将找到所有这些数字,可被7整除,但不是5的倍数,2000年至3200年(包括在内)。得到的数字应按逗号分隔的顺序打印在一行上(1级)

方法:使用for循环+if语句+join()+append()

'''

def number():

num_list = []

for i in range(2000,3201):

if i %7 == 0 and i %5 != 0:

num_list.append(str(i))

num = ','.join(num_list)

return num

if name == ' main ':

print(number())

'''

容易错的点:由于循环取的int类型,而join()只能处理str等可迭代类型,因此需要将i转换为str类型,否则会报错

for i in range (1,101): print i, if i%3==0 and i%5==0: print 'A*B', elif i%3==0: print 'A', elif i%5==0: print 'B', print