初学python,自己做了一个十分简单的猜数小游戏,用时间和次数来计算分数
import random
import time
def calculate_score(attempts, total_time):
# 基础分数为10000分
base_score = 10000
# 每多一次猜测,分数减少100分
penalty_per_attempt = 100
# 每多一秒,分数减少10分
penalty_per_second = 10
# 计算猜测次数的扣分
penalty_for_attempts = attempts * penalty_per_attempt
# 计算时间的扣分
penalty_for_time = total_time * penalty_per_second
# 计算最终得分
score = base_score - (penalty_for_attempts + penalty_for_time)
return score
def guess_number_game():
# 随机生成一个1到10000的整数
target_number = random.randint(1, 10000)
score = 10000 # 初始分数
attempts = 0
print("猜猜我想到的数字(1到10000之间):")
last_prompt_time = time.time() # 记录最后一次提示的时间
total_start = time.time() # 记录开始时间
while True:
try:
# 用户输入猜测的数字
guess = int(input("请输入你的猜测:"))
attempts += 1
last_input_time = time.time() # 记录用户输入的时间
except ValueError:
print("请输入一个有效的整数。")
continue
# 检查用户是否在20秒内输入
if last_input_time - last_prompt_time > 20:
print("超时,算作一次错误猜测。")
score -= 10 # 可以调整为其他分数
continue
# 检查猜测结果
if guess < target_number:
print("太小了,请再试一次!")
last_prompt_time = time.time() # 更新最后一次提示的时间
elif guess > target_number:
print("太大了,请再试一次!")
last_prompt_time = time.time() # 更新最后一次提示的时间
else:
total_final = time.time() # 截止时间
print(f"恭喜你!猜对了,数字是{target_number}。")
total_time = total_final-total_start # 计算总时间
score = calculate_score(attempts, total_time) # 计算得分
print(f"你的最终得分是:{int(score/100)},猜测次数:{attempts},总用时:{total_time:.2f}秒")
break
if __name__ == "__main__":
guess_number_game()