天天看点

python Tip 算法题目

sudo apt-get install vertex-theme

1、给你一个列表 L, 对L进行升序排序并输出排序后的列表。

例如:L = [8,2,50,3]

则输出:[2,3,8,50]

print(sorted(L))      

2、给你一个字符串 a, 请你输出逆序之后的a。 例如:a=‘xydz’ 则输出:zdyx

print (''.join(sorted(a,reverse=True)))      

3、给你一字典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

print (','.join(str(x)for x in sorted(a.keys())))
或者 
print (','.join(sorted(str(key) for key in a))) 
      

4、给你一个字符串 a, 输出a中奇数位置字符构成的字符串(位置编号从1开始)。

例如:a=‘xyzwd’

则输出:xzd

print(a[::2])      

5、输出100以内的所有素数,素数之间以一个空格区分(注意,最后一个数字之后不能有空格)。

m=[i for i in range(3,100) for j in range(2,i) if i % j ==0]
n=range(2,100)
print ' '.join(map(str,(set(n)-set(m))))

或者

b=[]
for i in range(2,101):
    for j in range(2,i):
        if i % j==0:
            break
    else:
        b.append(i)
print (" ".join(str(n) for n in b))

或者

l=[]
for n in range(2,101):
    for i in range(2,n):
        if n%i == 0:break
    else:l.append(n)
print(' '.join(map(str,l))) 
      

6、给你一个整数列表L, 输出L的中位数(若结果为小数,则保留一位小数)。

例如: L=[0,1,2,3,4]

则输出:2

L.sort()
m=len(L)
n=m%2
o=(L[m/2]+L[m/2-1])/2.0
if n==1:
    print(L[m//2])
else:
    print(o) 
      

7、给你两个正整数a和b, 输出它们的最大公约数。

例如:a = 3, b = 5

则输出:1

def fun(a,b):
    if a%b==0:
        return b
    else:
        return fun(b,a%b)
print(fun(a,b))

或者

a=min(a,b)
b=max(a,b)
while a:
    b,a=a,b%a

print b

      

8、

def fun(a,b):
    if a%b==0:
        return b
    else: return fun(b,a%b)
print(a*b/fun(a,b)) 

或者

c= a*b
while b>0:
    a,b = b, a%b

print (c/a)