算法基础DP第三弹 —— 竞赛篇
Posted 天使Di María
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法基础DP第三弹 —— 竞赛篇相关的知识,希望对你有一定的参考价值。
一、计数问题
(一)Question
1. 问题描述
2. Input
输入包含多组测试数据。每组测试数据占一行,包含两个整数 a 和 b。当读入一行为 0 0 时,表示输入终止,且该行不作处理。(0 < a, b < 100000000)
3. Output
每组数据输出一个结果,每个结果占一行。每个结果包含十个用空格隔开的数字,第一个数字表示 0 出现的次数,第二个数字表示 1 出现的次数,以此类推。
4. Sample Input
1 10
44 497
346 542
1199 1748
1496 1403
1004 503
1714 190
1317 854
1976 494
1001 1960
0 0
5. Sample Output
1 2 1 1 1 1 1 1 1 1
85 185 185 185 190 96 96 96 95 93
40 40 40 93 136 82 40 40 40 40
115 666 215 215 214 205 205 154 105 106
16 113 19
python学习之路——第三弹 (作业篇第一题)
作业一:编写登录接口
1.输入用户名密码
2.认证成功后显示欢迎信息
3.输错三次后锁定。
所需知识点 文件基本读写操作,循环,列表,字典
上面的作业题是在学习完数据类型和简单的文件操作之后布置的,所以这个时间节点需要利用已有的知识完成。
作业一思路:
输入用户名密码----输入用raw_input--有个地方存储了用户名和密码,并且用户名密码一一对应--字典或者文件
输错三次后锁定--三次用循环--锁定用存储用户名的方式--列表,字典,文件
成功错误--判断
所以整体代码设计如下 :
#/usr/bin/env python #coding:utf-8 ‘‘‘ 1.输入用户名密码 2.认证成功后显示欢迎信息 3.输错三次后锁定 ‘‘‘ #输入用户名密码 while True: #获取所有用户名和其密码 userDict = {} with open(‘userLogin.txt‘,‘r‘) as f: for line in f.readlines(): L = line.strip(‘\\n‘).split(‘,‘) userDict[L[0]] = L[1] #获取所有被锁定用户名 userList = [] with open(‘blackList.txt‘,‘r‘) as f: for line in f.readlines(): userList.append(line.strip(‘\\n‘)) name = raw_input(‘用户名 >>‘).strip() passwd = raw_input(‘密码 >>‘).strip() if name in userList: print(‘这个账号被锁定了,请换个账号重新登录‘) continue else: if name not in userDict.keys(): print(‘用户名不存在,请重新输入账号和密码‘) continue else: i = 1 while i <= 4: if userDict[name] == passwd: print("欢迎登录,%s"%name) break elif i < 4: passwd = raw_input(‘请重新输入密码,您还有%d次机会>>‘%(4-i)).strip() i += 1 if i ==4: print(‘密码输入错误超过3次,您的账号已经被锁定了,请重新启动程序‘) #用户账号加入锁定文件中 with open(‘blackList.txt‘,‘a+‘) as f: f.writelines(name+‘\\n‘) break break
这样文件菜单目录结构如下
文件样例:
用户名密码文件内容:
xjw,1517
zjl,1516
gl,1515
xrf,1518
黑名单文件:
xjw
gl
以上就基本实现了登录的用户交互的界面,因为中间还没涉及到类和方法,所以代码有点冗余,希望之后在学习之后再做改进!
以上是关于算法基础DP第三弹 —— 竞赛篇的主要内容,如果未能解决你的问题,请参考以下文章