Генератор фраз печатает неверный вывод - PullRequest
0 голосов
/ 23 сентября 2019

Я пытаюсь создать функцию от 1 до 50, которая печатает «Джон» с кратными 7, «Привет» с кратными 2 и «Привет Джон», когда кратное число кратно 3 и 5.Однако вывод кажется неверным.Функция печатает «Привет», когда х = 5, когда этого не следует делать.

def phrase_generator(x):
    if x % 7 == 0:
        print("John")
    elif x % 2 == 0: 
        print("Hi")
    elif (x % 3 == 0 and x % 5 == 0):
        print("Hi John") 

    else: 
        pass

for number in range(1,51):
    print(phrase_generator(number))


1 Ответ

2 голосов
/ 23 сентября 2019

Ваш код в основном правильный.Я сделал несколько небольших изменений:

  1. Вместо печати в phrase_generator, верните желаемую строку
  2. Верните пустую строку, когда x не делится на 2, 3, 5или 7
  3. Распечатайте number вместе со строкой, чтобы убедиться, что все работает как положено
def phrase_generator(x):
    if x % 7 == 0:
        return "John"
    elif x % 2 == 0:
        return "Hi"
    elif (x % 3 == 0 and x % 5 == 0):
        return "Hi John"
    else:
        return ""

for number in range(1,51):
    print(number, phrase_generator(number))
...