标题无意冒犯,就是觉得这个广告挺好玩的
前言
前期回顾:你要偷偷学Python,然后惊呆所有人(第四天)
在第四天的时候,我们接触了Python的模块调用,这也是Python能够火起来的一大优势。我们还实践了csv模块。
不过冷静下来想想,这样的速度会不会有点过于快了,这样速成的话势必会遗漏掉不少的知识点,而且也有不少小伙伴来问我Python相关的问题。如果大家在学习中遇到困难,想找一个python学习交流环境,可以加入我们的python圈,裙号930900780,可领取python学习资料,会节约很多时间,减少很多遇到的难题。
(tip:言下之意就是:可以和一群有趣的灵魂一起学习有趣的技能,而且讲的也会更全面详细的啦)
好的接下来依旧是那段“高冷的”台词:
本系列文默认各位有一定的C或C++基础,因为我是学了点C++的皮毛之后入手的Python。
本系列文默认各位会百度,学习‘模块’这个模块的话,还是建议大家有自己的编辑器和编译器的,上一篇已经给大家做了推荐啦?
本系列也会着重培养各位的自主动手能力,毕竟我不可能把所有知识点都给你讲到,所以自己解决需求的能力就尤为重要,所以我在文中埋得坑请不要把它们看成坑,那是我留给你们的锻炼机会,请各显神通,自行解决。
1234567
好,这是一篇复习文,坐好咯,打开你们的编译器,不论是在线编译器还是PC编译器
其实我不知道print函数要不要试一下,是挺简单的,不过嘛,也是有那么些坑坑洼洼的哦。
比方说打这个出来:
*
* *
’*** ’
* * * *
** ***
12345
你会发现打的是什么鬼。
这里想说的是print函数在处理tab键上要注意的点。
以及对打印引号的处理办法。
转义字符
\n 代表换行;’ 代表单引号。
三引号
三引号可以把内容里的单引号打印出来且可以换行。
字符串拼接
给你一些变量如下:
name = '祖冲之'
contribute = '计算出了π'
than = '虽然我记不住,但是我知道整数部分是'
number = '3.14'
1234
请你打印出以下这句话:“祖冲之计算出了π,虽然我记不住,但是我知道整数部分是3”。
条件判断与循环语句
其实条件判断与循环语句上次是有写过了,那个猜数字的,也有些基础好的朋友就直接调用了random包,很强。
但也不是所有人基础都好的嘛,所以之前没有用随机数而是用伪随机数的朋友就再做一次吧,
这样吧,我们换个玩法。
题目需求:
1、这个数介于1~1000
2、你可以猜个数,系统告诉你偏大偏小并会压缩范围
3、你可以让系统在这个数的左右各压缩一次随机范围,碧如说现在这个数的范围为1~500,数是100,那么你选择压缩一半范围之后系统就会告诉你(20~300),这样的
4、你可以让系统告知你奇偶数,这个条件不作为重新划分区间的办法
以上,2、3分别可以使用4次,4可以使用1次,猜中,就是猜中了,猜不着,那也很正常嘛哈哈哈
123456
列表与字典
写了上面那个题目,估计大家也挺累的,到这里大家放松一下,可以自己去找一些列表啊、元组啊、字典啊的方法。
当然,我们的学习群里会详细的介绍到。
注:列表和字典都是可任意嵌套的,可以同时包容不同类型的数据(如字符串、字典、列表等)。
所以,在提取数据时,要留意每个字符串都占据了一个偏移量。
函数与类
哎呀,想创意好累哦,差点我就放弃了,想让你们把上面那个猜数字的封装一个函数,然后把函数放类里面。
不过,啊哈,灵机一动。
要不咱写个抽奖程序吧,这样,听我说:
1、来一个字典存名字(号码牌+名字),来一个列表存礼品
2、先挑一个礼品出来,然后从这个字典中随机抽一个号码牌,抽到谁的号码牌,礼品就是谁的了
3、以此类推,直到礼品发完
4、发礼品是要纪录的啊,到时候找财务报销嘛,这个账单要求是不可修改的,那怎么办呢?对,元组
5、如果要搞得逼真一点,可以设置一个定时器,时间到了亮结果,当然,我们先不弄那个轮盘转转转的
12345
加油!!!
至于类嘛,把这个功能和上边那个猜数字的整理到类里面嘛
模块
模块是吗?前面用了几个模块了来着?这里再用一个吧,把礼品发放记录的文件用Excel存起来吧,用openpyxl模块吧。
图片之后我会放上我的一些解答:
猜谜游戏
勉强能看啦,算法部分还可以优化,不过有点腰酸背痛,就,嗯。
import random
class GuessNum:
def __init__(self,max,min):
self.max = max
self.min = min
self.num_func1 = 4 #方法1:猜大小
self.num_func2 = 4 #方法2:压缩一半大小
self.num_func3 = 1
def Num(self):
random.seed()
self.num = random.randint(self.max, self.min)
return self.num
def func1(self,guess):
if self.num_func1 == 0:
print('抱歉,机会已用完')
else:
self.num_func1-=1;
if guess > self.num:
print('太大了哦,再来一次吧')
self.max = guess
elif guess < self.num:
print('再大点点,就快成功咯')
self.min = guess
else:
print('好滴吧,记住这个数字,把剩下的机会用完吧,虽然你猜中了')
def func2(self):
if self.num_func2 == 0:
print('抱歉,机会已用完')
else:
self.num_func2-=1
random.seed()
self.min = random.randint(self.num, self.min)
random.seed()
self.max = random.randint(self.max, self.num)
print('现在的范围是:'+str(self.min)+'~'+str(self.max))
def func3(self):
if self.num_func3 == 0:
print('抱歉,机会已用完')
else:
self.num_func3-=1
if(self.num%2):
print('奇数')
else:
print('偶数')
def func4(self,guess):
if(guess == self.Num()):
print('好滴吧,没得玩了。为啥?被你猜中了呗')
else:
print('抱歉哦,猜错咯,再来一把呗')
def Guess(self):
num = self.Num()
while(self.num_func1 | self.num_func2 | self.num_func3):
print('你有三个选择:\n'
'选择a:你猜一个数,我告诉你大小\n'
'选择b:系统将随机为你压缩大小\n'
'选择c:我直接告诉你是奇数还是偶数\n'
'请输入你的选择,如果已有答案,请直接输入数字:')
num_in = input()
if(num_in == 'a'):
print('请输入你的数据:')
num_in = int(input())
self.func1(num_in)
elif(num_in == 'b'):
self.func2()
elif(num_in == 'c'):
self.func3()
else:
self.func4(num_in)
print('机会已全部用完,请输入你的数字:')
num_in = int(input())
self.func4(num_in)
guess = GuessNum(0,1000)
guess.Guess()
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
抽奖模块
我们假设这个礼品已经选好了,代码是前面那个猜谜的提升版啊,重点我们放在那个Excel上。
有这么几个获奖幸运儿:
(
"小王:CSDN定制双肩包",
"小李:腾讯云社区定制T恤",
"小吴:异步社区会员月卡一张",
"小刘:冬天的第一锅火锅"
)
123456
好,我们现在给它写进Excel里面。
(本来想留个坑,想了想,还是填上了,略显尴尬,调了十分钟,最后发现元组里面忘记加逗号了。。。)
第一步:pip install openpyxl
创建一个Excel表格这点儿事儿我就不说啦,我们打开编辑器,我的是pycharm,导入新包,因为openpyxl不是它自带的啊
所以你直接import是会报错的(我已经安装好了)
那怎么安装呢?
如果不是用pycharm的朋友请看我小标题那条语句,在cmd终端中执行。
用pycharm的跟我做:
左上角,“File”->“setting”->
知道在哪儿啊,不用我多说啊。
然后右上角那个圈出来的“+”点一点->
先在上面的搜索框输入咱要的,也就是openpyxl
然后再下面弹出来的选中它,接着左下角,install。
它就会开始:installing,下载完它会告诉你下载完,没跟你说的话就要脑子灵光点了,然后退出的时候记得apply一下,上边那个有“+”号的那个界面,右下角,“Apply”,千万记得。
import datetime
from random import choice
from time import time
from openpyxl import load_workbook
from openpyxl.utils import get_column_letter
# 设置文件 mingc
addr = "抽奖程序.xlsx"
# 打开文件
wb = load_workbook(addr)
# 创建一张新表
ws = wb.create_sheet()
# 第一行输入
ws.append(['获奖名单','奖品'])
##元组
tump = (
"小王:CSDN定制双肩包",
"小李:腾讯云社区定制T恤",
"小吴:异步社区会员月卡一张",
"小刘:冬天的第一锅火锅"
)
# 输入内容(500行数据)
for i in tump:
#print(i)
data = i.split(':')
#print(data[0]+data[1])
ws.append([data[0], data[1]])
# 获取最大行
row_max = ws.max_row
# 获取最大列
con_max = ws.max_column
# 把上面写入内容打印在控制台
for j in ws.rows: # we.rows 获取每一行数据
for n in j:
print(n.value, end="\t") # n.value 获取单元格的值
print()
# 保存,save(必须要写文件名(绝对地址)默认 py 同级目录下,只支持 xlsx 格式)
wb.save(addr)
最后多说一句,想学习Python可联系小编,这里有我自己整理的整套python学习资料和路线,想要这些资料的都可以进q裙930900780领取。
本文章素材来源于网络,如有侵权请联系删除。