我正在做这个练习来创建猜测游戏,它会生成数字并要求用户输入。我能够使它工作,但我不喜欢我的代码。
问题是,在我创建的函数中,我使用的是该函数外部的变量。据我所知,在编写好的代码方面并不好。任何人都可以建议我怎样才能做得更好?我应该一起抛弃这个功能吗?我想以某种形式保留它。提前谢谢!
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 :(得分:1)
您的代码可以正常工作,但是我会改变一些事情。首先,如果您想使用明确检查function
,那么您应pass
guess
和rng_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