1. 打印1000以内的质数

draft版本:

def printlist():
    a = []
for i in range(1, 1001):
b.append(i)
for j in range(2, i):
if i % j == 0:
a.remove(i)
break
print(a)
checklist()
稍稍优化一下,把判断是否质数方法独立出来,使用filter或者列表生成器来返回列表
def check(a):
  for i in range(2, a):
        if a % i == 0:
return 0
return 1
b = list(filter(lambda x:check(x), range(1, 1001)))
c = [x for x in range(1, 1001) if check(x)]
print(b)
print(c)

2. 给定字符串str1和str2,求str1中子串含有str2所有字符串的最小子串长度,若str1不包含所有str2中字符,则返回0,例如str1='abcdeca',str2='ac',则输出3
实现思路:使用字符串的find方法,当字符存在时返回第一次出现的位置,不存在时返回-1。
首先把str2转换成列表,遍历该列表,所有字符在str1中的位置生成新的列表,列表最大值即为符合条件的最小子串长度。
写法一:
def minlength(str1, str2):
    lista = list(str2)
listb = []
for item in lista:
x = str1.find(item)+1
if x:
listb.append(x)
else:
return 0
print(max(listb))
minlength('abcdeca', 'ac')

写法二:列表生成器生成新列表
def minlength(str1, str2):
    lista = list(str2)
listb = [str1.find(x)+1 for x in lista]
if listb.count(0) > 0:
return 0
else:
print(max(listb))
minlength('abcdeca', 'ac')


3. 统计一个字符串中的词频,按照词频逆序输出
实现思路一:生成集合,然后对集合元素用在原始字符串中的个数倒序排序,使用sorted()方法对集合排序
def reverselist(a):
    b = set(a)
c = sorted(b, key=lambda x: a.count(x), reverse=True)
print(" ".join(c))
reverselist('aabcddeeab')

实现思路二:使用collection模块的Counter方法,生成字符串中字符与字符个数的字典,key生成列表,对列表用value值排序
def reverselist(a):
dicta = dict(Counter(a))
b = [x for x in dicta]
b.sort(key=lambda x: dicta[x], reverse=True)
print(" ".join(b))
reverselist('aabcddeeab')


4. 存在某商品的价格列表,列表中是商品每天的价格,要在某一天买入,之后的某一天卖出获得利润,如果没有利润,则返回0
方法一:嵌套循环实现,第一层是买入的价格,第二层是列表该价格之后的价格遍历,计算出每个价格与买入价格的差值,如果大于利润值p,就更新p值
def profit(a):
    p = 0
if len(a) < 2:
return 0
for i in a[:-1]:
for j in a[a.index(i)+1:]:
p1 = j-i
if p1 > p:
p1, p = p, p1
if p >0:
return p
else:
return 0
a = profit([5, 5, 2])
print(a)

方法二:截取买入值后的值的子列表,找到最大值,然后把买入值与最大值计算利润,如果大于p就更新p值
def profit1(a):
    p = 0
if len(a) < 2:
return 0
for i in a[:-1]:
a1 = a[a.index(i)+1:]
j = max(a1)
p1 = j-i
if p1 > p:
p1, p = p, p1
if p > 0:
return p
else:
return 0
a = profit1([5, 1, 2])
print(a)

说明,遍历列表中的价格时,由于最后一个价格买入时,没有卖出价格,所以列表最后一个值不用遍历。
在第二种写法中,必须遍历a[:-1],否则生成子列表的时候会生成空列表,max()取最大值时会报错,

5. 判断字符串中有没有重复值
解决思路:把字符串转换成集合,然后判断字符串与集合的长度是否相等,由于集合中无重复元素,当长度相等时字符串中也无重复字符,反之则有重复字符
def checkdup(a):
    b = set(a)
if len(b) == len(a):
print("无重复字符")
else:
print("有重复字符")
checkdup('aac')



