从这次开始,我们就要开始写主程序了,主程序相比函数会难一些,我调试了很久才写出代码。
导入模块
这次要导入的有很多,有:
- itertools
- random
- function
- function中的全部函数
- datetime
import itertools
import random
import function
from function import *
import datetime
变量声明
level = 1
level就是等级,一开始是等级1,所以不能放循环里面,否则会一直为第1关。
打印欢迎词
print('欢迎来到24点游戏中心!')
循环
while True:
这几个都太简单了,所以我没写解释词。
询问退出
while True:
a = input('\n您可以输入q键退出\n')
if a == 'q':
break
因为while True是死循环,必须要有出口。
变量声明(2)
flag = True
flag就是这局是否答对,每次都要重置,所以要放在循环里。
设置时间
if level <= 20:
minute = 5
elif level <= 40:
minute = 4
elif level <= 60:
minute = 3
elif level <= 100:
minute = 2
else:
minute = 1
通过的关越多,时间就越短。
打印级数和时间
print('第{}关'.format(level))
print('时间:{}min'.format(minute))
打印4张扑克牌
首先要用到我们函数中的translate():
c,r = translate()
一样,不知道translate是什么的,去看我前面写的函数程序。
接着一个一个打印:
for i in range(3):
print(c[i],end = ' ')
print(c[3],end = '\n')
注意,最后一个必须单独打,因为前面设置的是end = ’ ',最后一个要改回end = ‘\n’,否则会一直隔一个空格打下去。
算时间+写问题
要用到datetime.datetime.now()
函数和datetime.timedelta(minutes = int)
函数:
time1 = datetime.datetime.now()
ans = input('A:我解出来了\nB:我认为无解\n')
time2 = datetime.datetime.now()
timedel = time2 - time1
if timedel > datetime.timedelta(minutes = minute):
print('时间太久了!')
flag = False
continue
有解情况
if ans == 'A':
bds = input('请输入您计算出来的算式,×用*,÷用/。\n')
if int(eval(bds)) == 24:
print('恭喜您答对了!')
else:
print('您答错了。')
continue
eval()函数是计算str式子最终的值的,有些时候有除法,有可能会变成24.0≠24,所以要加上int()。
无解情况
elif ans == 'B':
if r == False:
print('这道题确实无解。')
else:
print('这道题有解。')
print('如:')
print(r)
continue
无解情况有两种:真无解和假无解。
判断的方法就看translate()函数返回的是否为False。
输入错误
else:
print('输入错误!')
continue
变量加减
level += 1
注意:自己写的时候要注意有continue,否则无论是对的还是错的都会多一关。
全部程序
import itertools
import random
import function
from function import *
import datetime
level = 1
print('欢迎来到24点游戏中心!')
while True:
a = input('\n您可以输入q键退出\n')
if a == 'q':
break
flag = True
if level <= 20:
minute = 5
elif level <= 40:
minute = 4
elif level <= 60:
minute = 3
elif level <= 100:
minute = 2
else:
minute = 1
print('第{}关'.format(level))
print('时间:{}min'.format(minute))
c,r = translate()
for i in range(3):
print(c[i],end = ' ')
print(c[3],end = '\n')
time1 = datetime.datetime.now()
ans = input('A:我解出来了\nB:我认为无解\n')
time2 = datetime.datetime.now()
timedel = time2 - time1
if timedel > datetime.timedelta(minutes = minute):
print('时间太久了!')
flag = False
continue
if ans == 'A':
bds = input('请输入您计算出来的算式,×用*,÷用/。\n')
if int(eval(bds)) == 24:
print('恭喜您答对了!')
else:
print('您答错了。')
continue
elif ans == 'B':
if r == False:
print('这道题确实无解。')
else:
print('这道题有解。')
print('如:')
print(r)
continue
else:
print('输入错误!')
continue
level += 1
测试
现在测试已经可以,但是如果出现:
…
输出:A:我解出来了
输出:B:我认为无解
输入:A
输出:请输入您计算出来的算式,×用*,÷用/。
输入:4*6
输出:恭喜您答对了!
系统:加一级
那么该怎么办呢?我们下次再讲优化的方法。