python 练习题

python面试练习题

下面会输出什么

funcs = [lambda x:x*i for i in range(4)]
print([fun(2) for fun in funcs])

0、给定两个列表,怎么找出他们相同的元素和不同的元素?

a = [1,2,3,4,7]
b = [1,2,4,2,5]
a = set(a)
b = set(b)
print(a&b)
print(a^b)

1、将1-2-3-4转换成2-1-4-3。

nums = [1, 2, 3, 4]
for num in nums:
    if num % 2 == 0:
        nums.insert(nums.index(num)-1, num)
        nums.pop(num)

2 、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

nums = []
for i in range(1, 5):
    for j in range(1, 5):
        for l in range(1, 5):
            if i != j and j != l and i != l:
                res = i * 100 + j * 10 + l
                nums.append(res)

3、企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?

money = int(input("请输入金额:"))
profits = [1000000, 600000, 400000, 200000, 100000, 0]
ts = [0.01, 0.015, 0.03, 0.05, 0.075, 0.1]
r = 0
for i in range(6):
    if money > profits[i]:
        r += (money - profits[i]) * ts[i]
        money = profits[i]

4、一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

import math
num = 1
while True:
    if math.sqrt(num + 100)-int(math.sqrt(num + 100)) == 0 and math.sqrt(num + 268)-int(math.sqrt(num + 268)) == 0:
        print(num)
        break
    num += 1

5、 输入某年某月某日,判断这一天是这一年的第几天?

import datetime
date = input("请输入时间, datetime:(20180812):")
dt = datetime.datetime.strptime(date, "%Y%m%d")
this_year = datetime.datetime.strptime(date[:4]+"0101", "%Y%m%d")
print((dt-this_year).days)

6、输出9*9口诀。

# for i in range(1, 10):
#     for j in range(1, i+1):
#         print("%d * %d = %02d  " % (j, i, (i*j)), end="")
#     print()
[print("%d * %d = %02d  %s" % (j, i, (i*j), "\n" if i==j else ""), end="") for i in range(1, 10) for j in range(1, i+1)]

7、有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

a = 1
b = 1
for i in range(1, 21, 2):
    print('%d %d' % (a, b),)
    a += b
    b += a

8、判断101-200之间有多少个素数,并输出所有素数。

for i in range(2, 100):
    for j in range(2, i):
        if i % j == 0:
            break
    else:
        print(i)

9、打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。

1[print(n) for n in range(100, 1000) if n == (n // 100) ** 3 + (n // 10 % 10) ** 3 + (n % 10) ** 3]

2for n in range(100, 1000):
    if n == (n // 100) ** 3 + (n // 10 % 10) ** 3 + (n % 10) ** 3:
        print(n)

10、输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

ss = input("请输入一串数字")
letter = 0  # 字符串
space = 0  # 空格
digit = 0  # 数字
other = 0  # 特殊字符
for s in ss:
    if s.isalpha():
        letter += 1
    elif s.isspace():
        space += 1
    elif s.isdigit():
        digit += 1
    else:
        other += 1
print(letter, space, digit, other)

11、一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高?

s = 100
num = 100
for _ in range(9):
    s /= 2
    num += s*2
print(num, s)

12、冒泡排序

nums = [1, 2, 3, 7, 9, 8]
for i in range(len(nums)):
    for j in range(i+1, len(nums)):
        if nums[i] > nums[j]:
            time = nums[i]
            nums[i] = nums[j]
            nums[j] = time
print(nums)

13、a=“advajlsdga”, b=“gsadgj” 去除相同的

a, b = set("advajlsdga"), set("gsadgj")  # {'v','l'}
print(a-b)

14、 输入字符串去除相邻重复的AAAABBBCCDAABBB = ABCDAB

def unique(test):
    list = []
    list.extend(test)
    i = 0
    while i < len(list):
        if list[i] == list[i + 1]:
            del list[i + 1]
            i -= 1
        i += 1
        if i >= len(list) - 1:
            break
    return list
print(unique("AAAABBBCCDAABBB"))

16、求1到100的和

print(sum(range(101)))

17、输入一个数求是否是回文数(12321, 121, 45654)

b = a[int(len(a)/2)+1:len(a)]
a = a[0:int(len(a)/2)]
if a == b[::-1]:
    print("是回文数")
else:
    print("不是回文数")

18、判断两个列表中相同的与不同的

a = [1,2,3,4,7]
b = [1,2,4,2,5]
a = set(a)
b = set(b)
print(a&b)
print(a^b)

19、斐波那契额数列

def fib(n):  
    a, b = 0, 1
    while b < n:
        a, b = b, a+b
        print(b)

20、x, y 取值[1,2,3,4,5] ,生成x为键,y为值的字典, 其中x为基数,y为偶数

dic = {}
a = [1, 2, 3, 4, 5]
for i in a:
    if i%2==0:
        dic[a.index(i)] = i
print(dic)

21、统计1000个词中最频繁的几个词

import collections
s = "a b a b a c m m d m a e w q e d v b u y h b jl j g b g c b"
colls = collections.Counter(s.split())
print(colls.most_common(n))

22、不使用set的情况下怎么删除列表中的0,不允许出现新列表

    a = [0, 0, 0, 1, 0, 0, 2, 3, 4, 0, 0]
    for i in a[::-1]:
        if i == 0: a.remove(i)
    print(a)

23、设 list_a = [(‘a’, 100, 20), (‘b’, 20)],请将其转换成字典 dict_a,键为 list_a 中每个元组的每一个元素,值为 list_a ,其余元素组成的列表(要求,用字典推到式)

    list_a = [("a", 100, 200), ("b", 100, 200)]
    print({i[0]: i[1:] for i in list_a}

24、使用递归的方式翻转字符串

def f(s):
    if s == "":
        return s
    return f(s[1:]) + s[0]

print(f("hello,world"))

25、根据字典key排序

dic = {1:"1", 3:"3", 2:"2", 5:"5", 4:"4"}
keys = dic.keys()
keys = list(keys)
keys.sort()
print({key: dic[key] for key in keys})

26、统计中文小说中出现最多的词语

import jieba.analyse
import collections
finals = []
filename = r"test.txt"
# 打开文件夹,读取内容,并进行分词
with open(filename, 'r', encoding='utf-8') as f:
    for line in f.readlines():
        word = jieba.analyse.extract_tags(line)
        finals += word

colls = collections.Counter(finals)
print(colls)

** 现有字典 d={‘a’:24,‘g’:52,‘i’:12,‘k’:33}请按字典中的 value 值进行排序?**

d = {'a':24, 'g':52, 'i':12, 'k':33}
new_dic = dict(sorted(d.items(),key=lambda x:x[1]))

你可能感兴趣的:(python,python,python面试题)