Как мне распечатать остальную часть кода?

#python

Вопрос:

Мой код печатается только до первого набора операторов else if.Как я могу заставить свой код печатать следующий набор инструкций else if.

 player=input("Player name:")
hits=int(input("Hits:"))
ab=int(input("At Bats:"))
walks=int(input("Walks:"))
hbp=int(input("Hit By Pitch:"))
tb=int(input("Total Bases:"))

ba=hits/ab
obp=(hits walks hbp)/(ab walks hbp)
slg= tb/ab
iso= slg - ba
ops= obp   slg


print(player,"hit","{:.3f}".format(ba))
print(player,"On-base Percentage was","{:.3f}".format(obp))
print(player,"slugged","{:.3f}".format(slg))
print(player,"Had an isolated power of","{:.3f}".format(iso))
print(player,"Had on-base plus slugging od","{:.3f}".format(ops))

if ba >= .300:
    print(player,"batting average is elite")
elif .299 >= ba >= .280:
    print(player,"batting average is great")
elif .279 >= ba >= .260:
    print(player,"batting average is above average")
elif .259 >= ba >= .250:
    print(player,"batting average is average")
elif ba <= .249:
    print(player,"batting average is below average")
    
if obp >= .390:
    print(player,"On base percentage is elite")
elif .389 >= obp >= .370:
    print(player,"On base percentage is great")
elif .269 >= obp >= .340:
    print(player,"On base percentage is above average")
elif .339 >= obp >= .320:
    print(player,"On base percentage is above average")
elif obp <= .319:
    print(player,"On base percentage is below average")

 

Это то, что происходит, когда вы запускаете его

 #input:
#Player name: jose
#Hits: 167
#At Bats:601
#Walks:66
#Hit By Pitch:4
#Total Bases:294

#output:
 #jose hit 0.278
 #jose On-base Percentage was 0.353
 #jose slugged 0.489
 #jose Had an isolated power of 0.211
 #jose Had on-base plus slugging od 0.842
 #jose batting average is above average
 

Я хочу, чтобы программа напечатала следующее утверждение «процент игроков на базе равен xxx».

Комментарии:

1. Опечатка: elif .269 >= obp >= .340: Я думаю, вы хотите .369

2. Чего вы ожидаете, когда OBP игрока составляет 0,3895?

3. Сравнения могут быть просто: if obp >= .390: ... elif obp >= .370: ... elif obp >= .340: ... elif obp >= .320: ... else ...

4. Ни одно из условий не соответствует obp 0,353 в вашем примере. Вот почему ничего не печатается

Ответ №1:

В нем есть опечатка elif .269 >= obp >= .340: , которую вы , вероятно, хотели напечатать .369 , но это не главная проблема.

Вам не хватает некоторых ценностей. У тебя есть

 if obp >= .390:
    ...
elif .389 >= obp >= .370:
 

Что произойдет , если значение .3895 , например, равно? Это меньше, чем .390 , но больше, чем .389 , так что это не соответствует никаким условиям. Возможно, вы не видите подобных значений, потому что вы скрываете их с помощью строкового формата {:.3f} .

Исправление в том, что:

 if obp >= .390:
    print(player,"On base percentage is elite")
elif obp >= .370:
    print(player,"On base percentage is great")
elif obp >= .340:
    print(player,"On base percentage is above average")
elif obp >= .320:
    print(player,"On base percentage is average")
else
    print(player,"On base percentage is below average")
 

Это работает, потому что, как только true условие найдено и тело этого дела выполнено, все остальные после него будут проигнорированы — даже если они тоже true будут .