电脑随机生成4个互不相等的数,你猜。
1:你猜的数和正确答案相比,位置正确的个数
2:你猜的数虽然在正确答案中,但位置不对,它的个数。
代码如下:
#!/usr/bin/env python # -*- coding: utf-8 -*- # import time import sys from random import randint from PyQt5.QtWidgets import QApplication,QWidget,QTableWidgetItem from guess import Ui_Form class myform(QWidget,Ui_Form): def __init__(self): super().__init__() self.setupUi(self) self.randin() #调用函数生成随机数,存入数组 self.i=0 #计数器,计算是否满10次 #各按钮点击事件 self.btn0.clicked.connect(self.showNumber0) self.btn1.clicked.connect(self.showNumber1) self.btn2.clicked.connect(self.showNumber2) self.btn3.clicked.connect(self.showNumber3) self.btn4.clicked.connect(self.showNumber4) self.btn5.clicked.connect(self.showNumber5) self.btn6.clicked.connect(self.showNumber6) self.btn7.clicked.connect(self.showNumber7) self.btn8.clicked.connect(self.showNumber8) self.btn9.clicked.connect(self.showNumber9) self.btn_reset.clicked.connect(self.reset) self.btn_ok.clicked.connect(self.ok) self.play.clicked.connect(self.again) #生成4个随机数存入列表a中 def randin(self): a=[] while(len(a)!=4): x=randint(0,9) if x not in a: a.append(x) self.a=a #点击数字按钮,显示相应数字 def showNumber0(self): self.btn0.setEnabled(False) if self.label1.text()=='': self.label1.setText('0') elif self.label2.text()=='': self.label2.setText('0') elif self.label3.text()=='': self.label3.setText('0') else: self.label4.setText('0') def showNumber1(self): self.btn1.setEnabled(False) if self.label1.text()=='': self.label1.setText('1') elif self.label2.text()=='': self.label2.setText('1') elif self.label3.text()=='': self.label3.setText('1') else: self.label4.setText('1') def showNumber2(self): self.btn2.setEnabled(False) if self.label1.text()=='': self.label1.setText('2') elif self.label2.text()=='': self.label2.setText('2') elif self.label3.text()=='': self.label3.setText('2') else: self.label4.setText('2') def showNumber3(self): self.btn3.setEnabled(False) if self.label1.text()=='': self.label1.setText('3') elif self.label2.text()=='': self.label2.setText('3') elif self.label3.text()=='': self.label3.setText('3') else: self.label4.setText('3') def showNumber4(self): self.btn4.setEnabled(False) if self.label1.text()=='': self.label1.setText('4') elif self.label2.text()=='': self.label2.setText('4') elif self.label3.text()=='': self.label3.setText('4') else: self.label4.setText('4') def showNumber5(self): self.btn5.setEnabled(False) if self.label1.text()=='': self.label1.setText('5') elif self.label2.text()=='': self.label2.setText('5') elif self.label3.text()=='': self.label3.setText('5') else: self.label4.setText('5') def showNumber6(self): self.btn6.setEnabled(False) if self.label1.text()=='': self.label1.setText('6') elif self.label2.text()=='': self.label2.setText('6') elif self.label3.text()=='': self.label3.setText('6') else: self.label4.setText('6') def showNumber7(self): self.btn7.setEnabled(False) if self.label1.text()=='': self.label1.setText('7') elif self.label2.text()=='': self.label2.setText('7') elif self.label3.text()=='': self.label3.setText('7') else: self.label4.setText('7') def showNumber8(self): self.btn8.setEnabled(False) if self.label1.text()=='': self.label1.setText('8') elif self.label2.text()=='': self.label2.setText('8') elif self.label3.text()=='': self.label3.setText('8') else: self.label4.setText('8') def showNumber9(self): self.btn9.setEnabled(False) if self.label1.text()=='': self.label1.setText('9') elif self.label2.text()=='': self.label2.setText('9') elif self.label3.text()=='': self.label3.setText('9') else: self.label4.setText('9') #重置按钮 def reset(self): self.label1.setText('') self.label2.setText('') self.label3.setText('') self.label4.setText('') self.btn0.setEnabled(True) self.btn1.setEnabled(True) self.btn2.setEnabled(True) self.btn3.setEnabled(True) self.btn4.setEnabled(True) self.btn5.setEnabled(True) self.btn6.setEnabled(True) self.btn7.setEnabled(True) self.btn8.setEnabled(True) self.btn9.setEnabled(True) #显示正确答案 def showNub(self): self.label5.setText(str(self.a[0])) self.label6.setText(str(self.a[1])) self.label7.setText(str(self.a[2])) self.label8.setText(str(self.a[3])) self.btn_ok.setEnabled(False) #再来一遍(清空各种内容) def again(self): self.reset() self.label5.setText('') self.label6.setText('') self.label7.setText('') self.label8.setText('') self.table.clearContents() self.btn_ok.setEnabled(True) self.label.setText('再来一遍') self.i=0 #确定按钮,比较你猜的数和随机生成的数 def ok(self): #把你猜的数存入列表b中 b=[int(self.label1.text()),int(self.label2.text()),int(self.label3.text()),int(self.label4.text())] #把你猜的数显示在表格中。self.i表示第几行, x=QTableWidgetItem(str(b)) self.table.setItem(self.i,0,x) #设置单元格中的内容 #判断两个列表 k1=0 #位置正确,计算个数 k2=0 #数对位置不对,计算个数 for j in range(4): if b[j]==self.a[j]: k1+=1 if b[j] in self.a and b[j]!=self.a[j]: k2+=1 #把计算结果写显示在表格内 x1=QTableWidgetItem(str(k1)) self.table.setItem(self.i,1,x1) x2=QTableWidgetItem(str(k2)) self.table.setItem(self.i,2,x2) if b==self.a: self.showNub() self.label.setText('恭喜过关') #满10次未猜对显示正确答案 if self.i==9 and b!=self.a: self.showNub() self.label.setText('闯关失败') self.i+=1 self.reset() if __name__=='__main__': app=QApplication(sys.argv) w=myform() w.show() sys.exit(app.exec_())