1、字符串逆序
题目:给你一个字符串 a, 请你输出逆序之后的a。
例如:a=‘xydz’
则输出:zdyx
答:最简单的:
print(a[::-1])
字符串没有sort,reverse等方法。
2、输出字典key
题目:给你一字典a,如a={1:1,2:2,3:3},输出字典a的key,以','连接,如‘1,2,3'。要求key按照字典序升序排列(注意key可能是字符串)。
例如:a={1:1,2:2,3:3}, 则输出:1,2,3
答:
>>> a = {1:1,2:2,3:3}
>>> print( ','.join(sorted(map(str,a.keys()))))
知识点:
map() 函数语法:
map(function, iterable, ...)
例:
>>> map(square, [1,2,3,4,5]) # 计算列表各个元素的平方
3、输出字符奇数位置的字符串
题目:给你一个字符串 a, 输出a中奇数位置字符构成的字符串(位置编号从1开始)。
例如:a=‘xyzwd’
则输出:xzd
答:
>>> a = 'xyzwd'
>>> print(a[::2])
xzd
4、求解100以内的所有素数
题目:输出100以内的所有素数,素数之间以一个空格区分(注意,最后一个数字之后不能有空格)。
答:
方法一:
s = ''
for i in range(2,101):
for j in range(2,i):
if i%j == 0:
break
else:
s = s + ' ' + str(i)
print(s)
方法二:
def isprime(x):
flag = 0
for a in range(2,x):
if x % a == 0:
flag = 1 # x 能被 a 整除,则flag等于1 ,即表示不是素数
break
return flag
L = []
for j in range(2,101):
if isprime(j) == 0: # 等于0 表示是素数
L.append(str(j))
print(' '.join(L))
5、求中位数
题目:给你一个整数列表L, 输出L的中位数(若结果为小数,则保留一位小数)。
例如: L=[0,1,2,3,4]
则输出:2
答:
L=[0,1,2,3,4,5]
if len(L) % 2==0:
print((L[int(len(L)/2-1)]+ L[int(len(L)/2)])/2)
else:
print(L[int(len(L)/2)])
6、求最大公约数
题目:给你两个正整数a和b, 输出它们的最大公约数。
例如:a = 3, b = 5
则输出:1
答:辗转相除法(欧几里得算法)
a,b = 3,5
def gcd(a,b):
if b == 0:
return a
else:
return gcd(b,a%b)
print (gcd(a,b))
以上函数可简写为:
gcd = lambda a,b : a if b ==0 else gcd(b,a%b)
其中 a,b 为参数 a 为return a
也可:
a,b = 3,5
while b != 0:
a,b = b,a%b
print(a)
7、求最小公倍数
题目:给你两个正整数a和b, 输出它们的最小公倍数。
例如:a = 3, b = 5
则输出:15
答:公式法:由于两个数的乘积等于这两个数的最大公约数与最小公倍数的积。在上一题基础上:
a,b = 3,5
def gcd(a,b):
if b == 0:
return a
else:
return gcd(b,a%b)
f = gcd(a,b)
print(a*b/f)
8、结尾0的个数
题目: 给你一个正整数列表 L, 输出 L 内所有数字的乘积末尾0的个数。(提示:不要直接相乘,数字很多,相乘得到的结果可能会很大)。
例如: L=[2,8,3,50]
则输出:2
答:将2、5拆分出来取最小数量即可。
L=[2,8,3,50]
count_2 = 0
count_5 = 0
for i in L:
while i % 2 == 0:
count_2 += 1
i = i / 2
while i % 5 == 0:
count_5 += 1
i = i / 5
if count_2 > count_5:
print(count_5)
else:
print(count_2)
9、结尾非0数的奇偶性
题目:给你一个正整数列表 L, 判断列表内所有数字乘积的最后一个非零数字的奇偶性。如果为奇数输出1,偶数则输出0.。
例如:L=[2,8,3,50]
则输出:0
答:在上一题的基础上,5的个数多,则结尾非0数字为奇数;2的个数多,则为偶数
L=[2,8,3,50]
count_2 = 0
count_5 = 0
for i in L:
while i % 2 == 0:
count_2 += 1
i = i / 2
while i % 5 == 0:
count_5 += 1
i = i / 5
if count_2 > count_5:
print(0)
else:
print(1)
10、光棍的悲伤
题目:光棍们对1总是那么敏感,因此每年的11.11被戏称为光棍节。小Py光棍几十载,光棍自有光棍的快乐。让我们勇敢地面对光棍的身份吧,现在就证明自己:给你一个整数a,数出a在二进制表示下1的个数,并输出。
例如:a=7
则输出:3
答:
print(bin(a).count('1'))
网友评论