我遇到了一个问题,将代码传递给一个函数-- "evaluateAndDisplayScore“--我使用了打印函数,它显示了它传递的数字,但当我使用"hole1”时没有按"def“顺序显示。
这是我的密码
class Golf:
def __init__ (self, hole, score, par):
self.hole = hole
self.score = score
self.par = par
def evaluateAndDisplayScore(hole, score, par): #Im having issues here
print(hole)
print(score)
print(par)
if score > par:
results="Over Par"
elif score < par:
results="Under Par"
else:
results="At Par"
print(f"You scored {results} on hole # {hole} with a par of {par}.")
score = 0
hole1 = Golf(1, score, 3)
hole2 = Golf(2, score, 4)
hole3 = Golf(3, score, 5)
enterHole = int(input("Enter hole number: "))
score = int(input("Enter score: "))
if enterHole == 1:
hole1.evaluateAndDisplayScore(enterHole, score)
elif enterHole == 2:
hole2.evaluateAndDisplayScore(enterHole, score)
elif enterHole == 3:
hole3.evaluateAndDisplayScore(enterHole, score)
else:
print("Invalid hole number entered.")下面是我应该与示例结果匹配的示例
输入洞号:1
输入你的分数:5
你在第一洞中以3杆的成绩超过了标准杆。
输入洞号:2
输入你的分数:1
你第二洞的杆数低于标准杆,杆数为4。
输入洞号:3
输入你的分数:5
你以5杆的成绩在第3洞的杆位得分
发布于 2022-08-24 02:56:31
第一个迹象是,当您尝试使用编号变量而不是列表时,您正在做一些不正确的事情。
其次,您的方法有问题,因为您从不使用实例变量。请参阅计算函数中的self.par
class Golf:
def __init__ (self, par):
self.par = par
def evaluateScore(self, score):
par_str = " Par"
if score > self.par:
prefix = "Over"
elif score < self.par:
prefix = "Under"
else:
prefix = "At"
return prefix + par_str
holes = [
Golf(3), Golf(4), Golf(5)
]
enterHole = int(input("Enter hole number: "))
if enterHole < 0 or enterHole >= len(holes):
raise ValueError("Invalid hole number entered.")
score = int(input("Enter score: "))
hole = holes[enterHole - 1]
result = hole.evaluateScore(score)
print(f"You scored {result} on hole # {enterHole} with a par of {hole.par}.")https://stackoverflow.com/questions/73466891
复制相似问题