将一个基本的学校作业示例从Swift编码到Python,我在简化方面遇到了困难

2024-10-01 19:24:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我在学校学过编码。上学期学了Python,不太适应,但我想学。这学期学习Swift是有意义的,所以我一直在尝试用我在Swift中学到的知识来理解Python。到目前为止,这个方法对我帮助很大

我的一个快速任务是制作一个在飞镖游戏中得分的简单程序。具体如下:

//Swift example
var myTotalScore = 501
var roundDartPoints = 0
var hisTotalScore = 501

roundDartPoints += 6
roundDartPoints += 8
roundDartPoints += 9
var hisDarts = 17+19+32

func resetRoundScore() {
    roundDartPoints = 0
    hisDarts = 0
}
func addAllToTotal() {
    myTotalScore -= roundDartPoints
    hisTotalScore -= hisDarts
}

addAllToTotal()

print("You don't seem to be any good at this. You're only at \(myTotalScore) points. I'm already at \(hisTotalScore).")

resetRoundScore()

roundDartPoints += 9
roundDartPoints += 8
roundDartPoints += 12
hisDarts = 43+29+18

addAllToTotal()

print("Ha! It's almost like you're this bad on purpose. You'll lose for sure now. You're at \(myTotalScore) points and I'm at \(hisTotalScore).")

resetRoundScore()

roundDartPoints += 60
roundDartPoints += 60
roundDartPoints += 60
hisDarts = 22+30+3

addAllToTotal()

print("Oh. I get it now: you were going easy on me. \(myTotalScore) to \(hisTotalScore). Good game!")

我尝试在Python中执行相同的操作,但是无法创建一个函数来将分数添加到总数中并重置省道计数。我使用了def函数。这是行不通的,因为在这个结构中定义的东西在它之外似乎是不可用的

所以,我在Python 3中复制了这个赋值,我知道的最好的方法是:

#python example
myTotalScore = 501
roundDartPoints = 0
hisTotalScore = 501

roundDartPoints += 6
roundDartPoints += 8
roundDartPoints += 9
hisDarts = 17+19+32

myTotalScore -= roundDartPoints
hisTotalScore -= hisDarts

print(f"You don't seem to be any good at this. You're only at {myTotalScore} points. I'm already at {hisTotalScore}.\n")

roundDartPoints = 0

roundDartPoints += 9
roundDartPoints += 8
roundDartPoints += 12
hisDarts = 43+29+18

myTotalScore -= roundDartPoints
hisTotalScore -= hisDarts

print(f"Ha! It's almost like you're this bad on purpose. You'll lose for sure now. You're at {myTotalScore} points and I'm at {hisTotalScore}.\n")

roundDartPoints = 0

roundDartPoints += 60
roundDartPoints += 60
roundDartPoints += 60
hisDarts = 22+30+3

myTotalScore -= roundDartPoints
hisTotalScore -= hisDarts

print(f"Oh. I get it now: you were going easy on me. {myTotalScore} to {hisTotalScore}. Good game!")

编辑:对不起,我刚刚意识到我发这个太早了

所以我的问题是:我能做些什么来简化它吗?如果我能在Python中定义函数并像在Swift中一样使用它们,我就不会有问题了,但是由于这个原因,我不得不重复同样的代码行


Tags: toreyouvarthisatpointsswift
1条回答
网友
1楼 · 发布于 2024-10-01 19:24:59

python函数要么显式地说它使用了global变量,要么就是return

例如,对于globals:

def resetRoundScore():
    global roundDartPoints, hisDarts
    roundDartPoints = 0
    hisDarts = 0

def addAllToTotal():
    global myTotalScore, hisTotalScore, roundDartPoints, hisDarts
    myTotalScore -= roundDartPoints
    hisTotalScore -= hisDarts

对于返回:

def tallyScore( my_points, his_points, my_score, his_score ):
    my_score -= my_points
    his_score -= his_points
    return my_score, his_score

...

myTotalScore, hisTotalScore = tallyScore( roundDartPoints, hisDarts, myTotalScore, hisTotalScore )

相关问题 更多 >

    热门问题