PythonTip挑战题(1-15)

1.a+b

    #题目1
#给你两个数a、b,请你计算它们的和,并输出。
#例如: a = 3,b = 2
# 输出:5

a = 3
b = 2

	#答题:
###########################方法1#################################
'''
print (a+b)
'''
##########################方法2###################################
'''
def add(a,b):
    return a+b

print(add(a,b))
'''
##########################方法3###################################
print(sum([a,b]))

2.列表排序

	#题目2
# 给你一个列表L,对L进行升序排序并输出排序后的列表
# 例如:L = [8,2,50,3]
# 则输出:[2,3,8,50]

L = [8, 2, 50, 3]

	#答题
###############################方法1##################################
'''
L.sort()    #L.sort()默认升序    降序:L.sort(reverse=True)
print(L)
'''
#############################方法2###################################
print(sorted(L))

3.字符串逆序

    #题目3
#给你一个字符串a,请你输出逆序之后的a
#例如:a = 'xydz'
#则输出:zdyx

a = 'xydz'

    #答题
##########################方法1#############################
print(a[::-1])

#########################方法2#############################
# i = ""
# for x in a:
#     i =  x + i
# print(i)

4. 输出字典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}
##-------------------------------##
b = sorted(a.keys()) #key升序 [1,2,3]
d = map(str,c) #转换为字符串类型
print(','.join(d)) # 1,2,3

print(','.join(str(c) for c in sorted(list(a.keys()))))

5.输出字符奇数位置的字符串

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

a = 'xyzwd'
#-----------------#
print(a[::2])

6.求解100以内的所有素数

输出100以内的所有素数,素数之间以一个空格区分。
素数指从大于1,且仅能被1和自己整除的整数
(注意,最后一个数字之后不能有空格)

def is_prime(n):
    for i in range(2,n):
        if n % i == 0:
            return False
    return True

print(" ".join(map(str,filter(is_prime,range(2,100)))))

7.求矩形面积

已知矩形长a,宽b,输出其面积和周长,面积和周长以一个空格隔开。
例如:a = 3,b = 8
则输出:24 22

a =3
b =8
#-----------------------#
print(a*b,(a+b)*2)

8.求中位数

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

L = [0,1,2,3,4]
#-------------------#
L.sort()  #先排序,只能用sort,不能用sorted
d = len(L)
if d % 2 != 0:
    print(L[(d-1)//2])
else:
    print("{:.1f}".format((L[(a-1)//2]+L[a//2])/2.0))

9.最大公约数

给你两个正整数a和b,输出它们的最大公约数
例如:a = 24,b = 9
则输出:3

a = 24
b = 9

#递归
def gcd(x,y):
    if x%y == 0:
        return y
    return gcd(y,x%y)

print(gcd(a,b))

a = 24
b = 9

#非递归
while b > 0:
    a,b = b,a%b
print(a)

a = 24
b = 9

print(max([x for x in range(1,a+1) if a%x == 0 and b%x == 0]))

a = 24
b = 9

import math
iprint(math.gcd(a,b))

10.最小公倍数

给你两个正整数a和b,输出它们的最小公倍数
例如:a = 3,b = 5
则输出:15

a = 3
b = 5

print(min([x for x in range(min(a,b),a*b+1) if x%a == 0 and x%b == 0]))

a = 3
b = 5

import math
print(a*b/math.gcd(a,b)) # a*b / 最大公约数

11.结尾0的个数

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

判断 2 和 5 的个数,取当中的最小值。因为 2*5 等于 10,所以只要计算得出它们的个数最小值,就可以知道乘积结果末尾 0 的个数。

L = [2,8,3,50]

def count(L):
    a = 0
    b = 0
    for i in L:
        while i % 2 == 0:
            i /= 2  # i=i/2
            a += 1  # a=a+1
        while i % 5 == 0:
            i /= 5
            b += 1
    return min(a,b)

print("1") if 0 in L else print(count(L))
#<表达式1> if <条件> else <表达式2>

12.结尾非零数的奇偶性

给你一个正整数列表L,判断列表内所有数字乘积的最后一个非零数字的奇偶性。如果为奇数输出1,偶数则输出0
例如:L = [2,8,3,50]
则输出:0

#判断2和5的个数,2多则为偶,5多则为奇
L = [2,8,3,50]

a = 0
b = 0
for i in L:
    while i % 2 == 0:
        i /= 2
        a += 1
    while i % 5 == 0:
        i /= 5
        b += 1

print("0") if a > b else print("1") #没有考虑列表有0,不好考虑

13.光棍的悲伤

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

a = -7

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

a = -7

b = format(a,'b') #二进制转成十进制
count = 0
for i in b:
    if i == '1':
        count += 1

print(count)

'''
#'b'、'd'、'o'、'x'分别是二进制、十进制、八进制、十六进制
二进制:以0b或0B开头     bin()
八进制:以0o或0O开头     oct()
十六进制:以0x或0X开头   hex()
'''

14.Python之美

输出Python之禅。
注意:输出python之禅的源码即可,不要转换为英文。

import this
print(this.s)

15.大小写互换

给定一个字符串a,将a中的大写字母转换成小写,其它字符不变,并输出。
例如:a = “aaabbbCCCDDD”
则输出:aaabbbcccddd

a = "aaabbbCCCDDD"

print(a.lower())
#str.lower() 或 str.upper() 全部字符小写/大写
发布了44 篇原创文章 · 获赞 29 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/IT_xiao_guang_guang/article/details/101637450
今日推荐