簡體   English   中英

檢查是否為二進制並轉換為十進制

[英]check if binary and convert to decimal

我對Python和編碼一般都是新手。 對於我的學校作業,我必須創建一個從二進制轉換為十進制的程序,但是首先我還需要檢查輸入是否為二進制。 基本上-我有單獨的代碼來檢查輸入是否正確以及是否進行了轉換。 關於如何將這兩者結合的任何建議? 這是我有史以來的第一個任務,我真的被卡住了。 請注意,我不允許使用任何內置功能。 感謝您對我在這里犯什么錯誤的任何建議?

my_binary = input("Enter binary number: ")
decimal = 0
index = 0
exponent = len(my_binary) - 1

def b_to_d(my_binary):
    for character in my_binary:
        if character != '0' and character != '1':
            print ('Number is not binary!')
            return False
    print ('Number is binary')
    return True
b_to_d(str(my_binary))

while True and index != len(my_binary):
    decimal += int(my_binary[index]) * 2**exponent
    index += 1
    exponent -= 1
print(decimal)

您的函數是正確的,但是您正在計算十進制數,而不檢查數字是否為二進制。 如果數字為二進制,則僅轉換為十進制。

my_binary = input("Enter binary number: ")
decimal = 0
index = 0
exponent = len(my_binary) - 1

def b_to_d(my_binary):
    for character in my_binary:
        if character != '0' and character != '1':
            print ('Number is not binary!')
            return False
    print ('Number is binary')
    return True

is_binary = b_to_d(str(my_binary))

if is_binary:
    while index != len(my_binary):
        decimal += int(my_binary[index]) * 2**exponent
        index += 1
        exponent -= 1
    print(decimal)

HariUserX解釋您的代碼中的錯誤。 雖然,我會作為一個補充說明,您的代碼可以大大縮短。

my_binary = input("Enter binary number: ")
try:
    decimal = int(my_binary, 2)
except ValueError:
    print('Number is not binary!')

上面使用了“請求寬恕而不是允許”的原則。 嘗試將數字轉換為二進制並檢查是否失敗,這種方法在本質上更好地構建了Python。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM