zoukankan      html  css  js  c++  java
  • Mac 學習系列之Python Challenge 11-20

    11.给你一个正整数列表 L, 如 L=[2,8,3,50], 输出L内全部数字的乘积末尾0的个数,
    如例子L的结果为2.(提示:不要直接相乘,数字非常多,可能溢出)

    Answer:
    n_2 = 0
    n_5 = 0
    for tmp in L:
        while tmp % 2 == 0:
            n_2 += 1
            tmp /= 2
        while tmp % 5 == 0:
            n_5 += 1
            tmp /= 5
    print min(n_2,n_5)

    12.给你一个正整数列表 L, 如 L=[2,8,3,50], 推断列表内全部数字乘积的最后一个非零数字的奇偶性,
    奇数输出1,偶数输出0. 如例子输出应为0

    Answer:
    result = reduce(lambda a,b:a*b, L)
    no_zero = int(str(result).replace('0', ''))
    print(no_zero & 1)

    13.光棍们对1总是那么敏感,因此每年的11.11被戏称为光棍节。
    鄙人光棍几十载,光棍自有光棍的快乐。

    让我们勇敢面对光棍的身份吧,
    如今就证明自己:给你一个整数a。数出a在二进制表示下1的个数。并输出。

    a % 2 == 1
    Answer:
    print bin(a).count(“1")

    14.输出Python之禅
    注意:输出python之禅的源代码就可以,不用转换为英文。(小小的提示:print this.s)

    Answer:
    import this
    print this.s

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

    Answer:
    print a.lower()

    16.银行在打印票据的时候。经常须要将阿拉伯数字表示的人民币金额转换为大写表示。如今请你来完毕这样一个程序。


    在中文大写方式中。0到10以及100、1000、10000被依次表示为:
    零壹贰叁肆伍陆柒捌玖拾佰仟万
    下面的例子示范了阿拉伯数字到人民币大写的转换规则:

    1 壹圆
    11 壹拾壹圆
    111 壹佰壹拾壹圆
    101 壹佰零壹圆
    -1000 负壹仟圆
    1234567 壹佰贰拾叁万肆仟伍佰陆拾柒圆

    如今给你一个整数a(|a|<100000000), 打印出人民币大写表示.
    注意:因为中文乱码问题,输出时请先decode(“utf8”),比如你要输出ans = “零圆”, print ans.decode(“utf8”).

    Answer:
    m=['零','壹','贰','叁','肆','伍','陆','柒','捌','玖']
    n=['','拾','佰','仟','圆','万']
    b=str(abs(a))
    l=len(b)
    if a<0:
        c='负'
    else:
        c=''
    
    
    def num(ln):
        c=''
        l=len(ln)
        i=0
        if l==1 and ln[0]=='0':
            c+=m[0]
            return c
        if l==4 and ln=='0000':
            c+=m[0]
            return c
        while i<l:
            while i<l and int(ln[i])==0:
                i+=1
                if i<l and int(ln[i])!=0:
                    c+=m[0]
                    break
            if i==l: break
            c+=m[int(ln[i])]
            c+=n[l-i-1]
            i+=1
        return c
    if l<=4:
        c=c+num(b)+n[4]
    else:
        c=c+num(b[:l-4])+n[5]+num(b[l-4:])+n[4]
    print c.decode("utf8")

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

    Answer:
    print len(set([i for i in range(2,max(a,b)) if (a%i == 0 and b%i==0)])) + 1

    18 . 我们经常遇到的问题是给你两个数。要你求最大公约数和最小公倍数。
    今天我们反其道而行之,给你两个数a和b。计算出它们各自是哪两个数的最大公约数和最小公倍数。


    输出这两个数,小的在前,大的在后,以空格隔开。若有多组解,输出它们之和最小的那组。


    注:所给数据都有解,不用考虑无解的情况。


    Answer:

    c=b/a
    l=[]
    for i in range(c):
        if c%(i+1)==0:
            l.append(i+1)
    print str(l[len(l)/2-1]*a)+" "+str(l[len(l)/2]*a)

    19 . 抓不住爱情的我
    总是眼睁睁看它溜走

    如今来练习一下发现爱的能力,给你一个字符串a,假设当中包括”LOVE”(love不区分大写和小写)则输出LOVE,否则输出SINGLE。

    Answer:
    print 'LOVE' if 'love' in a.lower() else 'SINGLE'

    20 . 给你个小写英文字符串a和一个非负数b(0<=b<26), 将a中的每一个小写字符替换成字母表中比它大b的字母。


    这里将字母表的z和a相连,假设超过了z就回到了a。比如a=”cagy”,b=3, 则输出 fdjb

    Answer:
    s=''
    for i in a:
    if ord(i)>=97 and ord(i)<=122:
    i=chr(97+(ord(i)+b-97)%26)
    s+=i
    print s   
  • 相关阅读:
    css盒子模型
    怎么查看浏览器内核以及浏览器版本
    matlab 读取文件(mat)存储为json文件
    js的闭包
    听别人报告
    关于windows下 python3安装 cython的说明
    python某个module使用了相对引用,同时其__name__又是__main__导致的错误
    python编程指南
    javacc在stanfordnlp中的应用
    hystrix熔断机制修改配置
  • 原文地址:https://www.cnblogs.com/llguanli/p/8696344.html
Copyright © 2011-2022 走看看