我想开发一个以位形式输入并输出十进制等值的程序。
我受限于我可以使用的功能,所以这就是我提出的:
digits=raw_input("enter 1's and 0's")
a=len(digits)
repeat=a
c=0
total=0
while (c < repeat):
if digits[c]==1:
total=total + (2**a)
c=c+1
a=a-1
else:
c=c+1
a=a-1
print total
对于我输入的各种字符串,代码返回0
。
如何修复if
语句以使其正常工作。
答案 0 :(得分:1)
if 1==1
表示数字1等于1
if "1"=="1"
表示字符串(&#34; 1&#34;)是否相等&#34; 1&#34;
您需要了解数据类型之间的差异。
counter = 100 # An integer assignment
miles = 1000.0 # A floating point
name = "John" # A string
因此,您的代码应如下所示:
digits=raw_input("enter 1's and 0's")
a=len(digits)
repeat=a
c=0
total=0
while (c < repeat):
if digits[c]=="1":
total=total + (2**a)
c=c+1
a=a-1
else:
c=c+1
a=a-1
print total
答案 1 :(得分:0)
它不起作用的原因是可变数字是字符串,当你将它与整数1进行比较时,它不会工作你必须把它转换成下面的
if int(digits[c]) == 1:
或
if str(digits[c]) == "1":
此外,您的代码有很多不需要的行,因此请在下面找到相同的较小且有效的代码
digits=raw_input("enter 1's and 0's")
a=len(digits)
c = 0
total = 0
while (c < a):
if int(digits[c])==1:
total += pow(2,c)
c += 1
print "converted value : ", total
使用for循环编写它的方法比使用for循环更好,请在下面的代码中找到使用for循环的saem
digits=raw_input("enter 1's and 0's")
total = 0
for c in xrange(len(digits)):
if int(digits[c])==1:
total += pow(2,c)
print total
更好的方法是在下面两行中进行
binary_no = raw_input("Enter binary no : ")
# It converts the string to base 2 decimal equivalent
decimal_eqivalent = int(binary_no, 2)
print "Decimal eq : ", decimal_eqivalent