French

French - 技术经验
澄其心, 断其欲, 方能悟道
  1. 首页
  2. 面试题
  3. Python面试题
  4. 正文

Python面试题-01

2020-04-16 2108点热度 0人点赞 0条评论

疫情期间在面试某公司的远程职位时,获得的一份笔试题,需要的可以看看

第一题: 翻转字符串

题目:

请写一个程序,用于翻转函数中的字符串

# 举例
f​(​"junyiacademy"​) == ​"ymedacaiynuj"
f​(​"flipped class room is important"​) == ​"deppilf ssalc moor si tnatropmi"

答:

# 字符串翻转
def f(String):
    # 去除前后空格
    String = String.strip(" ")
    # 判断是否存在空格
    if String.find(" ") >= 0:
        # 根据空格分词
        StringList = String.split(" ")
        # 清除里面的字符串
        String = ""
        for i in StringList:
            i = i[::-1]
            String = String + i + " "
        # 去除前后空格
        String = String.strip(" ")
    else:
        String = String[::-1]
    return String


if __name__ == '__main__':
    SS = f("You Are Money")
    print(SS)

运行结果:

D:\Python\python.exe D:/Code/PythonCode/Interview/JunYi/01.py
uoY erA yenoM

Process finished with exit code 0

第二题: 倍数去除

题目:

请写一个程序,Input 获取的一个数字,Output 是从1到Input这个数字,扣除掉所有3的
倍数以及 5 的倍数,但是需要保留同時是 3和 5 的倍数的总数个数

# 举例
Input:15
所有的数字是:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
其中 3, 6, 9, 12 被去除;5, 10 被去除;但是15被保留
所以剩下来的数字是1,2,4,7,8,11,13,14,15,因此
Output:9

答:

def cipher(Digital):
    Count = 0
    for i in range(1, Digital + 1):
        # 判断如果i是3和5的倍数则保留
        if i % 3 == 0 and i % 5 == 0:
            Count = Count + 1
        elif i % 3 == 0 or i % 5 == 0:
            pass
        else:
            Count = Count + 1
    return Count


if __name__ == '__main__':
    # 等待用户输入数据
    Number = int(input("Input:"))
    result = cipher(Number)
    print("OutPut:", result)

运行结果:

D:\Python\python.exe D:/Code/PythonCode/Interview/JunYi/02.py
Input:15
OutPut: 9

Process finished with exit code 0

第三题: 圆珠笔问题

题目:

房间里有三个袋子,一个只装铅笔,一个只装圆珠笔,第三个有铅笔也有圆珠笔。袋子是不透明的,单从袋子的外表上看不出任何差异,你不知道哪个袋子装什麽。除了袋子上各贴了一个标示("铅笔"、"圆珠笔"、"混和"),且标示都是错的。
(e.g. 标示铅笔的袋子可能是混和的或是只装圆珠笔)。
你只能选一个袋子,拿出里面一支笔,看是铅笔还是圆珠笔,然后你要推论出这三个袋子分别的情况。请列出你的作法,以及解释为什么这样可以找到答案。

答:

Ps: 个人觉得,是在考全排序问题

from itertools import permutations
# 使用全排列解决
# 定义字符集
str_list = ["铅笔", "混合笔", "圆珠笔"]
result_list = permutations(str_list)
for i in result_list:
    for j in i:
        print(j, end=" ")
    print()

运行结果:

D:\Python\python.exe D:/Code/PythonCode/Interview/JunYi/03.py
铅笔 混合笔 圆珠笔 
铅笔 圆珠笔 混合笔 
混合笔 铅笔 圆珠笔 
混合笔 圆珠笔 铅笔 
圆珠笔 铅笔 混合笔 
圆珠笔 混合笔 铅笔 

Process finished with exit code 0

第四题: 钱去哪了?

题目:

有三个人一起到迪士尼游玩,中午肚子饿了,去餐厅点了一份现在最夯的冰雪奇缘套餐,要价900元,付钱后,服务生发现今天套餐特价,只要750元,因此服务生应该退还150元给这三个人,但是这位服务生一时鬼迷心窍,决定暗杆60元,只退了 90 元给这三个游客。
那么: 三人各出300元-服务生还给他们一人30元=三人各出270元, 270元×3人+服务生私吞的60元=810+60= 870!?怎麽不是 900 元呢?还有30 元去哪了呢?请用叙述的方式,尽量清楚解释问题出在哪里.

答:

Ps: 这道题主要考的是逻辑思维,不用写程序

注:将这三个好朋友看作为一个整体,也就是顾客,先把所谓的AA制度抛到一边去
1.顾客点了一份冰雪奇缘双人套餐,消费900元
2.服务生发现套餐特价,只要750元,但是已经收了900元,应该退还150元(900-750=150)
3.服务生决定暗杆60元,退还了90元(150-60=90)
我们在来加一下前面的消费,就可以算出来了
90+60+750=900
注,将这三个人看作为一个整体,就可以看出这道题问题的逻辑错误出现在哪里了

当然,你还可以这样计算
1.这三个朋友每人出了300元,也就是900元(300*3=900)
2.服务员退回90元之后,每人分得了30元,也就是一共消费了810元 ((300-30) * 3 = 810)
3.用消费810元,减去吃饭的750,加上服务元暗杆的60元,结果等于0元(810-750+60 = 0)

本作品采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可
标签: Python 面试题
最后更新:2020-04-16

French

这个人很懒,什么都没留下

打赏 点赞

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

COPYRIGHT © 2018-2024 French. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

蜀ICP备2022008471号-1

川公网安备 51130202000393号