Как уменьшить оценку внутри функции - PullRequest
1 голос
/ 10 июля 2020

Пытаюсь заставить свою первую программу работать. Я пытаюсь вычесть балл в зависимости от ввода пользователя. Но моя оценка не изменится так, как сейчас. Не могли бы вы помочь мне понять, что происходит не так?

Ниже вы можете увидеть код, который я пытаюсь запустить:

    score = 75
    def round_1(score):
        shots_1 = input("What did you score: ")
        if shots_1 == 1:
            return score - 1
        elif shots_1 == 2:
            return score - 2
        elif shots_1 == 3:
            return score - 3
        else:
            return score

Ответы [ 4 ]

2 голосов
/ 10 июля 2020

Ваша проблема связана с типами данных. Вы должны преобразовать shots_1 в int. или введите его как shots_1 == '1':

1 голос
/ 10 июля 2020

когда вы запрашиваете ввод, он автоматически принимает ввод как строку, поэтому вам также следует преобразовать параметры в строки, поскольку ваш код находится внутри функции def, которую вам нужно сначала запустить:

score = 75
def round_1(score):
    shots_1 = input("What did you score: ")
    if shots_1 == '1':
        print(score-1)
    elif shots_1 == '2':
        print(score-2)
    elif shots_1 =='3':
        print(score-3)
    else:
        print(score)
round_1(75)


1 голос
/ 10 июля 2020

Командная строка input всегда имеет формат string. Вы должны преобразовать в желаемый формат на основе ввода от пользователя.

def round_1(score):
    shots_1 = int(input("What did you score: "))
    print(shots_1)
    if shots_1 == 1:
        return score - 1
    elif shots_1 == 2:
        return score - 2
    elif shots_1 == 3:
        return score - 3
    else:
        return score
        

print(round_1(75))

Подробнее о приведении типов можно прочитать здесь. https://www.geeksforgeeks.org/taking-input-from-console-in-python/

1 голос
/ 10 июля 2020

input возвращает строку, поэтому все эти if s будут ложными:

    if shots_1 == 1:
        return score - 1
    elif shots_1 == 2:
        return score - 2
    elif shots_1 == 3:
        return score - 3

Вместо этого вы можете сделать это:

    if shots_1 == '1':
        return score - 1
    elif shots_1 == '2':
        return score - 2
    elif shots_1 == '3':
        return score - 3
...