Python實(shí)戰(zhàn)之IQ測(cè)試系統(tǒng)的實(shí)現(xiàn)
導(dǎo)語(yǔ)
智商測(cè)試
通常,智商測(cè)試測(cè)驗(yàn)一個(gè)人在數(shù)字、空間、邏輯、詞匯、創(chuàng)造、記憶等方面的能力。
一般來說,50%的人口,即人口中的一半人屬于正常和平均智力水平(得分在90到109之間)。得分在110以上就屬于高智商者,即很聰明。
據(jù)稱,愛因斯坦智商得分160,屬于天才。?
今天在抖音上面刷到關(guān)于智商、情商、愛情啥等好多測(cè)試的小程序,麻了麻了。
所以小編從上面獲得了靈感,哈哈哈,你想的沒錯(cuò),就是這樣,給大家上線一款這種測(cè)試IQ的小系統(tǒng),快來測(cè)一測(cè)你的智商又多高叭~
一、運(yùn)行環(huán)境
小編使用的環(huán)境:Python3、Pycharm社區(qū)版、其他都是內(nèi)置模塊 你安裝 好python環(huán)境就可以了。
二、資料素材
準(zhǔn)備好相應(yīng)的測(cè)試題目,下面是30題目,答案也要準(zhǔn)備好哦~還有測(cè)試的分?jǐn)?shù)標(biāo)準(zhǔn)嘞都準(zhǔn)備好撒
三、代碼展示
import os import random import datetime def read_file(path, file_name): """ 讀取文件函數(shù) :param path: 路徑 :param file_name: 文件名稱 :return: 文件內(nèi)容 """ # 這里的/ 也可以換成\\ with open(path + "/" + file_name, "r", encoding="utf8") as file: content = file.read() # 因?yàn)槲募?nèi)容比較少 所以直接使用read方法一次性全部讀取 return content if __name__ == '__main__': print("=======================IQ智力測(cè)試(限時(shí)版)=======================") print("-" * 55) print("說明: 測(cè)試時(shí)間: 30分鐘,測(cè)試題數(shù): 30") now = datetime.datetime.now() # 獲取當(dāng)前時(shí)間 delay_time = datetime.timedelta(minutes=30) stop_time = now + delay_time print("測(cè)試結(jié)束時(shí)間為: ", stop_time.strftime("%Y-%m-%d %H:%M:%S")) len_que = len(os.listdir("./que")) score = 0 # 用來統(tǒng)計(jì)得分 msg = ["智商1級(jí): 白癡", "智商1級(jí): 白癡", "智商1級(jí): 白癡", "智商1級(jí): 白癡", "智商1級(jí): 白癡", "智商2級(jí): 智障", "智商3級(jí): 智弱", "智商4級(jí): 臨界", "智商5級(jí): 凡人", "智商6級(jí): 聰慧", "智商7級(jí): 人才", "智商8級(jí): 精英", "智商9級(jí): 天才", "智商9級(jí): 天才", "智商9級(jí): 天才", "智商9級(jí): 天才", "智商9級(jí): 天才", "智商9級(jí): 天才", "智商9級(jí): 天才"] msg2 = ["白癡", "智障", "智弱", "臨界", "凡人", "聰慧", "人才", "精英", "天才"] num_list = list(range(1, len_que + 1)) i = 1 while len(num_list) > 0: num = random.choice(num_list) num_list.remove(num) print(f"\n第 {i} 題: \n" + read_file("./que", "que" + str(num) + ".txt")) # 用戶輸入答案 user_ans = input("請(qǐng)輸入正確答案前面的數(shù)字編號(hào): ").strip() # 讀取正確答案 right_ans = read_file("./ans", "ans" + str(num) + ".txt").strip() if user_ans == right_ans: # 判斷用戶輸入答案與正確一致 score += 6 # 答案一致加6分 now = datetime.datetime.now() left = int((stop_time - now).seconds / 60) if left <= 0: print("答題超時(shí),將結(jié)束測(cè)試!") break else: print(f"剩余答題時(shí)間:{left}分鐘") i += 1 print(f"你的IQ測(cè)試成績(jī)?yōu)? {score} {msg[int(score / 10)]}") # 將成績(jī)和等級(jí)寫入文件 with open("iq.txt", "a", encoding="utf8") as file: file.write(str(score) + "," + msg[int(score / 10)].split(":")[1].strip() + "\n") # 讀取文件中的測(cè)試成績(jī)及等級(jí) score_list = [] # 用來存儲(chǔ)所有的成績(jī) level_list = [] # 用來存儲(chǔ)所有的等級(jí) if os.path.exists("iq.txt"): with open("iq.txt", "r", encoding="gbk") as file: while True: line_content = file.readline().strip() if line_content == "": break else: score_list.append(int(line_content.split(",")[0].strip())) level_list.append(line_content.split(",")[1].strip()) # 對(duì)成績(jī)進(jìn)行排序 score_list.sort(reverse=True) print(f"目前您在所有測(cè)試的成績(jī)中排名第{score_list.index(score) + 1}名," f"超過了{(lán)len(score_list) - (score_list.index(score) + 1)}名選手") print("智商測(cè)試分析圖: ") for item in msg2: print(item, int(level_list.count(item)) * chr(9632), level_list.count(item))
四、效果展示
1)智商測(cè)試限時(shí)版本
?2)木子測(cè)試
到此這篇關(guān)于Python實(shí)戰(zhàn)之IQ測(cè)試系統(tǒng)的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Python IQ測(cè)試系統(tǒng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于python3.7利用Motor來異步讀寫Mongodb提高效率(推薦)
Motor是一個(gè)異步mongodb driver,支持異步讀寫mongodb。它通常用在基于Tornado的異步web服務(wù)器中。這篇文章主要介紹了基于python3.7利用Motor來異步讀寫Mongodb提高效率,需要的朋友可以參考下2020-04-04python Matplotlib數(shù)據(jù)可視化(1):簡(jiǎn)單入門
這篇文章主要介紹了python Matplotlib的相關(guān)資料,幫助大家入門matplotlib,繪制各種圖表,感興趣的朋友可以了解下2020-09-09python使用JSON模塊進(jìn)行數(shù)據(jù)處理(編碼解碼)
這篇文章主要為大家介紹了python使用JSON模塊進(jìn)行數(shù)據(jù)處理編碼解碼的使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06Python中實(shí)現(xiàn)對(duì)Timestamp和Datetime及UTC時(shí)間之間的轉(zhuǎn)換
這篇文章主要介紹了Python中實(shí)現(xiàn)對(duì)Timestamp和Datetime及UTC時(shí)間之間的轉(zhuǎn)換,例子則主要針對(duì)Ubuntu等類UNIX系統(tǒng),需要的朋友可以參考下2015-04-04Django框架中render_to_response()函數(shù)的使用方法
這篇文章主要介紹了Django框架中render_to_response()函數(shù)的使用方法,注意范例中該方法的參數(shù)的使用,需要的朋友可以參考下2015-07-07Python繪制數(shù)據(jù)動(dòng)態(tài)圖的方法詳解
這篇文章主要為大家詳細(xì)介紹了如何利用Python語(yǔ)言繪制好看的數(shù)據(jù)動(dòng)態(tài)圖,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起動(dòng)手嘗試一下2022-07-07Python設(shè)計(jì)模式之策略模式實(shí)例詳解
這篇文章主要介紹了Python設(shè)計(jì)模式之策略模式,結(jié)合實(shí)例形式分析了策略模式的概念、原理并結(jié)合實(shí)例形式分析了Python定義與使用策略模式相關(guān)操作技巧,需要的朋友可以參考下2019-01-01