2017-10-14 67 views
0

因为我最后一个问题,我好一点了。没有更多的语法问题,我希望。无论如何。猜谜游戏 - 如何让它变得更好?

我在做这个练习创建的猜谜游戏,将产生号码,并要求用户输入。我能够使它工作,但我不喜欢我的代码。

的事情是,在功能我创建了我使用变量从功能之外。据我所知,在编写好的代码方面并不好。任何人都可以建议我怎样才能做得更好?我应该把这个功能放在一起吗?我想以某种形式保留它。提前致谢 !

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 
+0

如果你的代码的工作,是完整的,但还有待改进,它应该是在代码审查来代替。此网站主要用于修复损坏的代码。 – Carcigenicate

+0

@Carcigenicate由于'rng_number'在脚本的主体中定义(与'guess'一起),它是一个'global'变量,因此可以从其他任何地方访问(包括'functions'内部) - 拥有一个看看[这个](http://python-textbok.readthedocs.io/en/1.0/Variables_and_Scope.html),它比我更好地解释它! –

回答

1

您的代码正常工作,但有一些事情我会改变。首先,如果你想使用检查function显正,那么你应该pass两个guessrng_number作为两个独立的parameters。它是目前的样子,你passguessparameternum,但num不用于支票function。该函数正在查看它被调用的范围,并从那里获取猜测和随机数。所以这是我要改变的第一件事 - 明确地将variables传入function

虽然说这一切,对我来说似乎是愚蠢的function在所有使用!因为你所有的语句都是if...else,所以把它移到主代码中似乎更简单。通过这样做,为你节省传递parametersfunction的需要,您可以通过删除几行这是一件好事整理代码! :)

这里是代码从function移到主要部分。我也删除在stringformatting不必要0 ...

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 
+0

这是有道理的,它的确看起来像功能在这里是不必要的。这个社区是惊人的,谢谢你的洞察力:) – crookedteeth

+1

@crookedteeth请投票并接受然后显示您的赞赏! –

+1

我不知道'接受'。考虑它做了:) – crookedteeth