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
Antwort
In diesem Bit:
a = (N1 - 4)
if a < 0:
a = 0
else:
a = 1
N1 = a
nach dem else
legen Sie zunächst den Wert von a bis 1, und kopieren Sie dann diesen Wert N1. Ihr Programm hat also vergessen, was N1 war, und das Ergebnis für b und c wird immer dasselbe sein. (Dasselbe Problem tritt erneut für b und c auf.)
Übrigens gibt es effizientere Möglichkeiten, die binäre Darstellung einer Zahl herauszufinden. Tipp: Verwenden Sie den Operator &
, um herauszufinden, ob das letzte Bit einer Zahl 1
ist, und verwenden Sie den Operator >>
, um alle Bits der Zahl nach rechts zu verschieben.
wow ich fühle mich dumm! Danke vielmals! Ich habe N1 = a losgeschickt und N2 = a nach a = (N1 - 4) hinzugefügt und dann nach a = 1 habe ich N1 = N2 hinzugefügt. Han-Kwang Nienhuys – darkfenix54
... Ich habe es getestet und es funktioniert! (es funktioniert nur, wenn ein < 0 also nur mit N1 < 4 weil a = N1-4, 4 - 4 = 0, 0 = 0, also 0 nicht < 0, und die if-Anweisung funktioniert nicht mit 4, und natürlich nicht mit 5 arbeiten, 6, 7 ... auch)
Der naive Weg, es zu beheben, besteht darin, N1 in jedem Fall zu entfernen und andere Werte zu subtrahieren, wenn Anweisungen seit N1 während der Ausführung der zweiten while-Schleife nicht aktualisiert werden. Sie sollten immer dies geschieht in Ihre Codes vermeiden:
N1 = int(input("What interger do you wish to turn to binary (from 0 - 7 only!)"))
während (N1> 7) oder (N1 < 0): N1 = int (Eingang ("Sie Eingabe von 0 sein muss - 7 nur!")) während True: wenn N1 == 0: print ("0 0 0") Pause
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
Aber man es in einem iterativen Stil tun:
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
Ich darf keine eingebaute binäre Funktion verwenden. – darkfenix54
- 1. Python Pangram überspringt zweiten Buchstaben
- 2. (Python) Platformer - Charakter überspringt/falsch platziert
- 3. Warum überspringt meine for-Schleife bestimmte Werte in meinem Python-Indexgenerator?
- 4. Warum überspringt meine for-Schleife ein Element in meiner Liste?
- 5. Warum überspringt dieses C-Programm meine Eingabe vollständig?
- 6. Meine einfache App überspringt viele Frames. (Imageview und Imagebutton)
- 7. Binärer Leser überspringt Anweisungen
- 8. Rails caches_action überspringt before_filters
- 9. VHDL-Zustandsmaschine überspringt Zustände
- 10. Komponententest überspringt alle Unterbrechungspunkte
- 11. Scanner Klasse überspringt Leerzeichen
- 12. Javascript überspringt sonst wenn?
- 13. Maven überspringt automatisch Tests
- 14. Logstash überspringt viele Logzeilen
- 15. zip-Befehl überspringt Fehler
- 16. Überspringt einen Wert in der Bereichsfunktion in Python.
- 17. Ansible with_fileglob überspringt
- 18. Tycho überspringt Tests
- 19. Dateischleife überspringt fälschlicherweise Dateien
- 20. Code überspringt If-Anweisung
- 21. :: Auswahl überspringt einige Zeilen
- 22. JavaScript-Array überspringt Werte
- 23. Java: BufferedWriter überspringt Zeilenumbruch
- 24. Überspringt Tests in Grails
- 25. Mnogosearch überspringt Seiten
- 26. GLSL überspringt "if" -Anweisung
- 27. Java StringTokenizer.nextToken() überspringt leere Felder
- 28. Ruby: überspringt einen gets Wert
- 29. View.isInEditMode() überspringt den Code nicht
- 30. jQuery .slideUp() überspringt die Animation
Sie sollten ein minimales, vollständiges und überprüfbares Beispiel erstellen ... währenddessen können Sie herausfinden, warum es nicht funktioniert http://stackoverflow.com/help/mcve –
Was ist Ihre Frage? – gefei
Sie können [Wikipedia Artikel über Software-Flusskontrolle] (https://en.wikipedia.org/wiki/Control_flow) nützlich finden. Zumindest können Sie "manuell" durch dieses Programm gehen (von Hand), um mögliche Ergebnisse abzuleiten; und identifizieren Sie den logischen Fehler, den Sie erleben. – motoku