带错误报告的二进制到十进制计算器
Binary to Decimal calculator with error report
写了一段代码,我想将二进制数转换为十进制数,如果输入包含非二进制数,程序应该自行终止。但是当我输入像 1112 这样的数字时,它会忽略 2 并继续使用剩余的二进制数进行计算。
这是大学的家庭作业,所以打算在没有二进制函数的情况下进行此计算。
binär = input()
binärZahl1 = "0"
binärZahl2 = "1"
for charh in binär:
for char1 in binärZahl1:
for char2 in binärZahl2:
if charh == char1 or charh == char2:
binär = binär[::-1]
sum = 0
for i in range(len(binär)):
if binär[i] == "1":
sum += 2**i
elif charh != char2 or charh != char2:
print("Bitte nur binäre Zahlen eingeben")
break
print(sum)
那是因为你的 break
只跳出了最内层的循环。在您的情况下,您可以安全地删除两个最里面的循环(因为 binärZahl1
和 binärZahl2
无论如何只有一个条目......)。像
binär = input()
binärZahl1 = "0"
binärZahl2 = "1"
for charh in binär:
if charh == binärZahl1 or charh == binärZahl2:
binär = binär[::-1]
sum = 0
for i in range(len(binär)):
if binär[i] == "1":
sum += 2**i
elif charh != binärZahl1 or charh != binärZahl2:
print("Bitte nur binäre Zahlen eingeben")
break
print(sum)
按预期工作。请注意,您的示例中有一个错字,在您的 elif
中,您与 char2
进行了两次比较。
但是:仍然有一些非常不必要的循环。这通常会导致错误(例如,您一直在翻转 binär
)。减去错误检查,您的整个代码可以缩短为
binär = input()
binär = binär[::-1]
sum = 0
for i in range(len(binär)):
if binär[i] == "1":
sum += 2**i
print(sum)
您仍然可以在其中检查循环内的有效性。 A
写了一段代码,我想将二进制数转换为十进制数,如果输入包含非二进制数,程序应该自行终止。但是当我输入像 1112 这样的数字时,它会忽略 2 并继续使用剩余的二进制数进行计算。
这是大学的家庭作业,所以打算在没有二进制函数的情况下进行此计算。
binär = input()
binärZahl1 = "0"
binärZahl2 = "1"
for charh in binär:
for char1 in binärZahl1:
for char2 in binärZahl2:
if charh == char1 or charh == char2:
binär = binär[::-1]
sum = 0
for i in range(len(binär)):
if binär[i] == "1":
sum += 2**i
elif charh != char2 or charh != char2:
print("Bitte nur binäre Zahlen eingeben")
break
print(sum)
那是因为你的 break
只跳出了最内层的循环。在您的情况下,您可以安全地删除两个最里面的循环(因为 binärZahl1
和 binärZahl2
无论如何只有一个条目......)。像
binär = input()
binärZahl1 = "0"
binärZahl2 = "1"
for charh in binär:
if charh == binärZahl1 or charh == binärZahl2:
binär = binär[::-1]
sum = 0
for i in range(len(binär)):
if binär[i] == "1":
sum += 2**i
elif charh != binärZahl1 or charh != binärZahl2:
print("Bitte nur binäre Zahlen eingeben")
break
print(sum)
按预期工作。请注意,您的示例中有一个错字,在您的 elif
中,您与 char2
进行了两次比较。
但是:仍然有一些非常不必要的循环。这通常会导致错误(例如,您一直在翻转 binär
)。减去错误检查,您的整个代码可以缩短为
binär = input()
binär = binär[::-1]
sum = 0
for i in range(len(binär)):
if binär[i] == "1":
sum += 2**i
print(sum)
您仍然可以在其中检查循环内的有效性。 A