初学python之猜数字游戏

当前python版本是3.6.

该游戏记录每个用户的游戏数据,包括:游戏次数,每次最少猜中轮数,总共游戏轮数。代码如下:

# coding=utf-8
'''
@description:猜数字游戏,多组成绩保存
Created on 2017年8月29日
'''
#=====================游戏准备==============================
from random import randint

print('请输入您的名字: ');# 输入玩家名字
name = input();

f = open('game.txt');# 打开游戏数据文件
lines = f.readlines();
f.close;

scores = {};# 初始化一个空字典
for line in lines[1:]:# 从第二行数据开始循环
    s = line.split();# 以空格分割每行数据
    scores[s[0]] = s[1:];# 每行数据以k-v键值对加入字典
score= scores.get(name);# 通过name获取当前玩家的游戏数据
if score is None:# 如果数据不存在
    score = [0,0,0];# 初始化数据
game_times = int(score[0]);
min_times = int(score[1]);
total_times = int(score[2]);
if game_times > 0:
    avg_times = float(total_times)/game_times;
else:
    avg_times = 0;

# 显示玩家的名字
print(('%s,你已经玩了%d次,最少%d轮猜出答案,平均%.2f轮猜出答案')%(name,game_times,min_times,avg_times));
#=======================游戏开始=================================
def isEquals(num1,num2):# 两个数字比较函数
    if num1 == num2:
        print('猜对了!');
        return True;
    elif num1 > num2:
        print('猜大了……');
    else:
        print('猜小了……');
    return False;
               
num = randint(1,100);# 生成1~100随机数
times = 0;# 本轮游戏次数
print('1~100随机数已生成,请开始游戏……');
bingo = False;
while bingo == False:
    answer = int(input());# 键入str转换int
    bingo = isEquals(answer, num);
    times += 1;
if game_times == 0 or times < min_times:
    min_times = times;
total_times += times;
game_times += 1;

# ========================保存数据======================================
scores[name] = [str(game_times),str(min_times),str(total_times)];
result = '姓名 游戏次数 最少轮数 总共轮数
';
for n in scores:
    line = n + ' ' + ' '.join(scores[n])+'
';# 数据格式化,以空格隔开
    result += line;
f = open('game.txt','w');
f.write(result);
f.close;

作者:idanyang

出处:http://www.cnblogs.com/idanyang/

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

原文地址:https://www.cnblogs.com/idanyang/p/7448935.html