N1 = int(input("What interger do you wish to turn to binary (from 0 - 7 only!)"))
while (N1 > 7) or (N1 <0) :
N1 = int(input("You input must be from 0 - 7 only!"))
while True:
if N1 == 0:
print ("0 0 0")
break
else:
a = (N1 - 4)
if a < 0:
a = 0
else:
a = 1
N1 = a
b = (N1 - 2)
if b < 0:
b = 0
else:
b = 1
N1 = b
c = (N1 - 1)
if c < 0:
c = 0
else:
c = 1
print(a,b,c)
break
ответ
в этот бит:
a = (N1 - 4)
if a < 0:
a = 0
else:
a = 1
N1 = a
После else
, сначала установите значение а 1, а затем скопировать это значение N1. Итак, ваша программа забыла, что такое N1, и результат для b и c всегда будет таким же. (Такая же проблема повторится и для b и c.)
Кстати, есть более эффективные способы определения двоичного представления числа. Подсказка: используйте оператор &
, чтобы узнать, является ли последний бит числа 1
, и используйте оператор >>
, чтобы сдвинуть все биты числа вправо.
wow я чувствую себя глупым! Большое спасибо! Я избавился от N1 = a и добавил N2 = a после a = (N1 - 4), а затем после a = 1 добавил N1 = N2 @ Han-Kwang Nienhuys – darkfenix54
... Я тестировал его, и он работает! (он работает только тогда, когда < 0 так только с N1 < 4, потому что a = N1-4, 4 - 4 = 0, 0 = 0, поэтому 0 не < 0, а оператор if не работает с 4, и, естественно, не работает с 5, 6, 7 ... тоже)
Наивный способ исправить это - удалить N1 в каждом случае и вычесть разные значения при запуске, если операторы, поскольку N1 не обновляется во время выполнения второго цикла while. Вы всегда должны избежать этого происходит в ваших кодов:
N1 = int(input("What interger do you wish to turn to binary (from 0 - 7 only!)"))
время (N1> 7) или (N1 < 0): N1 = Int (вход ("Вы вход должен быть от 0 - 7 только!")) в то время как True: если N1 == 0: печать ("0 0 0") перерыв
else:
a = (N1 - 4)
if a < 0:
a = 0
else:
a = 1
b = (N1 - 6)
if b < 0:
b = 0
else:
b = 1
c = (N1 - 7)
if c < 0:
c = 0
else:
c = 1
print(a,b,c)
break
Но вы можете сделать это в итерационном стиле:
N1 = int(input("What interger do you wish to turn to binary (from 0 - 7 only!)"))
if (N1 > 7) or (N1 <0) :
N1 = int(input("You input must be from 0 - 7 only!"))
else:
binary = []
if N1 == 0:
print ("0 0 0")
for i in range (0,3):
if (N1 - pow(2,(2 - i))) >= 0:
binary.append(1)
N1 = N1 - pow(2,(2 - i))
else:
binary.append(0)
print binary
Мне не разрешено использовать двоичную встроенную функцию. – darkfenix54
- 1. Моя программа, кажется, пропускает мой оператор «If»
- 2. My For Loop пропускает мой оператор IF
- 3. Почему мой код пропускает оператор if?
- 4. GLSL пропускает оператор «if»
- 5. Почему php пропускает оператор if?
- 6. Моя программа пропускает оператор if
- 7. Программа, похоже, пропускает оператор «if»
- 8. Почему мой оператор IF пропущен?
- 9. Почему мой оператор python if не работает?
- 10. Почему моя программа пропускает оператор if?
- 11. Python 3: оператор if/else пропускает прямо в другое
- 12. Оператор Python if пропускает код, хотя условие выполнено
- 13. Почему эмулятор Android пропускает мой оператор возврата?
- 14. Почему моя функция пропускает оператор If?
- 15. java: if инструкция, которая пропускает следующий оператор if
- 16. Простой оператор python 'if'
- 17. Chrome игнорирует мой оператор if
- 18. Как исправить мой оператор if
- 19. Простой оператор python if
- 20. Оператор Python IF/ELIF
- 21. Оператор Python if
- 22. Оператор Python If-elif
- 23. Оптимизировать оператор python if
- 24. Почему мой код Python пропускает цикл while?
- 25. python пропускает мой второй цикл for
- 26. Мой код пропускает блок IF и переходит на ELSE
- 27. Почему мой обычный оператор «if» не работает на python
- 28. python однострочный оператор выражения if if true
- 29. Почему мой скрипт пропускает trhough операторы If с запросом mysql
- 30. Код C++ пропускает оператор if. Не позволяет пользователю вводить ввод
вы должны создать пример минимального, полного и проверяемого ... btw, при этом вы можете узнать, почему его не работает http://stackoverflow.com/help/mcve –
в чем ваш вопрос? – gefei
Вы можете найти [эту статью в Википедии об управлении потоком программного обеспечения] (https://en.wikipedia.org/wiki/Control_flow). По крайней мере, вы можете «вручную» пройти эту программу (вручную), чтобы вывести возможные результаты; и определить логическую ошибку, с которой вы сталкиваетесь. – motoku