<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 ...
随机推荐
- activiti7查询历史数据
package com.zcc.activiti02; import org.activiti.engine.HistoryService;import org.activiti.engine.Pro ...
- Linux NIO 系列(04-3) epoll
目录 一.why epoll 1.1 select 模型的缺点 1.2 epoll 模型优点 二.epoll API 2.1 epoll_create 2.2 epoll_ctl 2.3 epoll_ ...
- react textArea 高度不变化问题
ref={el =>{ if(el){ el.textareaRef.style.height = el.textareaRef.scrollHeight + 'px'; } } }
- window 下总是object_detection/protos/*.proto: No such file or directory
这是因为目前的protoc3.5有Bug,换成3.4就好了https://github.com/google/protobuf/releases/tag/v3.4.0
- react 16.3+ 新生命周期 作业
1.有哪些⽣命周期被舍弃(3个),哪些⽣命 周期是新增(2个)? componentWillMount().componentWillReceiveProps().componentWillUpdat ...
- shell整数运算
- Linux解压rar文件
Linux解压rar文件(unrar安装和使用,分卷解压) windows平台很多压缩文档为rar文件,那么怎么做到Linux解压rar文件(unrar安装和使用)? 简单,centos5安装unra ...
- OpenGL学习——绘制第一个三角形
终于把三角形绘制出来了,首先一些关键概念.操作. Vertex Data 顶点数据 VBO Vertex Buffer Objects 顶点缓冲对象 VA ...
- Linux账号管理与ALC权限设定(二) 批量增加用户脚本
接上篇.鸟哥提出了一个问题.就是 如果myuser1用户是这个项目的助理,他只能查看该目录下的内容,而无法修改删除.那该如何操作呢? 首先,不能将该用户加入projecta这个群组,否则他也可以修改删 ...
- C# System.Windows.Forms.Panel
UserControl 定义的界面 输出到panel 实现界面切换