猜猜游戏 - 如何让它变得更好?

时间:2017-10-14 13:02:22

标签: python-3.x function

自从上一个问题我得到了一点好处。我希望不再有语法问题。反正。

我正在做这个练习来创建猜测游戏,它会生成数字并要求用户输入。我能够使它工作,但我不喜欢我的代码。

问题是,在我创建的函数中,我使用的是该函数外部的变量。据我所知,在编写好的代码方面并不好。任何人都可以建议我怎样才能做得更好?我应该一起抛弃这个功能吗?我想以某种形式保留它。提前谢谢!

import random

counter = 0

def result_check(num):
    if guess == rng_number:
        print("Bravo")
    else:
        print("Wrong!, The number is {0}".format(rng_number))

while True:
    reply = input("Do you want to play ? Y/N: ")
    rng_number  = random.randint(0,9)
    counter += 1
    if reply == "Y":
        guess = int(input("Select a digit between 0 and 9: "))
        result_check(guess)
    elif reply == "N":
        print("You played {0} times".format(counter))
        break

1 个答案:

答案 0 :(得分:1)

您的代码可以正常工作,但是我会改变一些事情。首先,如果您想使用明确检查function,那么您应pass guessrng_number作为两个单独的parameters。目前的方式是pass guess parameter num,但num不会用于检查function }。该函数正在查看调用范围并从中获取猜测和随机数。这是我要改变的第一件事 - 明确地将variables传递给function

虽然说了这一切,但对我来说,使用function似乎很愚蠢!正如你所拥有的只有一个if...else语句,将它移到主代码中似乎更简单。通过执行此操作,您无需将parameters传递到function ,您可以通过删除几行总是很好的代码来整理代码! :)

这是代码,其中function的代码已移至主要部分。我还删除了0 string ...

中不必要的formatting
import random

counter = 0

while True:
    reply = input("Do you want to play ? Y/N: ")
    rng_number  = random.randint(0,9)
    counter += 1
    if reply == "Y":
        guess = int(input("Select a digit between 0 and 9: "))
        if guess == rng_number:
            print("Bravo")
        else:
            print("Wrong!, The number is {}".format(rng_number))
    elif reply == "N":
        print("You played {} times".format(counter))
        break