pythontip 11-20题

第11题:结尾0的个数

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

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

则输出:2

a = 0
num = 0
for i in range(1, len(L) - 1):
    L[0] *= L[i] #从第一位开始依次乘后一位数,减少运算量
    a = L[0]
a = str(a) #转换成字符串
a = a[::-1] #倒序切片
for i in str(a):
    if i == '0':
        num += 1
    else:
        break
print(num)

第12题:结尾非零数的奇偶性

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

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

则输出:0

for i in range(1, len(L)):
    L[0] *= L[i]
    a = str(L[0])
for i in str(a)[::-1]:
    if i != '0':
        print(int(i) % 2)
        break

第13题:光棍的悲伤

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

例如:a=7

则输出:3

print(bin(a).count('1'))

第14题:Python之美

输出Python之禅。

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

import this #娱乐题

第15题:大小写转换

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

例如:a="aaaaaabbbDDDDD"

则输出:aaaaaabbbddddd

print(a.lower())

第16题:人民币金额打印(困难题)

银行在打印票据的时候,常常需要将阿拉伯数字表示的人民币金额转换为大写表示,现在请你来完成这样一个程序。

在中文大写方式中,0到10以及100、1000、10000被依次表示为: 零 壹 贰 叁 肆 伍 陆 柒 捌 玖 拾 佰 仟 万

以下的例子示范了阿拉伯数字到人民币大写的转换规则:

1 壹圆

11 壹拾壹圆

111 壹佰壹拾壹圆

101 壹佰零壹圆

-1000 负壹仟圆

1234567 壹佰贰拾叁万肆仟伍佰陆拾柒圆

现在给你一个整数a(|a|<100000000), 请你打印出人民币大写表示.

例如:a=1

则输出:壹圆

char_number = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖']
char_unit = ['拾', '佰', '仟']


def convert(n):
    if n == 0: return ""
    if n < 10: return char_number[n]
    if len(str(n)) > 4:
        if (n % 10000) // 1000 == 0 and n % 10000 != 0:
            return convert(n // 10000) + "万零" + convert(n % 10000)
        return convert(n // 10000) + "万" + convert(n % 10000)
    tmp = 10 ** (len(str(n)) - 1)  # 10**3=1000
    if len(str(n)) - len(str(n % tmp)) > 1 and n % 10 != 0:
        return convert(n // tmp) + char_unit[len(str(n)) - 2] + '零' + convert(n % tmp)
    return convert(n // tmp) + char_unit[len(str(n)) - 2] + convert(n % tmp)


if a == 0:
    print('零圆')
elif a < 0:
    print('负' + convert(abs(a)) + '圆')
else:
    print(convert(a) + '圆')

第17题:公约数的个数

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

例如:a = 24, b = 36

则输出:6

lista = []
for i in range(1, 24):
    if a % i == 0 and b % i == 0:
        lista.append(i)
print(len(lista))

第18题:逆解最大公约数与最小公倍数

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

例如:a=3, b = 60

则输出:12 15

a = 3
b = 60
import math

m = b / a
k = math.sqrt(m)
k1 = int(k)
k2 = int(b / a / k1)
print('{} {}'.format(a * k1, a * k2))

第19题:单身情歌

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

例如:a = "OurWorldIsFullOfLOVE"

则输出:LOVE

a = a.upper()
if a.find('LOVE') != -1:
    print('LOVE')
else:
    print('SINGLE')

第20题:信息加密

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

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

则输出 :fdjb

abc = 'abcdefghijklmnopqrstuvwxyz'
new_a = ''
for i in a:
    i = abc.find(i)
    i = i + b
    if i <= 25:
        new_a += ''.join(abc[i])
    else:
        i = i % 26
        new_a += ''.join(abc[i])
print(new_a)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值