After implementing your code
Player POS AB H AVG
--------------------------------------------------------------------------------
1J oeP1
2B en2B
3T omSS
The display only accounts for the first two rows and the first "row[0]" seems to only display the first letter with 10 spaces after then stuck to the rest of it is row[1]
import csv
FILENAME="roster.csv"
def write_lineup(roster):
with open(FILENAME, "w", newline="") as file:
writer = csv.writer(file)
writer.writerows(roster)
def read_lineup():
roster = []
with open(FILENAME, newline="") as file:
reader = csv.reader(file)
for row in reader:
roster.append(row)
return roster
def menu():
print("===============================================================================")
print()
print(" Baseball Team Manager ")
welcome_dis()
def welcome_dis():
print("MENU OPTIONS")
print("1 - Display lineup")
print("2 - Add player")
print("3 - Remove player")
print("4 - Move player")
print("5 - Edit player position")
print("6 - Edit player stats")
print("7 - Exit program")
print()
print("POSITIONS\nC, 1B, 2B, 3B, SS, LF, CF, RF, P")
print("===============================================================================")
def cal_average(hit,at_bat):
if at_bat != 0:
average = float(round(hit/at_bat, 3))
return average
else:
return 0
def line_up(roster):
if not roster:
print("There is no player in the list. \n")
return
for i, row in enumerate(roster):
print("{:>2}{:10}{:1}{:1}{:1}{:1}\n".format(i + 1, *row[0]+str(row[1])+str(row[2])+str(row[3])+str(row[4])))
print()
#def line_up(roster):
# if len(roster)==0:
# print("There is no player in the list. \n")
# return
# else:
# i = 1
# for player in roster:
# row = player
# print("{:<2}{:10}{:2}{:2}{:2}{:2}")+str(i)+str(row[0]),
# +str(row[1])
# +str(row[2])
# +str(row[3])
# +str(row[4])
# i += 1
# print()
def add_player(roster):
name = input("Name: ")
position = input("Position: ")
at_bat = int(input("At bats: "))
hit = int(input("Hits: "))
average = cal_average(hit,at_bat)
player = []
player.append(name)
player.append(position)
player.append(at_bat)
player.append(hit)
player.append(average)
roster.append(player)
write_lineup(roster)
print(player[0] + " was added. \n")
def remove_player(roster):
number = int(input("Number: "))
if number < 1 or number > len(roster):
print("Invalid player number. \n")
else:
player = roster.pop(number - 1)
write_lineup(roster)
print(player[0] + " was removed. \n")
def move_player(roster):
number = int(input("Current lineup number: "))
player = roster.pop(number-1)
#player = roster[number-1]
#print(player[0], " was selected")
newnumber=int(input("New lineup number: "))
roster.insert(newnumber-1, player)
print(player[0], " was moved")
#removespot = player.pop(number-1)
#player.insert(newnumber-1, removespot)
write_lineup(roster)
print()
def edit_position(roster):
number = int(input("Enter lineup number: "))
player = roster[number-1]
print("You selected ", player[0], ' POS= ', player[1])
#player.pop(1)
newposition = input("Position: ")
player.insert(1,newposition)
write_lineup(roster)
print(player[0], " was updated")
print()
def edit_stats(roster):
number = int(input("Enter lineup number: "))
player = roster[number-1]
print("You selected ",player[0], " AB=",player[2]," H=",player[3])
#player.pop(2)
#player.pop(3)
at_bat = int(input("At bats: "))
hit = int(input("Hits: "))
player.insert(2,at_bat)
player.insert(3,hit)
write_lineup(roster)
print(player[0], " was updated")
print()
def exit_menu():
print("Bye!")
def main_menu():
welcome_dis()
roster = read_lineup()
while True:
menu = input("Menu option: ")
if menu == "1":
print(" Player\tPOS\tAB\tH\tAVG")
print("--------------------------------------------------------------------------------")
line_up(roster)
elif menu == "2":
add_player(roster)
elif menu == "3":
remove_player(roster)
elif menu == "4":
move_player(roster)
elif menu == "5":
edit_position(roster)
elif menu == "6":
edit_stats(roster)
elif menu == "7":
exit_menu()
break
else:
print("Not a valid option. Please try again")
main_menu()
if __name__ == "__main__":
main_menu()
The entire program as follows.
MENU OPTIONS
1 - Display lineup
2 - Add player
3 - Remove player
4 - Move player
5 - Edit player position
6 - Edit player stats
7 - Exit program
POSITIONS
C, 1B, 2B, 3B, SS, LF, CF, RF, P
===============================================================================
Menu option: 1
Player POS AB H AVG
--------------------------------------------------------------------------------
1 Joe P 10 2 0.2
2 Ben 1B 0 0 0.0
3 Tom SS 11 4 0.364
4 Mike C 0 0 0.0
5 Eric 3b 4 0 0.0
6 Joe 2b 3 1 0.333
7 Mike SS 0 0 0
def line_up(roster):
if len(roster)==0:
print("There is no player in the list. \n")
return
else:
i = 1
for player in roster:
row = player
print(str(i)+" "+str(row[0])
+"\t\t"+str(row[1])+" "
+" "+str(row[2])+" "
+" "+str(row[3])+" "
+" "+str(row[4])+"\t")
i += 1
print()
How the program displayed before