广东省车牌问答小程序

查看 48|回复 3
作者:Tony丶W   
创作缘由
近期被短视频的山东车牌洗脑后,觉得有必要记一下广东省内的车牌号码来自于哪个城市。所以就出现了这个小玩意。
程序玩法
windows双击打开后,根据问题输入对应的答案,回车即可提交答案,答对了会自动下一题,答错了会显示答案。底部会显示正确率和答题数。
题目是随机出现的,也可以手动切换下一题
程序截图


示图.png (20.02 KB, 下载次数: 0)
下载附件
2024-6-22 00:29 上传

程序代码
import sys
import random
from collections import deque
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabel, QLineEdit, QPushButton
from PyQt5.QtGui import QFont
from PyQt5.QtCore import Qt, QTimer
class GuangdongPlateGame(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()
        self.plates = {
            "粤A": "广州", "粤B": "深圳", "粤C": "珠海", "粤D": "汕头", "粤E": "佛山",
            "粤F": "韶关", "粤G": "湛江", "粤H": "肇庆", "粤J": "江门", "粤K": "茂名",
            "粤L": "惠州", "粤M": "梅州", "粤N": "汕尾", "粤P": "河源", "粤Q": "阳江",
            "粤R": "清远", "粤S": "东莞", "粤T": "中山", "粤U": "潮州", "粤V": "揭阳",
            "粤W": "云浮", "粤X": "顺德", "粤Y": "南海", "粤Z": "港澳",
            "粤O": "机关单位"
        }
        self.current_plate = ""
        self.timer = QTimer(self)
        self.timer.setSingleShot(True)
        self.timer.timeout.connect(self.next_question)
        self.total_questions = 0
        self.correct_answers = 0
        self.wrong_answers = 0
        self.recent_plates = deque(maxlen=3)  # 用于存储最近3次出现的车牌
        self.next_question()
    def initUI(self):
        layout = QVBoxLayout()
        self.question_label = QLabel()
        self.question_label.setAlignment(Qt.AlignCenter)
        self.question_label.setFont(QFont('Arial', 24))
        layout.addWidget(self.question_label)
        self.answer_input = QLineEdit()
        self.answer_input.setFont(QFont('Arial', 18))
        self.answer_input.returnPressed.connect(self.check_answer)
        layout.addWidget(self.answer_input)
        self.result_label = QLabel()
        self.result_label.setAlignment(Qt.AlignCenter)
        self.result_label.setFont(QFont('Arial', 16))
        layout.addWidget(self.result_label)
        self.stats_label = QLabel()
        self.stats_label.setAlignment(Qt.AlignCenter)
        self.stats_label.setFont(QFont('Arial', 14))
        layout.addWidget(self.stats_label)
        self.next_button = QPushButton('下一题')
        self.next_button.clicked.connect(self.next_question)
        layout.addWidget(self.next_button)
        self.setLayout(layout)
        self.setGeometry(300, 300, 400, 300)
        self.setWindowTitle('广东车牌游戏')
        self.show()
    def next_question(self):
        available_plates = [plate for plate in self.plates.keys() if plate not in self.recent_plates]
        if not available_plates:
            available_plates = list(self.plates.keys())
        self.current_plate = random.choice(available_plates)
        self.recent_plates.append(self.current_plate)
        self.question_label.setText(f"请输入 {self.current_plate} 对应的地区:")
        self.answer_input.clear()
        self.result_label.clear()
        self.answer_input.setEnabled(True)
        self.answer_input.setFocus()
        self.update_stats()
    def check_answer(self):
        user_answer = self.answer_input.text().strip()
        correct_answer = self.plates[self.current_plate]
        self.total_questions += 1
        if user_answer == correct_answer:
            self.result_label.setText("答对了!")
            self.correct_answers += 1
            self.answer_input.setEnabled(False)
            self.timer.start(1000)
        else:
            self.result_label.setText(f"答错了。正确答案是:{correct_answer}")
            self.wrong_answers += 1
        self.update_stats()
    def update_stats(self):
        accuracy = (self.correct_answers / self.total_questions * 100) if self.total_questions > 0 else 0
        stats_text = f"总题数: {self.total_questions} | 正确: {self.correct_answers} | 错误: {self.wrong_answers} | 正确率: {accuracy:.2f}%"
        self.stats_label.setText(stats_text)
if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = GuangdongPlateGame()
    sys.exit(app.exec_())
源码编译步骤
[ol]
  • Python确认安装了PyQt5和PyInstaller
    pip install PyQt5 pyinstaller
  • 进行编译操作
    pyinstaller --onefile --windowed guangdong_plate_game.py
    [/ol]
    附件
    懒人直接下载链接:https://wwk.lanzouj.com/io34622e0uti

    车牌, 程序

  • 小丑恶人   

    小玩意还可以啊
    ZhjhJZ   

    这个很好,但不够洗脑
    天轩科技   


    ZhjhJZ 发表于 2024-6-22 10:47
    这个很好,但不够洗脑

    我知道你要说什么。你一定要提山东那首歌
    您需要登录后才可以回帖 登录 | 立即注册

    返回顶部