#python #output
#python #вывод
Вопрос:
Мне нужно написать функцию, которая вычисляет количество целых чисел от начала до конца (исключая последнее) с помощью цикла while. Я продолжаю получать выходные данные 0 ! = 9 и 0 ! = 10. Код:
n = 0
k = 1
def div_3_5(start, end):
global n
return n
while (n<k):
print("Divisible by 3 or 5")
if n % 3 == 0 or n % 5 == 0:
n =1
Я застрял на этом уже некоторое время, не мог бы кто-нибудь, пожалуйста, помочь
Комментарии:
1. На самом деле вы никогда не переходите в цикл while, поскольку возвращаетесь перед ним… Вы хотите выполнить работу, а затем, в конце выполнения функции,
return n
…2. Я попробовал это, и затем вывод становится возвращаемым вне функции, или он выводит, что я не должен запрашивать возврат внутри цикла. реструктуризация моего кода была небольшой проблемой..
3. Звучит так, как будто вы перемещаете его за пределы
def
… переместите его в нижнюю часть функции, но на тот же уровень, что иwhile
… таким образом, он по-прежнему имеет отступ на уровень внутриdef
…4. Он просто выводит «Вам, вероятно, не нужен оператор return внутри цикла while»
5. Уровень, который вы получили
return n
— просто поместите его после всегоwhile
блока … не внутри самогоwhile
оператора … например: на том же уровне, на котором он находится сейчас, но в конце самой функции…
Ответ №1:
У вас есть оператор return n почти поверх вашей функции, в результате чего программа никогда не выполнит ваш цикл
n = 0
k = 5
def div_3_5(start, end):
flag = False
number = start
count = 0
while flag is False:
if number % 3 == 0 or number % 5 == 0:
print("Divisible by 3 or 5")
print(number)
count = 1 # So you can see how many times the condition is met
if number == end:
flag = True
number = 1
print(count)
return count
div_3_5(n, k)
Комментарии:
1. Я переместил его в ту же позицию, но он по-прежнему выдает ошибку 0!= 9 и 0! = 10
2. Нет, это весь код, я делаю это в формате онлайн-теста, и поэтому он проверяет, вычисляет ли он количество целых чисел от начала до конца (исключая end), кратное 3 или 5
3. Хорошо, вам нужен цикл for, потому что с этим условием цикл while будет продолжать повторяться, потому что условия никогда не будут выполнены. Также вам не нужна глобальная переменная (n), и вам следует избегать глобальных переменных в целом.
4. Я бы хотел, но этот тест требует, чтобы вы использовали цикл while, и я включил только этот глобальный n, потому что в противном случае он выводит локальную переменную ‘n’, на которую ссылаются перед назначением.
5. Хорошо, позвольте мне внести некоторые изменения