python-最近面试遇到的代码题,mark一下的更多相关文章

  1. Java面试手写代码题

    1.栈实现 2.Iterator实现 3.单例 4.多线和控制(暂停,恢复,停止) 5.生产者消费者

  2. python面试_总结02_代码题

    - 代码题 1.创建一个函数,接收一个字符串参数,判断其做为Python标识符是否合法. 具体要求: 如果合法则输出 True,否则输出 False. 如果该字符串与Python内置的关键字,或Bif ...

  3. 各位大佬Python的第一部分道基础题已经整理好了,希望大家面试的时候能用的上。

    Python的第一部分道基础题,希望大家面试的时候能用的上. 1.为什么学习Python? Python是目前市面上,我个人认为是最简洁.最优雅.最有前途.最全能的编程语言,没有之一. 2.通过什么途 ...

  4. 2019前端面试系列——JS高频手写代码题

    实现 new 方法 /* * 1.创建一个空对象 * 2.链接到原型 * 3.绑定this值 * 4.返回新对象 */ // 第一种实现 function createNew() { let obj ...

  5. 记搜狗一次不成功的Python后端面试经历

    面试搜狗Python后端结束快一个月了,终于有时间来做一个简单的总结了. 简介:工作不久,基础后端岗位,一面结束,失败. 先做了几个笔试题,面试开始会根据笔试题问一些内容.下面将整理一下还能想起来的内 ...

  6. Android开发面试经——6.常见面试官提问Android题②(更新中...)

    版权声明:本文为寻梦-finddreams原创文章,请关注:http://blog.csdn.net/finddreams 关注finddreams博客:http://blog.csdn.net/fi ...

  7. Android开发面试经——5.常见面试官提问Android题①

    版权声明:本文为寻梦-finddreams原创文章,请关注:http://blog.csdn.net/finddreams 关注finddreams博客: http://blog.csdn.net/f ...

  8. Python自动化面试必备 之 你真明白装饰器么?

    Python自动化面试必备 之 你真明白装饰器么? 装饰器是程序开发中经常会用到的一个功能,用好了装饰器,开发效率如虎添翼,所以这也是Python面试中必问的问题,但对于好多小白来讲,这个功能 有点绕 ...

  9. 实验8、31个最重要的Python Flask面试问题和答案

    实验介绍 1. 实验内容 内容涵盖了31个最热门的Flask面试问题,帮助学生更好的理解Flask. 2. 实验要点 了解面试Flask开发人员的常见问题 实验内容 Flask面试问答 Q:Flask ...

  10. python解析xml模块封装代码

    在python中解析xml文件的模块用法,以及对模块封装的方法.原文转自:http://www.jbxue.com/article/16586.html 有如下的xml文件:<?xml vers ...

随机推荐

  1. 一文讲透CabloyJS全栈框架的来龙去脉

    本文受众 咱们做软件开发,就好比是建造一幢幢房屋,一座座桥梁,既可以是北方宫殿的巍峨,也可以有南方庭院的雅致,更可以是横跨群山的峻险与孤悬.那么,不同的语言.不同的框架也都由其内在的秉质吸引着一批粉丝 ...

  2. Tekton 设计简介 及 实践

    本文是我对Tekton的实现原理和背后技术逻辑的理解,以及在实践过程中的一些总结. 简介 Tekton 是一个基于 Kubernetes 的云原生 CI/CD 开源(https://cd.founda ...

  3. 【面试题总结】Java并发-多线程、JUC详述(思维导图)

    〇.整体目录 一.多线程 1.实现方式 2.内存图 3.线程状态 4.实现线程同步 5.并发编程 二.JUC 1.概述与volatile关键字 2.ThreadLocal类 3.CAS方法 4.ato ...

  4. 【JUC】信号量Semaphore详解

    欢迎关注专栏[JAVA并发] 欢迎关注个人公众号-- JAVA旭阳 前言 大家应该都用过synchronized 关键字加锁,用来保证某个时刻只允许一个线程运行.那么如果控制某个时刻允许指定数量的线程 ...

  5. linux安装Erlang和Rabbitmq以及安装问题解决

    安装环境: Alibaba Cloud Linux 安装erlang命令: rpm --import https://packages.erlang-solutions.com/rpm/erlang_ ...

  6. MSTN CE和MSTN SDK安装经验及技巧

    MSTN CE和MSTN SDK安装经验及技巧 本文介绍了MSTN CE及MSTN CE SDK安装的流程以及在安装时可能会遇到的问题 一.MSTN CE安装 1.MSTN CE即Microstati ...

  7. tomcat下找不到运行的程序文件

    1.重新部署tomcat(删掉原有的tomcat) 2.更改部署路径

  8. python之yaml文件读取封装

    import os import yaml from yamlinclude import YamlIncludeConstructor YamlIncludeConstructor.add_to_l ...

  9. C/S UDP通信实践踩坑记录与对于ICMP的进一步认识

    背景 最近有个业务场景需要服务端(简称S)与客户端(简称C)设计一套基于UDP的通信协议--要求尽可能快的前提下可容忍一定丢包率,得以比较深入地学习和了解UDP通信和实践,在开发调试期间先后碰到了C端 ...

  10. Google分布式文件系统GFS论文学习

    GFS作为最著名的分布式文件系统,首先具备了大规模.可扩展.适配大文件.自动运维等高级特性.虽然是比较早期的分布式文件系统,但是它里面的设计思想还是值得现代分布式系统设计参考的,并且还有很多后期著名的 ...