想将txt文件导入Python,文件内容是8道选择题,想要读取每一行,并让选择题逐道出现在我要做的小游戏中,玩家进行选择,并给每个选项赋分,最后游戏结束给出一个分数,不知道代码该怎么写
这要看你的内容是什么样的了,包括不包括正确答案之类的
f = open('文件名','r')
lines = f.read().split('\n')
f.close()
根据你的内容,直接处理 lines 即可
读写文件属于比较基础的项目了
问题不在于如何读写
你文件中的数据是如何组织的,怎么判断一道题哪里是题干,哪里是选项,哪里是答案
这些是需要设计的
你需要多少了解一些数据的相关知识,还有字符串处理的方法
按你问问题的方式,推测你各个相关知识都不甚了了,建议还是先不要着急
把问题分解,一个一个的解决
比如到底如何读文件,是一行一行读还是先全部读出来,读出来之后放在什么结构里
总是不肯对具体问题下功夫,老想求个一步到位的解决方案,那是成不了事的
def write_train_val_test_list(img_list, train_rate, val_rate,
train_save_path, val_save_path, test_save_path):
'''
随机划分训练集与验证集,并将训练集和验证集的图片路径和对应的标签存入txt文件中
本方法因使用random.seed(0)语句,所以本方法是静态划分数据集,若想实现动态划分,可注释掉random.seed(0)语句
:param img_list: 保存图像路径的列表
:param train_rate: 训练集数量的比率
:param train_save_path: 训练图像保存路径
:param val_save_path: 验证集图像保存路径
:return:
'''
train_index = len(img_list) * train_rate # 以train_index为界限,img_list[0, train_index)为训练集
val_index = len(img_list) * (train_rate + val_rate) # 索引在[train_index, val_index)之间的为验证集,其余的为测试集
# 列表随机打乱顺序,放入种子数,保证随机固定,使结果可复现
random.seed(0)
random.shuffle(img_list)
# 划分训练集和验证集,并写入txt文件
# 判断txt文件是否已经存在,若存在则不执行写入操作,需手动删除
if os.path.exists(train_save_path):
print(f'{train_save_path} already exists! Please delete it first.')
if os.path.exists(val_save_path):
print(f'{val_save_path} already exists! Please delete it first.')
if os.path.exists(test_save_path):
print(f'{test_save_path} already exists! Please delete it first.')
if not os.path.exists(train_save_path) and not os.path.exists(val_save_path) and not os.path.exists(test_save_path):
print('Splitting datasets...')
for i in range(len(img_list)):
# 写入训练集
if i < train_index:
with open(os.path.join(train_save_path), "a+", encoding="utf-8", errors="ignore") as f:
if i < train_index - 1:
f.write(img_list[i] + '\n')
else:
f.write(img_list[i])
# 写入验证集
elif i >= train_index and i < val_index:
with open(os.path.join(val_save_path), 'a+', encoding='utf-8', errors='ignore') as f:
if i < val_index - 1:
f.write(img_list[i] + '\n')
else:
f.write(img_list[i])
# 写入测试集
else:
with open(os.path.join(test_save_path), 'a+', encoding='utf-8', errors='ignore') as f:
if i < len(img_list) - 1:
f.write(img_list[i] + '\n')
else:
f.write(img_list[i])
print(f'Train datasets was saved: {train_save_path}')
print(f'Val datasets was saved: {val_save_path}')
print(f'Test datasets was saved: {test_save_path}')
print('Splitting datasets Finished!')
解决方案如下:
def read_txt_file(file_path):
with open(file_path, 'r') as f:
lines = f.readlines()
return lines
def present_questions(questions):
total_score = 0
for question in questions:
print(question)
answer = input("请输入选项的编号:")
if answer == 'A':
score = 10
elif answer == 'B':
score = 20
elif answer == 'C':
score = 30
elif answer == 'D':
score = 40
else:
score = 0
total_score += score
print(f"总分为:{total_score} 分")
def read_txt_file(file_path):
with open(file_path, 'r') as f:
lines = f.readlines()
return lines
def present_questions(questions):
total_score = 0
for question in questions:
print(question)
answer = input("请输入选项的编号:")
if answer == 'A':
score = 10
elif answer == 'B':
score = 20
elif answer == 'C':
score = 30
elif answer == 'D':
score = 40
else:
score = 0
total_score += score
print(f"总分为:{total_score} 分")
# 读取txt文件内容
file_path = "questions.txt"
questions = read_txt_file(file_path)
# 呈现选择题
present_questions(questions)
请确保将问题文件命名为 questions.txt
并放置在与Python脚本同一目录下。运行上面的代码,它将逐个呈现选择题,并要求玩家输入选项的编号。根据输入的选项,将给出相应的得分。最后,将计算出的总分打印出来。