python全局变量怎么删除_Python:重构代码以删除全局变量

本文展示了一段Python代码,该代码实现了一个等式求解游戏。通过`gen_randoms`生成随机数,`gen_equation`构造随机方程,`evaluate`评估方程,并在`main`函数中进行游戏流程。讨论了如何重构代码以减少全局变量的使用,提高代码可读性和模块化。
摘要由CSDN通过智能技术生成

我可能会这样做:#!/usr/bin/python

"""Equation solving game."""

from random import randint

from random import choice

def gen_randoms(lower, higher):

"""Generates four random numbers between provided bounds."""

integers = [randint(lower, higher) for x in range(4)]

return integers

def gen_equation(integers):

"""Generates a random equation from four provided integers."""

nums = [str(i) for i in integers]

operators = ['*', '+', '-']

equation = 'num op num op num op num'

while 'op' in equation:

equation = equation.replace('op', choice(operators), 1)

while 'num' in equation:

equation = equation.replace('num', choice(nums), 1)

return equation

def evaluate(equation):

"""Evaluates an equation."""

return eval(equation)

def main():

"""Main game function."""

lower = int(raw_input("Enter a lower integer constraint: "))

higher = int(raw_input("Enter a higher integer constraint: "))

nums = gen_randoms(lower, higher)

streak = 0

while True:

this_equation = gen_equation(nums)

print this_equation

user_answer = raw_input("What is the answer? ('Q' to quit) ")

if user_answer.lower()[0] == 'q':

break

gen_answer = evaluate(this_equation)

print 'The answer was: %d' % gen_answer

if gen_answer == int(user_answer):

streak += 1

print 'Correct!'

print 'Current streak: %d' % streak

else:

streak = 0

print 'Incorrect!'

if __name__ == "__main__":

main()

一些评论:每个函数通常只做一件事,所以如果一个函数计算一个方程,通常最好不要让它也打印方程。在

当你这样做的时候,弄清楚变量应该去哪里会变得容易得多,因为你不需要像每个函数做几个不同的事情时需要传递它们那么多。在

这里的主要游戏逻辑非常简单,你不需要把它从你的主game()函数(或者在我的例子中是main()函数)中分离出来,所以它不会使事情过于复杂而把它留在那里。如果您想进行更多的错误检查(例如,查看用户是否输入了一个无效的数字,如果是,您希望返回并要求更多输入),那么您可能需要再进行一些检查。在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值