智商
,即智力商数(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级: 白痴")
只用两行代码,根据用户输入的IQ智商分数与表1的9级智商评测表进行匹配,并输出IQ智商类别。运行效果如图1、图2所示。
示例代码如下:
level_list = ["白痴", "白痴", "白痴", "白痴", "白痴", "智障", "智弱", "临界",
"凡人", "聪慧", "聪慧", "人才", "精英", "天才", "天才", "天才", "天才", "天才", "天才", "天才"]
print(level_list[int(int(input("请输入你的IQ分数(在0-190范围输入): ").strip()) / 10)])
请编写一个程序,根据本例提供的30道智商测试题来测试智商,每题回答正确加6分,回答错误不记分,完成本次测试,程序输出智商分数。运行效果如下图1、图2所示。因为30道题目控制台输出太长,所以就截取了开头和结尾,省略了中间的答题。
这篇博文所用到的的文件资源网盘路径如下:
链接:https://pan.baidu.com/s/1e6oWo-O61epKnp8wuQ4Ugg
提取码:wrod
示例代码如下:
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}")
完善上面的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)]}")
上面的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)]}")
修改上面的程序,在对用户进行智商测试时并将测试成绩记录下来,记录文件为源文件同路径的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))
一般的考试都有时间限制,如高考数学、语文的考试时间为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))