<python练习题>python练习题(常练勿忘)
学了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练习题(常练勿忘)的更多相关文章
- Python之基础练习题
Python之基础练习题 1.执行 Python 脚本的两种方式 2.简述位.字节的关系 解:8位是一个字节 3.简述 ascii.unicode.utf-8.gbk 的关系 4.请写出 “李杰” 分 ...
- Python:程序练习题(二)
Python:程序练习题(二) 2.1温度转换程序. 代码如下: t=input("请输入带符号的温度值(如:32C):") if t[-1] in ["C", ...
- python基础知识练习题(一)
1.执行Python脚本的两种方式:WIN+R,cmd,命令行窗口输入:python 进入python模式输入命令行直接执行命令:编写以.py结尾的文件,写入命令行,然后运行python.exe打开 ...
- python - opencv 的一些小技巧备忘
python - opencv 的一些小技巧备忘 使用python-opencv来处理图像时,可以像matlab一样,将一幅图像看成一个矩阵,进行矢量操作,以加快代码运行速度. 下面记录几个常用的操作 ...
- 【转载】【python】python练手项目
入门篇 1.Python - Python 图片转字符画 50 行 Python 代码完成图片转字符画小工具. <img src="https://pic3.zhimg.com ...
- Python基础-1 python由来 Python安装入门 注释 pyc文件 python变量 获取用户输入 流程控制if while
1.Python由来 Python前世今生 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚 ...
- python基础--python基本知识、七大数据类型等
在此申明一下,博客参照了https://www.cnblogs.com/jin-xin/,自己做了部分的改动 (1)python应用领域 目前Python主要应用领域: 云计算: 云计算最火的语言, ...
- 【Python】-NO.97.Note.2.Python -【Python 基本数据类型】
1.0.0 Summary Tittle:[Python]-NO.97.Note.2.Python -[Python 基本数据类型] Style:Python Series:Python Since: ...
- Python -- Effective Python:编写高质量Python代码的59个有效方法
第 1 章 用 Pythonic 方式来思考 第 1 条:确认自己所用的 Python 版本 python --version import sys print(sys.version_info) p ...
随机推荐
- 【痛定思痛】TCP 三次握手学习
前言:今天滴滴面试失败,痛定思痛,好好复习面试中最惨淡的计算机网络部分 面试中,面试官问我TCP与UDP最大的区别是什么,答:TCP可靠,UDP不可靠,一个面向有连接,一个面向无连接,一个快一个慢:追 ...
- UML指南系列——用例图
可以用用例来描述正在开发的系统想要实现的行为,而不必说明这些行为如何实现. 结构良好的用例只表示系统或者子系统的基本行为,而且既不过于笼统也不过于详细.
- 发布 Vant - 高效的 Vue 组件库,再造一个有赞移动商城也不在话下
发布 Vant - 高效的 Vue 组件库,再造一个有赞移动商城也不在话下:https://segmentfault.com/a/1190000011377961 vantUI框架在vue项目中的应用 ...
- [已解决]报错: TLS handshake timeout
为了永久性保留更改,您可以修改 /etc/docker/daemon.json 文件并添加上 registry-mirrors 键值. { "registry-mirrors": ...
- 使用pip 时报错 Fatal error in launcher: Unable to create process using '"D:\pytghon2.7\python.exe" "D:\python2.7\S
无法创建使用pip.exe创建进程,说白了就是无法启动pip安装插件. 解决方法升级pip: python -m pip install -U pip
- Codeforces 488C Fight the Monster
Fight the Monster time limit per test 1 second memory ...
- MYSQL增量备份与恢复
vim /etc/my.cnf在[mysqld]下添加max_binlog_size = 1024000 //二进制日志最大1M 要进行mysql的增量备份,首先要开启二进制日志功能方法一:在/etc ...
- 两台群晖之间传输数据NFS
如何在两台局域网的群晖之间传输数据,可以用NFS的方式来实现.摘抄如下,地址http://www.nasyun.com/thread-64638-1-1.html?reload=true 假设要把群晖 ...
- Codeforces542E Playing on Graph 思维+DFS+BFS
解法参考https://www.cnblogs.com/BearChild/p/7683114.html这位大佬的,这位大佬讲得很好了. 这道题还是有一定的思维的. 直接贴代码: #include&l ...
- ubuntu 安装pip并修改为阿里云pip源
0.sudo su1.安装pipapt-get install python-pip python-dev build-essentialpip install --upgrade pip pip i ...