美文网首页新手练习100题
Python挑战100题(1~10)

Python挑战100题(1~10)

作者: YoYoYoo | 来源:发表于2019-07-11 16:33 被阅读0次

1、字符串逆序

题目:给你一个字符串 a, 请你输出逆序之后的a。
例如:a=‘xydz’
则输出:zdyx
答:最简单的:

print(a[::-1])

字符串没有sort,reverse等方法。

2、输出字典key

题目:给你一字典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
答:

>>> a = {1:1,2:2,3:3}
>>> print( ','.join(sorted(map(str,a.keys()))))

知识点:
map() 函数语法:
map(function, iterable, ...)
例:

>>> map(square, [1,2,3,4,5])   # 计算列表各个元素的平方

3、输出字符奇数位置的字符串

题目:给你一个字符串 a, 输出a中奇数位置字符构成的字符串(位置编号从1开始)。
例如:a=‘xyzwd’
则输出:xzd
答:

>>> a = 'xyzwd'
>>> print(a[::2])
xzd

4、求解100以内的所有素数

题目:输出100以内的所有素数,素数之间以一个空格区分(注意,最后一个数字之后不能有空格)。
答:
方法一:

s = ''
for i in range(2,101):
    for j in range(2,i):
        if i%j == 0:
            break
    else:
        s = s + ' ' + str(i)

print(s)

方法二:

def isprime(x):
    flag = 0
    for a in range(2,x):
        if x % a == 0:
            flag = 1 # x 能被 a 整除,则flag等于1 ,即表示不是素数
            break
    return flag

L = []
for j in range(2,101):
    if isprime(j) == 0: # 等于0 表示是素数
        L.append(str(j))

print(' '.join(L))

5、求中位数

题目:给你一个整数列表L, 输出L的中位数(若结果为小数,则保留一位小数)。
例如: L=[0,1,2,3,4]
则输出:2
答:

L=[0,1,2,3,4,5]
if len(L) % 2==0:
    print((L[int(len(L)/2-1)]+ L[int(len(L)/2)])/2)
else:
    print(L[int(len(L)/2)])

6、求最大公约数

题目:给你两个正整数a和b, 输出它们的最大公约数。
例如:a = 3, b = 5
则输出:1
答:辗转相除法(欧几里得算法)

a,b = 3,5
def gcd(a,b):
    if b == 0:
        return a
    else:
        return gcd(b,a%b)
    
print (gcd(a,b))

以上函数可简写为:

gcd = lambda a,b : a if b ==0 else gcd(b,a%b)

其中 a,b 为参数 a 为return a
也可:

a,b = 3,5
while b != 0:
    a,b = b,a%b

print(a)

7、求最小公倍数

题目:给你两个正整数a和b, 输出它们的最小公倍数。
例如:a = 3, b = 5
则输出:15
答:公式法:由于两个数的乘积等于这两个数的最大公约数与最小公倍数的积。在上一题基础上:

a,b = 3,5
def gcd(a,b):
    if b == 0:
        return a
    else:
        return gcd(b,a%b)
    
f = gcd(a,b)
print(a*b/f)

8、结尾0的个数

题目: 给你一个正整数列表 L, 输出 L 内所有数字的乘积末尾0的个数。(提示:不要直接相乘,数字很多,相乘得到的结果可能会很大)。
例如: L=[2,8,3,50]
则输出:2
答:将2、5拆分出来取最小数量即可。

L=[2,8,3,50]
count_2 = 0
count_5 = 0
for i in L:
    while i % 2 == 0:
        count_2 += 1
        i = i / 2

    while i % 5 == 0:
        count_5 += 1
        i = i / 5

if count_2 > count_5:
    print(count_5)
else:
    print(count_2)

9、结尾非0数的奇偶性

题目:给你一个正整数列表 L, 判断列表内所有数字乘积的最后一个非零数字的奇偶性。如果为奇数输出1,偶数则输出0.。
例如:L=[2,8,3,50]
则输出:0
答:在上一题的基础上,5的个数多,则结尾非0数字为奇数;2的个数多,则为偶数

L=[2,8,3,50]
count_2 = 0
count_5 = 0
for i in L:
    while i % 2 == 0:
        count_2 += 1
        i = i / 2

    while i % 5 == 0:
        count_5 += 1
        i = i / 5

if count_2 > count_5:
    print(0)
else:
    print(1)

10、光棍的悲伤

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

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

相关文章

  • Python挑战100题(1~10)

    1、字符串逆序 题目:给你一个字符串 a, 请你输出逆序之后的a。例如:a=‘xydz’则输出:zdyx答:最简单...

  • Python基础面试,看这篇文章画重点吧,Python面试题No

    第1题:1行代码实现1到100的和? 分析:这题考察的是对Python内置函数的了解程度 Python常见的内置函...

  • Python挑战100题(31~33)

    31、取石子问题 题目:有两堆石子,数量任意,可以不同。游戏开始由两个人轮流取石子。游戏规定,每次有两种不同的取法...

  • Python挑战100题(37~40)

    37、回文数 Ⅰ 题目:若一个数(首位不为0)从左到右读与从右到左读都是一样,这个数就叫做回文数,例如12521就...

  • Python挑战100题(34~36)

    34、汉诺塔 题目:在印度,有这么一个古老的传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝...

  • Python挑战100题(21~26)

    21、山峰的个数 题目:十一假期,小P出去爬山,爬山的过程中每隔10米他都会记录当前点的海拔高度(以一个浮点数表示...

  • Python挑战100题(27~30)

    27、分拆素数和 题目:把一个偶数拆成两个不同素数的和,有几种拆法呢?现在来考虑考虑这个问题,给你一个不超过100...

  • Python挑战100题(14~20)

    14、信息加密 题目:给你个小写英文字符串a和一个非负数b(0<=b<26), 将a中的每个小写字符替换成字母表中...

  • Python挑战100题(11~13)

    11、人民币打印金额 题目:银行在打印票据的时候,常常需要将阿拉伯数字表示的人民币金额转换为大写表示,现在请你来完...

  • Python学习100例之21-30

    此Python版本为2.7,其他例子如下:Python学习100例之1-10Python学习100例之11-20P...

网友评论

    本文标题:Python挑战100题(1~10)

    本文链接:https://www.haomeiwen.com/subject/onmfkctx.html