学了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. Rust <1>:数据类型、变量、可变性、常量、隐藏

    rust 是强类型语言,所有变量.常量都必须有明确的数据类型:很多情况下,省略类型声明,编译器可自动推导,但不是所有情况下都会成功. rust 有整型.浮点型.布尔型.字符型.数组.元组.枚举.结构体 ...

  2. Java内部类类型

    可以在类中的任何位置定义内部类,并在其中编写Java语句.有三种类型的内部类. 内部类的类型取决于位置和声明的方式. 成员内部类 局部内部类 匿名内部类 成员内部类 成员内部类在类中声明的方式与声明成 ...

  3. 通过一条很慢的SQL梳理下SQL优化基础

  4. Python面试题之这两个参数是什么意思:*args,**kwargs?我们为什么要使用它们?

    如果我们不确定要往函数中传入多少个参数,或者我们想往函数中以列表和元组的形式传参数时,那就使要用*args: 如果我们不知道要往函数中传入多少个关键词参数,或者想传入字典的值作为关键词参数时,那就要使 ...

  5. java.sql.BatchUpdateException: ORA-01861: 文字与格式字符串不匹配

    解决: to_date(#runtime#,'yyyy-MM-dd HH24:mi:ss'), <!-- 执行时间:DATE -->

  6. 浅谈Java/Android下的注解

    什么是注解 java.lang.annotation,接口 Annotation,在JDK5.0及以后版本引入. 注解是代码里的特殊标记,这些标记可以在编译.类加载.运行时被读取,并执行相应的处理.通 ...

  7. $@、$*和环境变量IFS

  8. 让Nginx路径中的子目录匹配文件夹的另一种写法

    其实相当于对路径做一种通配符,根据路径名访问相应的文件夹.直接看高潮部分如下.. location /static { root /var/www/usmt; index index.html boa ...

  9. gradle笔记

    gradle笔记 一.基础知识 1.1.groovy语言 Groovy适用于Java虚拟机的一种敏捷的动态语言,他是一种成熟的面向对象编程语言,既可以用于面向对象编程,又可以用作纯粹的脚本语言,使用该 ...

  10. Codeforces 346D Robot Control DP spfa 01BFS

    题意及思路:https://www.cnblogs.com/zjp-shadow/p/9562888.html 这题由于性质特殊,可以用01BFS来进行DP的转移. 代码: #include < ...