python基础网课上的一个小练习题,没什么技巧性,几个知识点的综合练习吧
import random
import operator
class dbb: #建立一个双色球对象
def __init__(self):
self.redb=[]
self.blub=[]
def welcom(self):
print('********************************************')
print('***************** 双色球 *******************')
print('**************** 1、机选 *******************')
print('**************** 2、自选 *******************')
print('********************************************')
def jixuan(self):
self.redb=random.sample(range(1,34),6) #1-34中选出6个数,不重复
self.blub=random.randint(1,16)
print('所选号码为:',end='')
for i in self.redb:
print (i,end=' ')
print (self.blub)
self.kaij()
def zixuan(self):
while(1):
try:
num=input('前6位红球号码,后1位篮球号码,空格隔开:\n')
banum=num.split(' ')
if(len(banum)!=7):
print("输入号码不为7个,请重新输入")
continue
red=banum[0:6]
blu=banum[6]
for i in banum:
i=int(i)
for i in red:
a=red.count(i) #统计列表元素个数
if(a>1):
print("红球号码重复,请重新输入")
break
break
except ValueError:
print("输入号码错误,请重新输入") #判断输入号码都是整数,用isdigit()函数应该更好一点
self.redb=red
self.blub=blu
print('所选号码为:',end='')
for i in self.redb:
print (i,end=' ')
print(self.blub)
self.kaij()
def kaij(self):
zjn=0
red=random.sample(range(1,34),6)
blu=random.randint(1,16)
print ('中奖号码为:',end='')
for i in red:
print (i,end=' ')
print(blu)
for i in self.redb:
for j in red:
if(i==j):
zjn+=1 #不知道有没有直接比较列表元素的函数,暂时没有学到就用这种方法实现了
if(zjn==6 and operator.eq(blu,self.blub)):
print("获得1等奖")
elif(zjn==6):
print("获得2等奖")
elif(zjn==5 and operator.eq(blu,self.blub)):
print("获得3等奖")
elif(zjn==5 or zjn==4 and operator.eq(blu,self.blub)):
print("获得4等奖")
elif(zjn==4 or zjn==3 and operator.eq(blu,self.blub)):
print("获得5等奖")
elif(operator.eq(blu,self.blub)):
print("获得6等奖")
else:
print("未获奖")
a=dbb()
while(1):
a.welcom()
nub=input("选择功能:")
if(nub=='1'): a.jixuan()
elif(nub=='2'): a.zixuan()
elif(nub=='3'): a.kaij()