学了python,去面试经常出现,某个或某些库不熟悉导则想不起来怎么写,知道思路而写不出来,多半还是不够熟悉,这里就作为熟悉python的地方,多做做题,多思考。

题目1:店铺ID为00000000-99999999这样的8位数,商家不希望含有2,3,5这几个数字。

    a.设计一种方式,能按顺序生成出不重复且不含2,3,5这几个数字的店铺ID;

    b.计算符合上述规则的店铺ID共有多少个

 import time

 # 开始时间:当前时间的时间戳(1970纪元后经过的浮点秒数)。
start_time = time.time() # 解法1:无脑循环就完了
# 最初的列表
a = [i for i in range(0, 10)]
# 去掉元素列表
b = [2, 3, 5]
# 求差集
c = list(set(a) - set(b))
d = []
for a1 in c:
for a2 in c:
for a3 in c:
for a4 in c:
for a5 in c:
for a6 in c:
for a7 in c:
for a8 in c:
res = str(a1) + str(a2) + str(a3) + str(a4) + str(a5) + str(a6) + str(a7) + str(a8)
d.append(res)
# 截止时间
end_time = time.time()
run_time = end_time - start_time
print(len(d), run_time) # 5764801 11.144166231155396

解法1:无脑循环,究极费时

 import time
import itertools
# 开始时间:当前时间的时间戳(1970纪元后经过的浮点秒数)。
start_time = time.time() # 解法2:迭代器
# 最初的列表
a = [i for i in range(0, 10)]
# 如果希望自己输入不希望包含的数字 # b = input("请输入不希望包含的数字(逗号隔开):").split(",")
# # 去引号
# for i in range(len(b)):
# b[i] = int(b[i]) # 去掉元素列表
b = [2, 3, 5]
# 求差集
c = list(set(a) - set(b))
res = [x for x in itertools.product(c, repeat=8)]
# 截止时间
end_time = time.time()
run_time = end_time - start_time
print(len(res), run_time) # 5764801 0.950455904006958

解法2:使用迭代器,省时省力

题目2:不使用任何库函数将时间戳转化成常见的时间格式,只允许使用输入和输出函数。(面试看到的一个题目)

 import time

 # 生成一个时间戳,好进行后面计算,不在算法内
tmp = time.time() # 解法1:从本质除非进行运算(时间戳1970纪元后经过的浮点秒数)
tmp_year = tmp // (365 * 24 * 60 * 60) + 1970
# 计算其中闰年的次数1970 - (tmp_year + 1)
# 闰年:能被4整除不能被100整除或能被400整除 leap_year = []
# 不算今年
for year in range(1970, int(tmp_year) + 1):
if (year % 4) == 0:
if (year % 100) == 0:
if (year % 400) == 0:
leap_year.append(year)
else:
continue
else:
leap_year.append(year)
else:
continue
# print(leap_year)
# 判断当前年份是不是闰年,创建月份列表31 2678400 30 2592000 29 2505600 28 2419200
# 不是闰年
if leap_year[-1] < tmp_year:
month_list = [2678400, 2419200, 2678400, 2592000, 2678400, 2592000, 2678400, 2678400, 2592000, 2678400, 2592000,
2678400]
# 是闰年
else:
month_list = [2678400, 2505600, 2678400, 2592000, 2678400, 2592000, 2678400, 2678400, 2592000, 2678400, 2592000,
2678400]
# 闰年数
leap_num = int(len(leap_year))
# 去掉闰年,然后在求真实年份
tmp_year = (tmp - (366 * 24 * 60 * 60) * leap_num) // (365 * 24 * 60 * 60) + 1970 + leap_num
# 去掉年份后还剩余的秒数
tmp_month = (tmp - (366 * 24 * 60 * 60) * leap_num) % (365 * 24 * 60 * 60) num = 0
x = 0
for month_num in month_list:
num += month_num
x += 1
if tmp_month < num:
# 天数
tmp_day = (tmp_month - num + month_num) // (24 * 60 * 60) + 1
# 小时---------------这里整整少了6个小时,不知道为啥,以后有能力在来解决吧
tmp_hour = ((tmp_month - num + month_num) - (tmp_day - 1) * (24 * 60 * 60)) // 3600
# 分钟 秒
tmp_min = (((tmp_month - num + month_num) - (tmp_day - 1) * (24 * 60 * 60)) - 3600 * tmp_hour) // 60
tmp_sec = (((tmp_month - num + month_num) - (tmp_day - 1) * (24 * 60 * 60)) - 3600 * tmp_hour) % 60
# 月份
tmp_month = x
# 小时 break timeArray = time.localtime(tmp)
otherStyleTime = time.strftime("%Y--%m--%d %H:%M:%S", timeArray)
print("{}--{}--{} {}:{}:{}".format(int(tmp_year), int(tmp_month), int(tmp_day), int(tmp_hour), int(tmp_min),
int(tmp_sec)))
print(otherStyleTime)
# 2019--10--15 10:0:27 自己求的(小时这一项,不知道为啥少6小时)
# 2019--10--15 18:00:27 库函数输出的

