如果条件使用特定的字符串字符,如何使?

时间:2016-10-06 16:46:54

标签: python

我想开发一个以位形式输入并输出十进制等值的程序。

我受限于我可以使用的功能,所以这就是我提出的:

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语句以使其正常工作。

2 个答案:

答案 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