2016-11-04 2 views
-8

Недавно я начал писать python, так как вчера и в классе я обнаружил тест FizzBuzz. Естественно, я принял вызов перед мной, и пришел с этим:Каков правильный результат теста FizzBuzz в python?

count = 0 

while count <= 100: 
    if (count % 3) == 0: 
    print "Fizz" 
    count = count + 1 

    elif (count % 5) == 0: 
     print "Buzz" 
     count = count + 1 

    elif (count % 5) and (count % 3): 
     print "FizzBuzz" 
     count = count + 1 

    else: 
     print count 
     count = count + 1 

Он не выводит никаких цифр только Fizz FizzBuzz FizzBuzz Fizz FizzBuzz Buzz Fizz FizzBuzz FizzBuzz Fizz Buzz FizzBuzz Fizz FizzBuzz FizzBuzz Fizz FizzBuzz FizzBuzz Fizz FizzBuzz Buzz Fizz FizzBuzz FizzBuzz Физз Buzz FizzBuzz Fizz FizzBuzz FizzBuzz Fizz FizzBuzz FizzBuzz Физз FizzBuzz Buzz Физз FizzBuzz FizzBuzz Физз Гул FizzBuzz FizzFizzBuzz FizzBuzz Физз FizzBuzz FizzBuzz Fizz FizzBuzz Buzz Fizz FizzBuzz FizzBuzz Физз Buzz FizzBuzz Fizz FizzBuzz FizzBuzz Fizz FizzBuzz FizzBuzz Fizz FizzBuzz Buzz Физз FizzBuzz FizzBuzz Физз Buzz FizzBuzz Fizz FizzBuzz FizzBuzz Fizz FizzBuzz FizzBuzz Fizz FizzBuzz Buzz Fizz FizzBuzz FizzBuzz Физз Гул FizzBuzz Физз FizzBuzz FizzBuzz Физз FizzBuzz FizzBuzz Fizz FizzBuzz Buzz Fizz FizzBuzz FizzBuzz Fizz Buzz

То, что я спрашиваю 1: Является ли это правильный выход и 2: как я мог очистить программу, я Попрошайничество для указателей. Спасибо, Кай

+3

'(count% 5) и (count% 3)'. Это всегда будет верно для чисел, которые попали в ваш код. –

+3

Вопросы, а не истории. – zeantsoi

+2

Возможно, вам захочется посмотреть, как сделать [упражнение fizz-buzz снова] (https://en.wikipedia.org/wiki/Fizz_buzz). –

ответ

2

Подумайте о том порядке, в котором эти заявления,

elif (count % 5) and (count % 3): 

эта строка кода никогда не будет выполняться, либо как

if (count % 3) == 0: 

или

elif (count % 5) == 0: 

выполнит сначала, если эти условия верны. В этом случае вы хотите проверить, действительно ли , как этих условий, равно , тогда вы должны проверить, действительно ли условие .

Кроме того, строка кода

count = count + 1 

появляется в каждой ветви кода, рассмотреть вопрос о размещении этого где-то , где будет выполняться каждый раз.

Однако я выбрал бы использовать для цикла, а не время цикла,

for x in range(100): 

это устраняет необходимость в дополнительной переменной счетчика.

Еще одна вещь, чтобы следить за

elif (count % 5) and (count % 3): 

здесь, вы не проверять, если число% 5 == 0, вы просто проверка (посчитайте% 5). Таким образом, выражение «if (count% 5)» приведет к True, если счетчик не равномерно делится на 5 (проверьте тестирование значения истины). То же самое относится к другим местам, где вы не учитываете == compator

Вот пример подобного подхода к вашему.

for count in range(1, 101): 
    if count % 5 == 0 and count % 3 == 0: 
     print "FizzBuzz" 
    elif count % 5 == 0: 
     print "Buzz" 
    elif count % 3 == 0 and count % 5 == 0: 
     print "Fizz" 
    else: 
     print count 

вещи, чтобы отметить:

  • проверки для обоих условий перед проверкой индивидуальных условий
  • цикл вместо в то время цикла (личное предпочтение)
  • проверки == 0
Смежные вопросы