天天看點

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)