#python
#python
Вопрос:
У меня есть код, который при вводе игроков и их результатов в боулинге затем организует их в список 3 и выводит некоторые замечания, но когда я запускаю программу, ничего не выводится
def isGreater(name1,name2):
length=0
if(len(name1)<len(name2)):
length=len(name1)
else:
length=len(name2)
for i in range(0,length):
if(ord(name1[i])>ord(name2[i])):
return True
elif (ord(name1[i])<ord(name2[i])):
return False
def scoresData():
data=[]
while True:
player=input("Enter the Name and Score of a Player : ")
if(player==''):
break
data.append(player.split());
print("----------------------------------")
print("tEntered Order::nPlayer Name t Score")
print("----------------------------------")
for player in data:
print(player[0],"tt",player[1])
print()
for i in range(0,len(data) 1):
for j in range(0,len(data)-i-1):
if(isGreater(data[j][0],data[j 1][0])):
temp=data[j]
data[j]=data[j 1]
data[j 1]=temp
print("----------------------------------")
print("tAplhabetical Order::nPlayer Name t Score")
print("----------------------------------")
for y in data:
print(y[0],"tt",y[1])
print()
for i in range(0,len(data)):
for j in range(0,len(data)-1):
if(int(data[j][1])<int(data[j 1][1])):
temp=data[j]
data[j]=data[j 1]
data[j 1]=temp
print("----------------------------------")
print("tScore Order::nPlayer Name t Score")
print("----------------------------------")
tot=0
for x in data:
print(x[0],"tt",x[1])
tot=tot int(x[1])
print()
print("Congratulations! Mr/Ms." data[0][0]," You scored highest of ",data[0][1],".")
print("Oh! Mr/Ms." data[-1][0]," Sorry to say that scored minimum of ",data[-1][1],".")
print("Average of scores t:: ",int(tot/len(data)))
Пытаюсь выяснить, почему он не выводит никаких результатов, что бы это ни было. Я тоже не получаю никаких ошибок.
Комментарии:
1. Вы когда-нибудь вызывали какую-либо из этих функций?
2. добавьте
scoresData()
и запустите свой скрипт. Код работает нормально, ошибок нет.3. Вау, я так увлекся, что пропустил это. Спасибо! довольно неловко
Ответ №1:
Я был настолько свободен, чтобы писать код для исправления неправильного ручного ввода, например «pete10», где он должен быть «pete 10». Поскольку в вашем коде не было очевидно, что для этого нужен пробел или табуляция.
Предложение заменить:
for player in data:
print(player[0],"tt",player[1])
С:
index = 0
print ('all data : %s' % data)
for player in data:
print ('player data: %s' % player)
try:
print(player[0],"tt",player[1])
index = 1
except:
incorrect_name = str(data[index])[2:-2]
# print ('name is incorrect : %s' % incorrect_name)
player_corrected = []
player_name = ''
player_score = ''
for char in incorrect_name:
# print (char)
if char.isalpha(): # checks for alphabet letters
player_name = char
else: # here you can check for other character
# types if other than integers.
player_score = char
player_corrected = [player_name, int(player_score)]
print ('correced player data : %s.' % player_corrected)
data[index]= player_corrected
# print (data)
Наконец, чтобы запустить ваш скрипт:
if __name__=='__main__':
scoresData()
Ответ №2:
Вы должны вызвать функцию. Когда вы делаете
def xxyyzz():
xx
yy
Вы только определяете функцию. Чтобы запустить его, выполните:
xxyyzz()
ниже. Или в вашем случае:
scoresData()
Ответ №3:
Добавьте в конец вашего файла:
if __name__=='__main__':
scoresData()