2017-11-25 2 views
-1

Ich mache ein Programm, das binäre in oktale, dezimale und hexadezimale Werte konvertiert. Wie überprüfe ich, ob der Eingabewert des Benutzers eine Binärzahl ist oder nicht? Hier ist der Code:Wie überprüft man, ob ein Wert binär ist oder nicht

def repeat1(): 
    if choice == 'B' or choice == 'b': 
     x = input("Go on and enter a binary number: ") 
     y = int(x, 2) 
     print(x, "in octal is", oct(y)) 
     print(x, "in decimal is", y) 
     print(x, "in hexidecimal is", hex(y)) 
     print(" ") 
     def tryagain1(): 
      print("Type '1' to convert from the same number base") 
      print("Type '2' to convert from a different number base") 
      print("Type '3' to stop") 
      r = input("Would you like to try again?") 
      if r == '1': 
       repeat1() 
      elif r == '2': 
       loop() 
      elif r == '3': 
       print("Thank you for using the BraCaLdOmbayNo Calculator!") 
      else: 
       print("You didn't enter any of the choices! Try again!") 
       tryagain1() 
     tryagain1() 

Vielen Dank im Voraus!

+1

Sie keine Links oder Bilder posten. Schneiden Sie den Code aus und fügen Sie ihn in die Frage ein, damit die Benutzer das Gleiche tun können, um Ihren Code auszuführen und/oder ihn für eine Antwort zu ändern. Siehe [fragen] und wie man ein [mcve] erstellt. –

+0

Eine Binärzahl muss aus 0 und 1 bestehen. Von hier hängt es an Ihnen ab. Wenn Sie sagen, dass die Zahl binär ist, ist es binär. Zum Beispiel 101101011 besteht aus 0 und 1, aber es kann dezimal, hexadezimal, binär oder etwas anderes sein. – Alperen

+0

@MarkTolonen, Vielen Dank dafür, wird sich verbessern. –

Antwort

0

Um zu überprüfen, ob eine Zahl binär ist, gibt es zwei Schritte: Überprüfen Sie, ob es sich um eine ganze Zahl ist, und überprüfen, ob es nur 1 und 0 enthält.

while True: 
    try: 
     x = int(input("Enter binary number")) 
    except ValueError: # If value is not an integer 
     print('Must be a binary number (contain only 1s and 0s)') 
    else: 
     # Iterates through all digits in x 
     for i in str(x): 
      if i in '10': # If digit is 1 or 0 
       binary = True 
      else: 
       binary = False 
     if binary == False: 
      print('Must be a binary number (contain only 1s and 0s)') 
     else: 
      break # Number is binary, you are safe to break from the loop 
print(x, "Is Binary") 

Der Benutzer wird aufgefordert, eine Nummer einzugeben, und das Programm versucht, es in eine ganze Zahl zu konvertieren. Wenn das Programm eine ValueError zurückgibt, bedeutet dies, dass die Eingabe keine Ganzzahl ist, und das Programm wird drucken, dass die Zahl nicht binär ist, und die while-Schleife wird erneut gestartet. Wenn die Zahl erfolgreich in eine Ganzzahl konvertiert wurde, durchläuft das Programm die Zahl (Sie müssen in eine Zeichenfolge konvertieren, da ganze Zahlen nicht iterierbar sind) und überprüfen, ob alle Ziffern in x1 oder 0 sind. Wenn eine Ziffer nicht vorhanden ist, wird die Variable binary in False geändert. Wenn das Programm erfolgreich den gesamten Wert durchlaufen hat und binaryTrue ist, unterbricht es die Schleife.

0
def isBinary(num): 
    for i in str(num): 
     if i in ("0","1") == False: 
      return False 
    return True 
+0

Was ist, wenn 'num' nicht in eine ganze Zahl umgewandelt wird? – AJ123

0

Ich denke, try-except ist der beste Weg. Wenn int(num, 2) funktioniert, ist num binär. Hier ist mein Code:

while True: 
    num = input("Number : ") 
    try: 
     decimal = int(num, 2) # Try to convert from binary to decimal 
    except: 
     print("Please type a binary number") 
     continue    # Ask a new input 

    binary = bin(decimal) # To prefix 0b 
    octal = oct(decimal) 
    hexadecimal = hex(decimal) 

    print(decimal, binary, octal, hexadecimal) 

Beispiel Ausgabe:

Number : john 
Please type a binary number 
Number : ... 
Please type a binary number 
Number : 12546 
Please type a binary number 
Number : 10000101011 
1067 0b10000101011 0o2053 0x42b 
Number : 100111011 
315 0b100111011 0o473 0x13b 
Verwandte Themen