При использовании 3 операторов if в строке, даже если третий является истинным, он ничего не делает - PullRequest
0 голосов
/ 25 марта 2020

Я начал изучать программирование, и мой первый язык - Python.

. Я получил упражнение, в котором мне нужно вернуть определенную строку на основе введенного числа. Если выполняется несколько условий, он должен объединить строки и распечатать ответ в консоли.

Вот код:

number = int(input("enter your number here: "))

def plingplangplong(number):
    strPling = "pling"
    strPlong = "plong"
    strPlang = "plang"
    strAnswer = ""

    if number % 3 == 0:
        strAnswer = strAnswer + strPling
    if number % 5 == 0:
        strAnswer = strAnswer + strPlong
    if number % 7 == 0:
        strAnswer = strAnswer + strPlang
    elif strAnswer:
        print(strAnswer)
    else:
        print(number)


plingplangplong(number)

Если я введу число, кратное 7, это не не предоставляю вывод на консоль. Почему?

Если я введу 3 или 5, это сработает. 30 и 60 работают, возвращая 'plingplong', как и ожидалось.

Что мне нужно изменить?

Ответы [ 2 ]

1 голос
/ 25 марта 2020

Попробуйте это ниже:

number = int(input("enter your number here: "))
def plingplangplong(number):

    strPling = "pling"
    strPlong = "plong"
    strPlang = "plang"
    strAnswer = ""

    if number % 3 == 0:
        strAnswer = strAnswer + strPling
    if number % 5 == 0:
        strAnswer = strAnswer + strPlong
    if number % 7 == 0:
        strAnswer = strAnswer + strPlang

    if strAnswer:
        print(strAnswer)
    else:
        print(number)


plingplangplong(number)
0 голосов
/ 25 марта 2020

Ваш код печатает, только если number равно , а не , делится на 7, потому что все print s находятся в блоках elif/else:

if number % 7 == 0:
    strAnswer = strAnswer + strPlang
elif strAnswer:
    # we get here only when the first `if` condition is NOT true
    print(strAnswer)
else:
    # we get here only when the first `if` condition and the `elif` condition are NOT true
    print(number)

You следует изменить это так:

if number % 7 == 0:
    strAnswer = strAnswer + strPlang

if strAnswer:
    print(strAnswer)
else:
    print(number)
...