我正在上一门计算机科学课,我的任务是创建一个程序来实现一个带有参数的函数。我的老师告诉我,下面的代码不是一个函数,这让我很困惑,对于将某些代码行归类为“函数”所需的条件,我感到很困惑。
def game(numbers, max_turns, pfl, tgl):
turns=0
flag=False
print("You have "+str(max_turns)+" turns to guess the number. Let's start!")
while turns<max_turns:
guess=int(input("Enter your guess: "))
if guess==numbers:
pfl.append("Passed")
tgl.append(max_turns)
flag=True
print("You got it right! Try to make it a little harder!")
break
elif guess<numbers:
print("Higher")
turns=turns+1
else:
print("Lower")
turns=turns+1
if flag==False:
pfl.append("Failed")
tgl.append(max_turns)
print("You failed! Maybe give yourself more chances next time? The number was "+str(number))
我也可以像任何普通函数一样调用它程序中的次数:
game(number, turn, passfail, turnsgiven)
game(number, randomturn, passfail, turnsgiven)
我认为这是一个函数,因为我将其定义为一个函数,并且能够在必要时像任何普通函数一样调用它,但我的老师说这不是一个函数。
你的老师错了。你提供的代码 确实 定义了一个 Python 函数。
以下是可以说明它是一个函数的原因:
-
def
关键字: 它以def game(numbers, max_turns, pfl, tgl):
行开头,使用def
关键字,该关键字专门用于在 Python 中 定义 一个函数。 -
名称和参数:
它有一个名称
game
,并在括号中定义了参数 (numbers
,max_turns
,pfl
,tgl
),这对于函数接收输入是标准做法。 - 代码块: 它有一个缩进的代码块,该代码块在函数被调用时执行。
-
可调用性:
如你所述,你可以使用
game(number, turn, passfail, turnsgiven)
等语法成功调用它,这进一步证明它是一个函数。
你的老师可能在想什么:
虽然你的代码确实定义了一个有效的函数,但你的老师可能指的是良好的编码实践或函数设计的特定方面。 以下是一些可能性:
-
文档:
你的函数中没有文档字符串(用三重引号
"""文档字符串在这里"""
)。文档字符串解释了函数的作用、它的参数以及它返回的内容,这对于代码可读性至关重要。 -
副作用:
你的函数修改了
pfl
和tgl
列表,这些列表作为参数传递。修改作为参数传递的可变数据结构可能会产生副作用,从而导致代码行为出乎意料。最好在函数内创建新的列表或返回修改后的列表,而不是直接修改输入列表。 - 职责单一: 你的函数执行多项操作(玩游戏、打印结果、修改列表)。将代码分解成更小、更集中的函数(例如,一个用于游戏逻辑,一个用于用户交互)可能会提高可读性和可重用性。
总之,你定义了一个有效的 Python 函数。但是,你的老师可能暗示了需要改进以遵循最佳实践并提高代码质量的方面。
标签:python,function From: 78790499