我不知道怎么打破这个循环。这个程序问了我的用户两次相同的问题,我不知道为什么。它应该问我哪个队只赢了一次,然后问我,‘这是正确的’,但它又问谁赢了
import time
class Team:
def __init__(self, num, name, size, score):
self.num = num
self.name = name
self.size = size
self.score = score
def add_victory(self):
self.score += 1
def __repr__(self):
return f'Team Number: {self.num} |-| Team Name: {self.name} |-| Member Count: {self.size} |-| Team Score: {self.score}'
def NewTournament():
TeamCounter=int(input('How many Teams will be in the tournament? '))
print('')
for i in range(TeamCounter):
NameOfTeam=input(f'Please Enter Team {i+1} Name: ')
MemberCount=int(input('How Many Members in Team? '))
print('')
teams.append( Team( i+1, NameOfTeam, MemberCount, 0) )
def Score(teams):
winner = input('Which Team Won the Event? ')
for team in teams:
if team.name == winner:
team.add_victory()
break
print('Updated Leaderboard')
def Leaderboard():
for t in teams:
print(t)
def Menu():
MenuLoop=1
while MenuLoop==1:
print('1.Create Tournament')
print('2.Update Existing Tournament')
print('3.View Leaderboard')
print('4.Exit')
MenuOption=input('')
if MenuOption=='1':
print('Creating Tournament')
NewTournament()#runs the new tournament function
MenuLoop-=1
Menu()
elif MenuOption=='2':
print('Updating Tournament')
MenuLoop-=1
EventName=input('Which Event Was Completed? ')
winner=input('Which Team Won the Event? ')#asking me this 2 times
print('Event Winner:', winner, '||', 'Event:',EventName)
print('Is this correct? Y/N')
Check=input('')
if Check=='y':
print('Updating Leaderboard')
Score(teams)
Menu()
elif MenuOption=='3':
MenuLoop-=1
Leaderboard()
print('')
time.sleep(0.3)
Menu()
elif MenuOption=='4':
print('Exiting Program...')
else:
print('Error, please choose an option from the list below.')#keeps looping if user is not choosing a correct number from list
#start of program
teams = []
print('░██╗░░░░░░░██╗███████╗██╗░░░░░░█████╗░░█████╗░███╗░░░███╗███████╗')
print('░██║░░██╗░░██║██╔════╝██║░░░░░██╔══██╗██╔══██╗████╗░████║██╔════╝')
print('░╚██╗████╗██╔╝█████╗░░██║░░░░░██║░░╚═╝██║░░██║██╔████╔██║█████╗░░')
print('░░████╔═████║░██╔══╝░░██║░░░░░██║░░██╗██║░░██║██║╚██╔╝██║██╔══╝░░')
print('░░╚██╔╝░╚██╔╝░███████╗███████╗╚█████╔╝╚█████╔╝██║░╚═╝░██║███████╗')
print('░░░╚═╝░░░╚═╝░░╚══════╝╚══════╝░╚════╝░░╚════╝░╚═╝░░░░░╚═╝╚══════╝')#welcome user
print('')
Username=input('Enter Username: ')
Password=input('Enter Password: ')
if Username =='Admin' and Password == 'Admin':#very basic login system for security of school
print('Logging in...')
print('User Verified')
Menu()
else:
print('User Does Not Exist.')#stops pupils gaining unauthorised access
我得到了这个输出:
1.Create Tournament
2.Update Existing Tournament
3.View Leaderboard
4.Exit
2
Updating Tournament
Which Event Was Completed? Football
Which Team Won the Event? Two
Event Winner: Two || Event: Football
Is this correct? Y/N
y
Updating Leaderboard
Which Team Won the Event? Two
1.Create Tournament
2.Update Existing Tournament
3.View Leaderboard
4.Exit
3
它会像我想的那样返回到menu()
,但我不喜欢它问我‘是哪个队赢得了比赛?’两次。应该只有一次。
发布于 2022-03-31 08:30:58
所以做了一些调整:
winner
输入传递给Score()
函数while
循环继续,而Score()
需要修复您的Check
。您要求用户输入大写的Y/N
,然后是if Check=='y'
。因此,即使用户输入Y
,Check=='y'
也将返回False
。同样到了这一点,为什么单独的print()
后面跟着input
?break
in Score()
之后添加了一个print()
语句?然后,您就会意识到,break
之后的一切都不会运行?所以做了几处改变。我建议查找/使用和IDE可以让您逐行调试和运行代码,这样您就可以遵循您的代码/逻辑了。PyCharm是非常受欢迎的。我用间谍。
import time
class Team:
def __init__(self, num, name, size, score):
self.num = num
self.name = name
self.size = size
self.score = score
def add_victory(self):
self.score += 1
def __repr__(self):
return f'Team Number: {self.num} |-| Team Name: {self.name} |-| Member Count: {self.size} |-| Team Score: {self.score}'
def NewTournament():
TeamCounter=int(input('How many Teams will be in the tournament? '))
print('')
for i in range(TeamCounter):
NameOfTeam=input(f'Please Enter Team {i+1} Name: ')
MemberCount=int(input('How Many Members in Team? '))
print('')
teams.append( Team( i+1, NameOfTeam, MemberCount, 0) )
def Score(teams, winner):
for team in teams:
if team.name == winner:
team.add_victory()
print('Updated Leaderboard')
break
def Leaderboard():
for t in teams:
print(t)
def Menu():
MenuOption = False
while MenuOption!='4':
print('1.Create Tournament')
print('2.Update Existing Tournament')
print('3.View Leaderboard')
print('4.Exit')
MenuOption=input('')
if MenuOption=='1':
print('Creating Tournament')
NewTournament()#runs the new tournament function
elif MenuOption=='2':
print('Updating Tournament')
EventName=input('Which Event Was Completed? ')
winner=input('Which Team Won the Event? ')#asking me this 2 times
print('Event Winner:', winner, '||', 'Event:',EventName)
Check=input('Is this correct? Y/N\n')
if Check.upper()=='Y':
print('Updating Leaderboard')
Score(teams, winner)
elif MenuOption=='3':
Leaderboard()
print('')
time.sleep(0.3)
elif MenuOption=='4':
print('Exiting Program...')
else:
print('Error, please choose an option from the list below.')#keeps looping if user is not choosing a correct number from list
#start of program
teams = []
print('░██╗░░░░░░░██╗███████╗██╗░░░░░░█████╗░░█████╗░███╗░░░███╗███████╗')
print('░██║░░██╗░░██║██╔════╝██║░░░░░██╔══██╗██╔══██╗████╗░████║██╔════╝')
print('░╚██╗████╗██╔╝█████╗░░██║░░░░░██║░░╚═╝██║░░██║██╔████╔██║█████╗░░')
print('░░████╔═████║░██╔══╝░░██║░░░░░██║░░██╗██║░░██║██║╚██╔╝██║██╔══╝░░')
print('░░╚██╔╝░╚██╔╝░███████╗███████╗╚█████╔╝╚█████╔╝██║░╚═╝░██║███████╗')
print('░░░╚═╝░░░╚═╝░░╚══════╝╚══════╝░╚════╝░░╚════╝░╚═╝░░░░░╚═╝╚══════╝')#welcome user
print('')
Username=input('Enter Username: ')
Password=input('Enter Password: ')
if Username =='Admin' and Password == 'Admin':#very basic login system for security of school
print('Logging in...')
print('User Verified')
Menu()
else:
print('User Does Not Exist.')#stops pupils gaining unauthorised access
https://stackoverflow.com/questions/71664612
复制相似问题