Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 猜谜游戏-如何让它更好?_Python 3.x_Function - Fatal编程技术网

Python 3.x 猜谜游戏-如何让它更好?

Python 3.x 猜谜游戏-如何让它更好?,python-3.x,function,Python 3.x,Function,自从我问了最后一个问题后,我有点进步了。我希望没有更多的语法问题。无论如何 我做这个练习是为了创建一个猜谜游戏,这个游戏会生成数字并要求用户输入。我可以让它工作,但我不喜欢我的代码 问题是,在我创建的函数中,我使用函数外部的变量。据我所知,就编写好代码而言,这并不好。有人能建议我怎样才能做得更好吗?我是否应该一起放弃这个功能?我想以某种形式保存它。提前谢谢 import random counter = 0 def result_check(num): if guess == rng

自从我问了最后一个问题后,我有点进步了。我希望没有更多的语法问题。无论如何

我做这个练习是为了创建一个猜谜游戏,这个游戏会生成数字并要求用户输入。我可以让它工作,但我不喜欢我的代码

问题是,在我创建的函数中,我使用函数外部的变量。据我所知,就编写好代码而言,这并不好。有人能建议我怎样才能做得更好吗?我是否应该一起放弃这个功能?我想以某种形式保存它。提前谢谢

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

您的代码可以正常工作,但是有几件事我需要更改。首先,如果您想使用n显式检查函数,那么您应该将guess和rng_数传递给两个单独的参数。按照目前的方式,您将猜测传递给参数num,但num不用于检查函数。函数正在查看调用它的范围,并从中获取猜测和随机数。这是我要改变的第一件事——显式地将变量传递到函数中

尽管这么说,但对我来说,使用函数似乎很愚蠢!因为这里只有一个if…else语句,所以将它移到主代码中似乎更简单。通过这样做,您就不需要将参数传递到函数中,并且通过删除几行代码来整理代码,这总是很好的

下面是将函数中的代码移到main部分的代码。我还删除了字符串格式中不必要的0


如果您的代码可以工作并且是完整的,但是可以改进,那么应该改为进行代码审查。此站点主要用于修复损坏的代码。@Carcigenicate由于rng_编号与guess一起定义在脚本的主体中,它是一个全局变量,因此可以从任何其他地方(包括内部函数)访问它-请看一看,这比我能更好地解释它!这是有道理的,它确实看起来像功能在这里是不必要的。这个社区太棒了,谢谢你的洞察力:@crokedteeth请投票并接受,然后表达你的感激之情!我不知道“接受”这个词。想想看:
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