python练习题(二)
题目:
已知以下几期双色球号码(最后一个数字为蓝球),
2019080 03 06 08 20 24 32 07
2019079 01 03 06 09 19 31 16
2019078 01 17 27 29 31 33 12
2019077 09 11 13 18 21 22 15
2019076 12 15 19 20 29 32 14
2019075 05 08 20 22 31 33 03
2019074 12 21 27 29 31 33 04
2019073 01 02 06 12 16 18 08
2019072 02 09 13 15 22 30 15
2019071 01 08 19 24 29 30 04 要求:
一、运行后展示:
1.查询双色球号码:
2.查询出现号码次数
3.输入新号码
q.退出 如果输入1:
1.2019080
2.2019079
3.·····(效果同上)
q.退出
输入号码后展示对应的结果;如果号码不存在或者非数字提示请重新输入
如果输入2
结果展示 红球中各个号码出现的次数、蓝球中各个号码出现的次数;
如果输入3(附加题,选做)
新增的号码支持前面功能 1、2;退出后新增的号码不会保存;如果输入非数字或红球大于33 蓝球大于16 提示请重新输入
如果输入q 退出
小余的答案:
#!/opt/python27/bin/python
# -*- coding:utf-8 -*-
# author:why
# date:20190715 '''
已知以下几期双色球号码(最后一个数字为蓝球),
2019080 03 06 08 20 24 32 07
2019079 01 03 06 09 19 31 16
2019078 01 17 27 29 31 33 12
2019077 09 11 13 18 21 22 15
2019076 12 15 19 20 29 32 14
2019075 05 08 20 22 31 33 03
2019074 12 21 27 29 31 33 04
2019073 01 02 06 12 16 18 08
2019072 02 09 13 15 22 30 15
2019071 01 08 19 24 29 30 04 要求:
一、运行后展示:
1.查询双色球号码:
2.查询出现号码次数
3.输入新号码(暂不实现)
q.退出 如果输入1:
1.2019080
2.2019079
3.·····(效果同上)
q.退出
输入号码后展示对应的结果;如果号码不存在或者非数字提示请重新输入 如果输入2
结果展示 红球中各个号码出现的次数、蓝球中各个号码出现的次数; 如果输入3(附加题,选做)
新增的号码支持前面功能 1、2;退出后新增的号码不会保存;如果输入非数字或红球大于33 蓝球大于16 提示请重新输入 如果输入q 退出
''' class doubleSle:
def __init__(self):
douData = {2019080: [03, 06, 8, 20, 24, 32, 07],
2019079: [01, 03, 06, 9, 19, 31, 16],
2019078: [01, 17, 27, 29, 31, 33, 12],
2019077: [9, 11, 13, 18, 21, 22, 15],
2019076: [12, 15, 19, 20, 29, 32, 14],
2019075: [05, 8, 20, 22, 31, 33, 03],
2019074: [12, 21, 27, 29, 31, 33, 04],
2019073: [01, 02, 06, 12, 16, 18, 8],
2019072: [02, 9, 13, 15, 22, 30, 15],
2019071: [01, 8, 19, 24, 29, 30, 04]}
self.douData = douData
seleOne = ['1.查询双色球号码:', '2.查询出现号码次数:', 'q.退出']
seleTwo = sorted(self.douData.keys())
self.seleOne = seleOne
self.seleTwo = seleTwo def doubleSleCount(self):
'''
统计红球、篮球出现次数
:return:
'''
countRed=[0]
countBlue = [0]
for i in range(1,34):
countRed.append(0)
for j in range(0,len(self.douData.values()[0])-1):
for k in range(0,len(self.douData.keys())):
if i == self.douData.values()[k][j]:
countRed[i] +=1 for i in range(1,17):
countBlue.append(0)
for j in range(0, len(self.douData.keys() )):
if i == self.douData.values()[j][len(self.douData.values()[0])-1]:
countBlue[i] +=1 print countRed,countBlue
return [countRed,countBlue] def doubleSleRaw(self,liRes,num):
'''
将列表转成str,并换行
:param liRes:
:return:
'''
s = ''
if num == 0:
for i in liRes:
s += i+'\t\n'
elif num == 1:
for i in range(0,len(liRes)):
s += '{a}.{b}\t\n'.format(a=(i+1),b=liRes[i])
return s def begin(self):
'''
z循环开始
:return:
'''
while True:
# doubleSleC = doubleSle()
numOne = raw_input(self.doubleSleRaw(self.seleOne,0))
# 判断是否是整数
if numOne.isdigit() :
numOneInt = int(numOne)
if numOneInt == 1:
numTwo = raw_input(self.doubleSleRaw(self.seleTwo,1))
if numTwo.isdigit():
numTwoInt = int(numTwo)
if numTwoInt >0 and numTwoInt <= len(sorted(self.douData.keys())):
print('查询结果:{a} {b}'.format(a=(sorted(self.douData.keys()))[numTwoInt-1],b=self.douData[(sorted(self.douData.keys()))[numTwoInt-1]]))
else:
print('请重新输入')
continue
else:
print('请重新输入')
continue
elif numOneInt == 2:
doubleSleCount = self.doubleSleCount()
print('红球出现的次数:')
for i in range(0,len(doubleSleCount[0])-1):
print('{a}出现的次数:{b}').format(a=(i+1),b=doubleSleCount[0][i+1])
print('篮球出现的次数:')
for i in range(0, len(doubleSleCount[1])-1):
print('{a}出现的次数:{b}').format(a=(i+1),b=doubleSleCount[1][i+1])
else:
print('请重新输入')
continue
else:
if numOne == 'q':
exit()
else:
print('请输入数字') if __name__ == '__main__':
s = doubleSle()
s.begin()
敏敏的答案:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @File : DoubleColorBall.py
# @Author: xuemin.feng
# @Date : 2019/7/15 """
已知以下几期双色球号码(最后一个数字为蓝球),
2019080 03 06 08 20 24 32 07
2019079 01 03 06 09 19 31 16
2019078 01 17 27 29 31 33 12
2019077 09 11 13 18 21 22 15
2019076 12 15 19 20 29 32 14
2019075 05 08 20 22 31 33 03
2019074 12 21 27 29 31 33 04
2019073 01 02 06 12 16 18 08
2019072 02 09 13 15 22 30 15
2019071 01 08 19 24 29 30 04 要求:
一、运行后展示:
1.查询双色球号码:
2.查询出现号码次数
3.输入新号码
q.退出 如果输入1:
1.2019080
2.2019079
3.·····(效果同上)
q.退出
输入号码后展示对应的结果;如果号码不存在或者非数字提示请重新输入 如果输入2
结果展示 红球中各个号码出现的次数、蓝球中各个号码出现的次数; 如果输入3(附加题,选做)
新增的号码支持前面功能 1、2;退出后新增的号码不会保存;如果输入非数字或红球大于33 蓝球大于16 提示请重新输入
如果输入q 退出 思路:
1、拆成dict{"2019071":"01 08 19 24 29 30 04",,,,,,,},根据key取value
2、红球、篮球分别放list里,遍历记录次数
""" # 将原始字符串变换为list,再转换成dict,方便按期数取值
def balls2dict():
s1 = "2019080 03 06 08 20 24 32 07"
s2 = "2019079 01 03 06 09 19 31 16"
s3 = "2019078 01 17 27 29 31 33 12"
s4 = "2019077 09 11 13 18 21 22 15"
s5 = "2019076 12 15 19 20 29 32 14"
s6 = "2019075 05 08 20 22 31 33 03"
s7 = "2019074 12 21 27 29 31 33 04"
s8 = "2019073 01 02 06 12 16 18 08"
s9 = "2019072 02 09 13 15 22 30 15"
s10 = "2019071 01 08 19 24 29 30 04"
# 先转换成list
balllist = [s1, s2, s3, s4, s5, s6, s7, s8, s9, s10] # 根据题意,转换成dict,方便根据期数取值
balldict = []
for i in range (len (balllist)):
dic = {balllist[i][:7]: balllist[i][8:]}
balldict.append (dic) return balldict # 取出key生成列表,按期数倒序
def getKeys():
balldict = balls2dict ()
keys = []
for i in range (len (balldict)):
keys.append (balldict[i].keys ())
keys.sort (reverse=True)
return keys # 根据输入数字,输出期数
def fromNum2Key():
num_date = []
keys = getKeys ()
for i in range (len (keys)):
num_date.append (str (i + 1) + "." + str (keys[i]).replace ("['", "").replace ("']", ""))
print num_date[i] # 将红篮球拆分,分别计算重复次数
def getValues():
balldict = balls2dict ()
values = []
redballs = []
blueballs = [] # 将每组红蓝球放一个集合
for i in range (len (balldict)):
values.append (str (balldict[i].values ()).replace ("['", "").replace ("']", "").split (" "))
# return values # 将所有红球放一个大集合,准备计算次数
for i in range (10):
for j in range (6):
redballs.append (values[i][j])
print redballs # 红球出现的次数(网上查的set去重方法,简单的一笔,sorted排序)
redballs_set = sorted (set (redballs)) for redball in redballs_set:
print ("红球 %s 出现过 %s 次" % (redball, redballs.count (redball))) # 篮球出现的次数
for i in range (10):
for j in range (7, 8):
blueballs.append (values[i][j])
# print blueballs
blueballs_set = sorted (set (blueballs))
for blueball in blueballs_set:
print ("蓝球 %s 出现过 %s 次" % (blueball, blueballs.count (blueball))) def entranceEx():
while True:
one = raw_input ("1.查询双色球号码:" + "\n" + "2.查询出现号码次数" + "\n" + "3.输入新号码" + "\n" + "q.退出" + "\n" + "输入以上序号进入:")
if one == 'q':
exit ()
elif int (one) == 1:
fromNum2Key ()
two = input ("#输入序号查看开奖结果:")
balldict = balls2dict ()
two_value = str (balldict[two - 1].values ()).replace ("['", "").replace ("']", "")
print two_value + "\n" + "---------------------" + "\n"
elif int (one) == 2:
# print "TODO-查询出现号码次数"
getValues ()
print "---------------------" + "\n" elif int (one) == 3:
print "TODO-输入新号码"
print "---------------------" + "\n" else:
print "#输入有误" if __name__ == '__main__':
# print balls2dict()
# print fromNum2Key()
print getValues()
# print entranceEx ()
四爷的答案:
# encoding: utf-8
doublelist = {2019080: [03, 06, 8, 20, 24, 32, 07], 2019079: [01, 03, 06, 9, 19, 31, 16],2019078: [01, 17, 27, 29, 31, 33, 12], 2019077: [9, 11, 13, 18, 21, 22, 15],2019076: [12, 15, 19, 20, 29, 32, 14], 2019075: [05, 8, 20, 22, 31, 33, 03],2019074: [12, 21, 27, 29, 31, 33, 04], 2019073: [01, 02, 06, 12, 16, 18, 8],2019072: [02, 9, 13, 15, 22, 30, 15], 2019071: [01, 8, 19, 24, 29, 30, 04]}
doublelist1 = [03, 06, 8, 20, 24, 32,01, 03, 06, 9, 19, 31,01, 17, 27, 29, 31, 33,9, 11, 13, 18, 21, 22,12, 15, 19, 20, 29, 32,05, 8, 20, 22, 31, 33,12, 21, 27, 29, 31, 33,01, 02, 06, 12, 16, 18,02, 9, 13, 15, 22, 30,01, 8, 19, 24, 29, 30]
doublelist2 = {07,16,12,15,14,03,04,8,15,04}
#所有蓝球一个数组
result_dic={}
for item_str in doublelist1:
if item_str not in result_dic:
result_dic[item_str]=1
else:
result_dic[item_str]+=1
print("每个蓝球号码出现的次数集合"+ str(result_dic))
#所有红球一个数组
result_dic={}
for item_str in doublelist2:
if item_str not in result_dic:
result_dic[item_str]=1
else:
result_dic[item_str]+=1
print("每个红球号码出现的次数集合"+ str(result_dic))
for i in doublelist:
while True:
guess_num = raw_input("请输入一个值:")
# 判断是不是等于q,等于q退出
if guess_num == 'q':
print("游戏结束")
exit(0)
# 号码不存在或者非数字提示请重新输入
if guess_num.isdigit():
# 判断是哪一期的数组
if int(guess_num) == 2019080:
print ("03, 06, 8, 20, 24, 32, 07")
elif int(guess_num) == 2019079:
print("01, 03, 06, 9, 19, 31, 16")
elif int(guess_num) == 2019078:
print("01, 17, 27, 29, 31, 33, 12")
elif int(guess_num) == 2019077:
print("9, 11, 13, 18, 21, 22, 15")
elif int(guess_num) == 2019076:
print("12, 15, 19, 20, 29, 32, 14")
elif int(guess_num) == 2019075:
print("05, 8, 20, 22, 31, 33, 03")
elif int(guess_num) == 2019074:
print("12, 21, 27, 29, 31, 33, 04")
elif int(guess_num) == 2019073:
print("01, 02, 06, 12, 16, 18, 8")
elif int(guess_num) == 2019072:
print("02, 9, 13, 15, 22, 30, 15")
elif int(guess_num) == 2019071:
print("01, 8, 19, 24, 29, 30, 04")
else:
print ("请重新输入!")
总结:三个人的作业中对计数都用了不同的方法,我的循环遍历的方法使用较差
python练习题(二)的更多相关文章
- PYTHON练习题 二. 使用random中的randint函数随机生成一个1~100之间的预设整数让用户键盘输入所猜的数。
Python 练习 标签: Python Python练习题 Python知识点 二. 使用random中的randint函数随机生成一个1~100之间的预设整数让用户键盘输入所猜的数,如果大于预设的 ...
- python/MySQL练习题(二)
python/MySQL练习题(二) 查询各科成绩前三名的记录:(不考虑成绩并列情况) select score.sid,score.course_id,score.num,T.first_num,T ...
- Python练习题 024:求位数及逆序打印
[Python练习题 024] 给一个不多于5位的正整数,要求:一.求它是几位数,二.逆序打印出各位数字. ---------------------------------------------- ...
- 第三十三章 linux常规练习题(二)
一.练习题一 1.删除用户基本组shanghai03.发现无法正常删除,怎样才能将其删除掉,不能删除用户.2.打开多个xshell窗口连接登录同一虚拟机,使用不同的用户登录多次,分别使用w和who命令 ...
- Linux基础练习题(二)
Linux基础练习题(二) 1.复制/etc/skel目录为/home/tuer1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限. [root@www ~]# cp -r ...
- Python练习题 028:求3*3矩阵对角线数字之和
[Python练习题 028] 求一个3*3矩阵对角线元素之和 ----------------------------------------------------- 这题解倒是解出来了,但总觉得 ...
- Python练习题 027:对10个数字进行排序
[Python练习题 027] 对10个数字进行排序 --------------------------------------------- 这题没什么好说的,用 str.split(' ') 获 ...
- Python练习题 026:求100以内的素数
[Python练习题 026] 求100以内的素数. ------------------------------------------------- 奇怪,求解素数的题,之前不是做过了吗?难道是想 ...
- Python练习题 025:判断回文数
[Python练习题 025] 一个5位数,判断它是不是回文数.即12321是回文数,个位与万位相同,十位与千位相同. ---------------------------------------- ...
- Python练习题 004:判断某日期是该年的第几天
[Python练习题 004]输入某年某月某日,判断这一天是这一年的第几天? ---------------------------------------------- 这题竟然写了 28 行代码! ...
随机推荐
- 超类Object
Object:是类层次结构中的跟类,所有类都直接货间接继承自该类 如果一个方法的形参是Object,那么这里我们就可以传递它的任意的子类对象,相当于传任何数据类型都可以 toString()——返回地 ...
- 最小二乘求解常数k使得kx=y(x,y为列向量)
直接求解法 取范数 \[ E(k)=\|kx-y\|^{2}\\ \] 构建最小二乘得出 \[ \arg \min (E(k))=k^2x^Tx+y^Ty-2x^Tyk \] 对k求导有 \[ 2x^ ...
- matlab中执行mex文件时提示GLIBCXX not found
解决方案参考: http://stackoverflow.com/questions/8421708/glibcxx-not-found-when-compiling-vtk-example-unde ...
- 谈谈redis的热key问题如何解决
引言 讲了几天的数据库系列的文章,大家一定看烦了,其实还没讲完...(以下省略一万字).今天我们换换口味,来写redis方面的内容,谈谈热key问题如何解决.其实热key问题说来也很简单,就是瞬间有几 ...
- 异常查错java.net.SocketException: Connection reset
用httpclient访问后台接口报错java.net.SocketException: Software caused connection abort: recv failed,百度了一圈都说是由 ...
- Python3数据类型之数字
1. Python数字类型的作用 Python数字类型用来存储数值,它是不可变对象,一旦定义之后,其值不可以被修改.如果改变了数字类型的值,就要重新为其分配内存空间. 定义一个数字类型的变量:a = ...
- SpringBoot中使用@Scheduled创建定时任务
SpringBoot中使用@Scheduled创建定时任务 定时任务一般会在很多项目中都会用到,我们往往会间隔性的的去完成某些特定任务来减少服务器和数据库的压力.比较常见的就是金融服务系统推送回调,一 ...
- 利用Anaconda软件安装opencv模块
先说明我安装opencv环境的原因:因为我Anaconda中创建了tensorflow和pytorch虚拟环境,想在每个虚拟环境下都安装opencv模块,这样在后期进行代码调试的时候更加便捷,以下是我 ...
- Python开发【第一章】:简介和入门
Python简介 Python的创始人为Guido van Rossum.1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,做为ABC 语言的一种继承. ...
- 为什么无人机测量主流现在都不用RTK技术,而是PPK技术【转】
为什么无人机测量主流现在都不用RTK技术,而是PPK技术_宇辰网_让世界读懂无人机_全球专业无人机资讯|电商|大数据服务平台 大疆Phantom 4 RTK正式发布_宇辰网_让世界读懂无人机_全球专业 ...