如何利用Python对自己的IQ智商判断及测试!太真实了呀!
1. IQ智商判断
智商,即智力商数(Intelligence Quotient),是衡量个人智力高低的标准。智商主要反映人的认知能力、思维能力、语言能力、观察能力、计算能力、律动能力等。也就是说,它主要表现人的理性的能力。智商可以通过一系列的标准测试测量人在其年龄段的智力发展水平,如表1所示,为9级智商评测表格。请编写一个程序,根据提供的9级智商评测表格和用户输入的智商分数,输出对应的智商等级和类别,运行效果如图1、图2所示。
示例代码如下:
iq_score = int(input("请输入你的IQ分数: ").strip()) # 录入数据 if iq_score >= 140: # 判断 print(f"您的IQ分数为: {iq_score},智商9级: 天才") elif 120 <= iq_score < 140: print(f"您的IQ分数为: {iq_score},智商8级: 精英") elif 110 <= iq_score < 120: print(f"您的IQ分数为: {iq_score},智商7级: 人才") elif 90 <= iq_score < 110: print(f"您的IQ分数为: {iq_score},智商6级: 聪慧") elif 80 <= iq_score < 90: print(f"您的IQ分数为: {iq_score},智商5级: 凡人") elif 70 <= iq_score < 80: print(f"您的IQ分数为: {iq_score},智商4级: 临界") elif 60 <= iq_score < 70: print(f"您的IQ分数为: {iq_score},智商3级: 智弱") elif 50 <= iq_score < 60: print(f"您的IQ分数为: {iq_score},智商2级: 智障") else: print(f"您的IQ分数为: {iq_score},智商1级: 白痴")
2. 2行代码进行IQ智商判断
只用两行代码,根据用户输入的IQ智商分数与表1的9级智商评测表进行匹配,并输出IQ智商类别。运行效果如图1、图2所示。
示例代码如下:
level_list = ["白痴", "白痴", "白痴", "白痴", "白痴", "智障", "智弱", "临界", "凡人", "聪慧", "聪慧", "人才", "精英", "天才", "天才", "天才", "天才", "天才", "天才", "天才"] print(level_list[int(int(input("请输入你的IQ分数(在0-190范围输入): ").strip()) / 10)])
3. IQ智商测试
请编写一个程序,根据本例提供的30道智商测试题来测试智商,每题回答正确加6分,回答错误不记分,完成本次测试,程序输出智商分数。运行效果如下图1、图2所示。因为30道题目控制台输出太长,所以就截取了开头和结尾,省略了中间的答题。
这篇博文所用到的的文件资源网盘如下:
示例代码如下:
import os def read_file(path, file_name): """ 读取文件函数 :param path: 路径 :param file_name: 文件名称 :return: 文件内容 """ # 这里的/ 也可以换成\\ with open(path + "/" + file_name, "r", encoding="utf8") as file: content = file.read() # 因为文件内容比较少 所以直接使用read方法一次性全部读取 return content if __name__ == '__main__': print("=======================IQ智力测试=======================") print("-" * 55) len_que = len(os.listdir("./que")) score = 0 # 用来统计得分 # 30道题 每次循环读取一道题 但是如果增加到了40道题 # 是不是for循环又要改了 所以最好是动态获取文件夹中的文件个数 for i in range(1, len_que + 1): # 读取文件 因为读取文件会在后续频繁使用到 所以封装为函数 print(f"\n第 {i} 题: \n" + read_file("./que", "que" + str(i) + ".txt")) # 用户输入答案 user_ans = input("请输入正确答案前面的数字编号: ").strip() # 读取正确答案 right_ans = read_file("./ans", "ans" + str(i) + ".txt").strip() if user_ans == right_ans: # 判断用户输入答案与正确一致 score += 6 # 答案一致加6分 print(f"你的IQ测试成绩为: {score}")
4. IQ智商测试与判断(顺序版)
完善上面的IQ智商测试程序,根据IQ智商测试分数和表1的9级智商评测表输出答题者的智商等级和所属类别。运行结果如图所示。
示例代码如下:
import os def read_file(path, file_name): """ 读取文件函数 :param path: 路径 :param file_name: 文件名称 :return: 文件内容 """ # 这里的/ 也可以换成\\ with open(path + "/" + file_name, "r", encoding="utf8") as file: content = file.read() # 因为文件内容比较少 所以直接使用read方法一次性全部读取 return content if __name__ == '__main__': print("=======================IQ智力测试=======================") print("-" * 55) len_que = len(os.listdir("./que")) score = 0 # 用来统计得分 msg = ["智商1级: 白痴", "智商1级: 白痴", "智商1级: 白痴", "智商1级: 白痴", "智商1级: 白痴", "智商2级: 智障", "智商3级: 智弱", "智商4级: 临界", "智商5级: 凡人", "智商6级: 聪慧", "智商7级: 人才", "智商8级: 精英", "智商9级: 天才", "智商9级: 天才", "智商9级: 天才", "智商9级: 天才", "智商9级: 天才", "智商9级: 天才", "智商9级: 天才"] # 30道题 每次循环读取一道题 但是如果增加到了40道题 # 是不是for循环又要改了 所以最好是动态获取文件夹中的文件个数 for i in range(1, len_que + 1): # 读取文件 因为读取文件会在后续频繁使用到 所以封装为函数 print(f"\n第 {i} 题: \n" + read_file("./que", "que" + str(i) + ".txt")) # 用户输入答案 user_ans = input("请输入正确答案前面的数字编号: ").strip() # 读取正确答案 right_ans = read_file("./ans", "ans" + str(i) + ".txt").strip() if user_ans == right_ans: # 判断用户输入答案与正确一致 score += 6 # 答案一致加6分 print(f"你的IQ测试成绩为: {score} {msg[int(score / 10)]}")
5. IQ智商测试与判断(乱序版)
上面的IQ智商测试程序是按照题目的正常顺序出题的,修改程序,随机抽取题目进行测试,然后根据IQ智商测试分数和表1的9级智商评测表输出答题者的智商等级和所属类别。
运行效果如下面的gif图:
示例代码如下:
import os import random def read_file(path, file_name): """ 读取文件函数 :param path: 路径 :param file_name: 文件名称 :return: 文件内容 """ # 这里的/ 也可以换成\\ with open(path + "/" + file_name, "r", encoding="utf8") as file: content = file.read() # 因为文件内容比较少 所以直接使用read方法一次性全部读取 return content if __name__ == '__main__': print("=======================IQ智力测试=======================") print("-" * 55) len_que = len(os.listdir("./que")) score = 0 # 用来统计得分 msg = ["智商1级: 白痴", "智商1级: 白痴", "智商1级: 白痴", "智商1级: 白痴", "智商1级: 白痴", "智商2级: 智障", "智商3级: 智弱", "智商4级: 临界", "智商5级: 凡人", "智商6级: 聪慧", "智商7级: 人才", "智商8级: 精英", "智商9级: 天才", "智商9级: 天才", "智商9级: 天才", "智商9级: 天才", "智商9级: 天才", "智商9级: 天才", "智商9级: 天才"] 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("请输入正确答案前面的数字编号: ").strip() # 读取正确答案 right_ans = read_file("./ans", "ans" + str(num) + ".txt").strip() if user_ans == right_ans: # 判断用户输入答案与正确一致 score += 6 # 答案一致加6分 i += 1 print(f"你的IQ测试成绩为: {score} {msg[int(score / 10)]}")
6. IQ智商测试与判断(分析版)
修改上面的程序,在对用户进行智商测试时并将测试成绩记录下来,记录文件为源文件同路径的iq.txt文件。记录测试成绩和智商级别(如天才、精英等),结合表1并分析测试者成绩在所有测试成绩中的排名与位置,并分析各级智商的分布情况,运行效果如图所示。
示例代码如下:
import os import random def read_file(path, file_name): """ 读取文件函数 :param path: 路径 :param file_name: 文件名称 :return: 文件内容 """ # 这里的/ 也可以换成\\ with open(path + "/" + file_name, "r", encoding="utf8") as file: content = file.read() # 因为文件内容比较少 所以直接使用read方法一次性全部读取 return content if __name__ == '__main__': print("=======================IQ智力测试=======================") print("-" * 55) len_que = len(os.listdir("./que")) score = 0 # 用来统计得分 msg = ["智商1级: 白痴", "智商1级: 白痴", "智商1级: 白痴", "智商1级: 白痴", "智商1级: 白痴", "智商2级: 智障", "智商3级: 智弱", "智商4级: 临界", "智商5级: 凡人", "智商6级: 聪慧", "智商7级: 人才", "智商8级: 精英", "智商9级: 天才", "智商9级: 天才", "智商9级: 天才", "智商9级: 天才", "智商9级: 天才", "智商9级: 天才", "智商9级: 天才"] 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("请输入正确答案前面的数字编号: ").strip() # 读取正确答案 right_ans = read_file("./ans", "ans" + str(num) + ".txt").strip() if user_ans == right_ans: # 判断用户输入答案与正确一致 score += 6 # 答案一致加6分 i += 1 print(f"你的IQ测试成绩为: {score} {msg[int(score / 10)]}") # 将成绩和等级写入文件 with open("iq.txt", "a", encoding="utf8") as file: file.write(str(score) + "," + msg[int(score / 10)].split(":")[1].strip() + "\n") # 读取文件中的测试成绩及等级 score_list = [] # 用来存储所有的成绩 level_list = [] # 用来存储所有的等级 if os.path.exists("iq.txt"): with open("iq.txt", "r", encoding="utf8") 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()) # 对成绩进行排序 score_list.sort(reverse=True) print(f"目前您在所有测试的成绩中排名第{score_list.index(score) + 1}名," f"超过了{len(score_list) - (score_list.index(score) + 1)}名选手") print("智商测试分析图: ") for item in msg2: print(item, int(level_list.count(item)) * chr(9632), level_list.count(item))
7. IQ智商测试与判断(限时版)
一般的考试都有时间限制,如高考数学、语文的考试时间为2个小时。为IQ智商测试添加限时测试功能,要求测试者必须在30分钟内答题完成测试,每答完一道题输出相应剩余时间,如图1所示。如果答题超时将结束测试,输出当前的测试成绩、IQ级别及测试者在所有测试者中的成绩排名和IQ各级智商的分析图表,程序运行效果如图2所示。
示例代码如下:
import os import random import datetime def read_file(path, file_name): """ 读取文件函数 :param path: 路径 :param file_name: 文件名称 :return: 文件内容 """ # 这里的/ 也可以换成\\ with open(path + "/" + file_name, "r", encoding="utf8") as file: content = file.read() # 因为文件内容比较少 所以直接使用read方法一次性全部读取 return content if __name__ == '__main__': print("=======================IQ智力测试(限时版)=======================") print("-" * 55) print("说明: 测试时间: 30分钟,测试题数: 30") now = datetime.datetime.now() # 获取当前时间 delay_time = datetime.timedelta(minutes=30) stop_time = now + delay_time print("测试结束时间为: ", stop_time.strftime("%Y-%m-%d %H:%M:%S")) len_que = len(os.listdir("./que")) score = 0 # 用来统计得分 msg = ["智商1级: 白痴", "智商1级: 白痴", "智商1级: 白痴", "智商1级: 白痴", "智商1级: 白痴", "智商2级: 智障", "智商3级: 智弱", "智商4级: 临界", "智商5级: 凡人", "智商6级: 聪慧", "智商7级: 人才", "智商8级: 精英", "智商9级: 天才", "智商9级: 天才", "智商9级: 天才", "智商9级: 天才", "智商9级: 天才", "智商9级: 天才", "智商9级: 天才"] 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("请输入正确答案前面的数字编号: ").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("答题超时,将结束测试!") break else: print(f"剩余答题时间:{left}分钟") i += 1 print(f"你的IQ测试成绩为: {score} {msg[int(score / 10)]}") # 将成绩和等级写入文件 with open("iq.txt", "a", encoding="utf8") as file: file.write(str(score) + "," + msg[int(score / 10)].split(":")[1].strip() + "\n") # 读取文件中的测试成绩及等级 score_list = [] # 用来存储所有的成绩 level_list = [] # 用来存储所有的等级 if os.path.exists("iq.txt"): with open("iq.txt", "r", encoding="utf8") 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()) # 对成绩进行排序 score_list.sort(reverse=True) print(f"目前您在所有测试的成绩中排名第{score_list.index(score) + 1}名," f"超过了{len(score_list) - (score_list.index(score) + 1)}名选手") print("智商测试分析图: ") for item in msg2: print(item, int(level_list.count(item)) * chr(9632), level_list.count(item))
此文转载文,著作权归作者所有,如有侵权联系小编删除!
原文:https://blog.****.net/xw1680/article/details/105644287