解法1:思路没问题,但是小时数有误的解法

  

 

<python练习题>python练习题(常练勿忘)的更多相关文章

  1. Python之基础练习题

    Python之基础练习题 1.执行 Python 脚本的两种方式 2.简述位.字节的关系 解:8位是一个字节 3.简述 ascii.unicode.utf-8.gbk 的关系 4.请写出 “李杰” 分 ...

  2. Python:程序练习题(二)

    Python:程序练习题(二) 2.1温度转换程序. 代码如下: t=input("请输入带符号的温度值(如:32C):") if t[-1] in ["C", ...

  3. python基础知识练习题(一)

    1.执行Python脚本的两种方式:WIN+R,cmd,命令行窗口输入:python  进入python模式输入命令行直接执行命令:编写以.py结尾的文件,写入命令行,然后运行python.exe打开 ...

  4. python - opencv 的一些小技巧备忘

    python - opencv 的一些小技巧备忘 使用python-opencv来处理图像时,可以像matlab一样,将一幅图像看成一个矩阵,进行矢量操作,以加快代码运行速度. 下面记录几个常用的操作 ...

  5. 【转载】【python】python练手项目

    入门篇 1.Python - Python 图片转字符画 50 行 Python 代码完成图片转字符画小工具. &lt;img src="https://pic3.zhimg.com ...

  6. Python基础-1 python由来 Python安装入门 注释 pyc文件 python变量 获取用户输入 流程控制if while

    1.Python由来 Python前世今生 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚 ...

  7. python基础--python基本知识、七大数据类型等

    在此申明一下,博客参照了https://www.cnblogs.com/jin-xin/,自己做了部分的改动 (1)python应用领域 目前Python主要应用领域: 云计算: 云计算最火的语言, ...

  8. 【Python】-NO.97.Note.2.Python -【Python 基本数据类型】

    1.0.0 Summary Tittle:[Python]-NO.97.Note.2.Python -[Python 基本数据类型] Style:Python Series:Python Since: ...

  9. Python -- Effective Python:编写高质量Python代码的59个有效方法

    第 1 章 用 Pythonic 方式来思考 第 1 条:确认自己所用的 Python 版本 python --version import sys print(sys.version_info) p ...

随机推荐

  1. git和svn的比较

    当前的市场上主流的两种项目开发版本控制软件就是Git和SVN,那么这二者到底有什么区别呢? 在我们公司,其实两个都用,跟对个人体验,我觉得两者差不多,都是进行代码的版本管理. 我觉得1.由于我是实习生 ...

  2. 导数与偏导数 Derivative and Partial Derivative

    之前做了很长时间“罗辑思维”的听众,罗胖子曾经讲起过,我们这一代人该如何学习.其中,就讲到我们这个岁数,已经不可能再去从头到尾的学习一门又一门工具课程了,而是在学习某一领域时,有目的的去翻阅工具课程中 ...

  3. angular-file-upload插件的使用简单介绍

    参考博客: https://www.cnblogs.com/jarson-7426/p/5191156.html angular-file-upload 最近一段时间用了一下angular-file- ...

  4. maven项目中 把依赖的jar包一起打包

    1.pom.xml 配置文件: 在pom.xml配置文件中添加 <build> <plugins> <plugin> <artifactId>maven ...

  5. ArangoDB 的graph查询

    一个graph包含vertices 和edges.edges被存储在edges document当中.vertices可以是document collection 中的document也可以是edge ...

  6. __name__ 与 __main__解读

    在python脚本中我们经常看到如下的代码: # hello.py def hello(): print("hello world!") def test(): hello() i ...

  7. Django有办法打开HTTP长轮询连接吗?

    保持连接打开,直到发生事件. 解决方案 看看Django / Comet(推送):所有邪恶中最少的?或者彗星在Python中的最新推荐? - COMET是“ajax long-polling”的另一个 ...

  8. Draggable(拖动框)

    一.class加载方式 <div id="box" class="easyui-draggable" style="width:400px;he ...

  9. KiCAD更新封装

    KiCAD更新封装 有时候我们画完了PCB,但发现某个封装类型的器件需要修改,可能是修改尺寸,也可能是修封装参考或者值,具体操作如下: 1.首先更新原理图封装 2.从原理图更新到PCB(如果修改了封装 ...

  10. Nginx基础详细讲解

    Nginx基础详细讲解 链接:https://pan.baidu.com/s/1xB20bnuanh0Avs4kwRpSXQ 提取码:migq 复制这段内容后打开百度网盘手机App,操作更方便哦 1. ...