2016-12-22 4 views
1

Если целое число делится на 3, печать «Привет»Python, если и еще печать условие

Если он делится на 7, печать «Bye»

Если он делится на как 3 и 7, печать "HiBye"

в настоящее время я пытался:

for i in range(1,100): 
    if i % 3 == 0: 
     print "Hi" 
    if i % 7 == 0: 
     print "Bye" 
    if i % 3 == 0 and i % 7 == 0: 
     print "HiBye" 
    else: 
     print i 

Но мои номера повторяются. т. е. это результат, который я получаю.

1 
2 
Hi 
3 
4 
5 
Hi 
6 
Bye 
7 
8 
Hi 
9 
10 
11 
Hi 
12 
13 
Bye 
14 
Hi 
15 
16 
17 
Hi 
18 
19 
20 
Hi 
Bye 
HiBye 

Как вы можете видеть, 3 повторяется снова. Я думаю, что ошибка в заявлении

else: 
    print i 

+0

Я думаю, вам не хватает заявления 'elif' –

+0

Ну, что делает ваш код для' 21'? Что вы хотите сделать вместо этого? – Barry

+0

ключевое слово, которое вы ищете, это 'elif' – njzk2

ответ

8

Вы должны использовать elif вместо if и тест на 3 и 7 случае первый:

if i % 3 == 0 and i % 7 == 0: 
    print "HiBye" 
elif i % 3 == 0: 
    print "Hi" 
elif i % 7 == 0: 
    print "Bye" 
else: 
    print i 

You использовано независимыхif утверждений. Каждый оператор if проверяется и выполняется их блок, независимо от того, какие другие операторы if могут выполнять ваш код до или после. Блоки elif, однако, прикреплены к их оператору if, и Python будет выполнять только один из блоков, первый из которых имеет условие true.

Таким образом, в приведенном выше if..elif..elif..else серии испытаний, если i % 3 == 0 and i % 7 == 0 истинно, ни один из других ветвей будет выполняться, в том числе else отрасли.

Теперь результат выглядит:

>>> for i in range(1, 22): 
...  if i % 3 == 0 and i % 7 == 0: 
...   print "HiBye" 
...  elif i % 3 == 0: 
...   print "Hi" 
...  elif i % 7 == 0: 
...   print "Bye" 
...  else: 
...   print i 
... 
1 
2 
Hi 
4 
5 
Hi 
Bye 
8 
Hi 
10 
11 
Hi 
13 
Bye 
Hi 
16 
17 
Hi 
19 
20 
HiBye 
0

Вы должны изменить ваш код для

for i in range(1,100): 
if i % 3 == 0 and i % 7 == 0: 
    print "HiBye" 
elif i % 3 == 0: 
    print "Hi" 
elif i % 7 == 0: 
    print "Bye" 
else: 
    print i 

Потому что в противном случае он будет индивидуально смотреть на каждый если заявление и когда его на 3, например, он выполняет первую часть кода, но когда он пробует if i % 3 == 0 and i % 7 == 0:, он будет ошибочным, поэтому он печатает i

0

Если я правильно понимаю, это следующие условия: 1) если число делится на 3 печати «Привет» 2) если число делится на 7 печатать «Bye» 4) если число делится на 3 и 7 напечатайте «HiBye» 5) если ни одно из вышеуказанных условий не выполнено, напечатайте номер.

for i in range(1,100): 
if i % 3 == 0 and i % 7 == 0: 
    print "HiBye" 
elif i % 3 == 0: 
    print "Hi" 
elif i % 7 == 0: 
    print "Bye" 

elif i % 3 != 0 and i % 7!= 0: 
    print i 

Этот код работает для вышеуказанных условий. Он четко формулирует их и заставляет логику.

+0

Я изменил его, чтобы исправить проблему –

+0

Почему последний 'elif'? Почему бы просто не использовать 'else'? –

+0

Просто убедитесь, что условие выполнено. В этих случаях я считаю, что лучше быть явным. Это действительно порядок, когда python выполняет итерацию и проходит через числа, которые имеют значение. –