//目录

PythonTip(2)

结尾0的个数 

描述:

给你一个正整数列表 L, 输出L内所有数字的乘积末尾0的个数。(提示:不要直接相乘,数字很多,相乘得到的结果可能会很大)。

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

则输出:2

n = len(L)
x = 1
ans = 0

def calc(x):
    ret = 0
    while True:
        if x%10==0:
            ret +=1
            x /=10
        else: break
    return [ret,x]


for i in range(0,n):
    x = x*L[i]
    ret = calc(x)
    ans += ret[0]
    x = ret[1]
print ans

 

结尾非零数的奇偶性 

描述:

给你一个正整数列表 L, 判断列表内所有数字乘积的最后一个非零数字的奇偶性。如果为奇数输出1,偶数则输出0.。

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

则输出:0

n = len(L)
x = 1
ans = 0

def calc(x):
    while True:
        if x%10==0:
            x /=10
        else: break
    return x%10


for i in range(0,n):
    x = x*L[i]
    x = calc(x)

if x&1:
    print 1
else:
    print 0

 

光棍的悲伤 

描述:

光棍们对1总是那么敏感,因此每年的11.11被戏称为光棍节。小Py光棍几十载,光棍自有光棍的快乐。让我们勇敢地面对光棍的身份吧,现在就证明自己:给你一个整数a,数出a在二进制表示下1的个数,并输出。

例如:a=7

则输出:3

ans = 0
while a!=0:
    if a%2==1:
        ans+=1
    a/=2
print ans

 

Python之美 

描述:

输出Python之禅。

注意:输出python之禅的源码即可,不要转换为英文。(小小的提示:print this.s)

import this
print(this.s)

 

大小写转换 

描述:

给定一个字符串a, 将a中的大写字母 转换成小写,其它字符不变,并输出。

例如:a="aaaaaabbbDDDDD"

则输出:aaaaaabbbddddd

n = len(a)
b = list(a)

for i in range(0,n):
    if ord(b[i])>=65 and ord(b[i])<=90:
        b[i] = chr(ord(b[i])+32)
print "".join(b)

 

公约数的个数 

描述:

给你两个正整数a,b, 输出它们公约数的个数。

例如:a = 24, b = 36

则输出:6

ans = 0
for i in range(1,min(a,b)+1):
    if a%i==0 and b%i==0:
        ans+=1
print ans

 

逆解最大公约数与最小公倍数 

描述:

我们经常遇到的问题是给你两个数,要你求最大公约数和最小公倍数。今天我们反其道而行之,给你两个数a和b,计算出它们分别是哪两个数的最大公约数和最小公倍数。输出这两个数,小的在前,大的在后,以空格隔开。若有多组解,输出它们之和最小的那组。注:所给数据都有解,不用考虑无解的情况。

例如:a=3, b = 60

则输出:12 15

gcd = min(a,b)
lcm = max(a,b)

ans = 1000000000
F1 = -1
F2 = -1
for i in range(gcd,a*b+1):
    if a*b%i==0 and ans > i + a*b/i:
        F1 = min(i,a*b/i)
        F2 = max(i,a*b/i)
        ans = i + a*b/i

print('{0} {1}'.format(str(F1),str(F2)))

 

单身情歌 

描述:

抓不住爱情的我 总是眼睁睁看它溜走 ...现在来练习一下发现爱的能力,给你一个字符串a,如果其中包含"LOVE"(love不区分大小写)则输出LOVE,否则输出SINGLE。

例如:a = "OurWorldIsFullOfLOVE"

则输出:LOVE

a = a.lower()

n = len(a)

flag = False
for i in range(0,n):
    if a[i] == 'l' and a[i+1] == 'o' and a[i+2]=='v' and a[i+3]=='e':
        flag = True
        break
if flag:
    print 'LOVE'
else:
    print 'SINGLE'

 

信息加密 

描述:

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

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

则输出 :fdjb

L = list(a)
n = len(a)
ans = []

for i in range(n):
    x = ord(L[i]) + b
    if x > 122:
        ans.append(chr(ord('a')+x-ord('z')-1))
    else:
        ans.append(chr(x))
print "".join(ans)

 

posted @ 2018-01-30 15:59  小草的大树梦  阅读(556)  评论(0编辑  收藏  举报