<p>在尝试了整个代码之后,我建议您在这里将<code>SearchPlayer</code>切换为以下代码:</p>
<pre><code>def searchplayer():
print("===============SEARCH by player: Calculate average goals==================")
if len(player_info.keys())==0:
print("you have no players registered")
else:
name = input("Player name : ")
while name not in player_info.keys():
print("Please enter a valid player name:")
name = input("Player name: ")
#print student_info
print ("Average player goals : ", str(sum(player_info[name].values())/3.0))
print()
mainmenu()
</code></pre>
<p>还有一件事,您没有询问它,但是当您请求用户通过<a href="https://docs.python.org/3/tutorial/errors.html" rel="nofollow noreferrer">handling exceptions</a>做出决策时,您应该为输入类型添加一个检查器,如下所示:</p>
^{pr2}$
<p>当我输入字符串而不是int时,这有助于防止应用程序误崩溃</p>
<p>如果不想使用递归,可以执行以下操作:</p>
<pre><code>proceed = True
def main():
while proceed:
mainmenu()
</code></pre>
<p>和改变:</p>
<pre><code>sys.exit()
</code></pre>
<p>有:</p>
<pre><code>proceed = False
</code></pre>
<p>(我选择从代码中去掉<code>sys.exit()</code>,因为它产生了一些警告)</p>
<p>把你所有的方法都去掉{<cd3>}。那应该很好</p>
<p>所以你的整个代码应该是这样的(我不熟悉更换对不起):</p>
<pre><code>#SOLUTION==================FOOTBALL COACH app
#The program allows a user to enter a number of students (their names and test
#scores) and then search for a student, returning their average score for the
#three tests
#1 Create a similar program for a football coach (he wants to store player
#names + goals for 3 matches)
#2 -main menu that allows for 1. Adding players + goals and 2. Search by
#Player 3. Quit
#3 -When complete, go back and add additional menu options for "View all
#players" and Update". This allows the coach to update the number of goals for
#any given player as well as view all
import sys #note the sys.exit() command will not work without this
player_info={}
proceed = True
def main():
while proceed:
mainmenu()
def mainmenu():
global proceed
print("=====WELCOME to the MAIN MENU=============")
print("""
1..........Add New Players & Goals
2..........Search by Players (return average goals)
3 Update Player Goals
4 View All players
5..........Quit
=========================================
""")
try:
choice=int(input("Enter choice:"))
except:
print("Input must be int from 1-5")
mainmenu()
if choice==1:
playerinfo=addplayers()
elif choice==2:
searchplayer()
elif choice==3:
update()
elif choice==4:
viewall()
elif choice==5:
proceed = False
else:
print("You must make a valid choice - 1, 2 or 3")
def viewall():
for keys, values in player_info.items():
print(keys, values)
print()
def update():
playername=input("Which player's goals do you wish to update?:")
m1=int(input("Match 1 new entry:"))
m2=int(input("Match 2 new entry:"))
m3=int(input("Match 3 new entry:"))
if playername in player_info:
#myDict["A"] = "Application"
player_info[playername]="Boo"
player_info[playername]={"Match 1 goals":m1,"Match 2 goals":m2,"Match 3 goals":m3}
def addplayers():
global player_info #this needs to be declared as a global variable so it can be used by searchplayer()
player_info= {} #create a dictionary that stores the player name: player goals
num_players = int(input("Please enter number of players you wish to enter:"))
print ("You are entering %s players" %num_players)
player_data = ['Match 1 goals : ', 'Match 2 goals : ', 'Match 3 goals : ']
for i in range(0,num_players):
player_name = input("Enter Player Name :")
player_info[player_name] = {}
for entry in player_data:
player_info[player_name][entry] = int(input(entry)) #storing the marks entered as integers to perform arithmetic operations later on.
print()
def searchplayer():
print("===============SEARCH by player: Calculate average goals==================")
if not player_info:
print("you have no players registered")
else:
name = input("Player name : ")
while name not in player_info.keys():
print("Please enter a valid player name:")
name = input("Player name: ")
#print student_info
print ("Average player goals : ", str(sum(player_info[name].values())/3.0))
print()
main()
</code></pre>
<p>希望能帮上忙</p>