2016-07-07 43 views
1

我对python 2.7是全新的。上次我为自己开发了一个小功能,并且很想知道如何改进我的算法。那里写了什么不必要的东西? (我不想在目的函数中使用构建,因为我是初学者,但我知道这些是存在的,我希望稍后会记住这一点)。或者你知道其他方法计算从基2到基地10?这是我知道的唯一方法,或者说,我将如何用笔和纸来计算。二进制到十进制代码改进

import math 

print "Please enter a binary sequence." 
prompt = '>> ' 
x = raw_input(prompt) 
n = x[::-1] 
i = 0 
s = 0 

'''bin2dec''' 
for i in range(len(n)): 
    i += 1 
    if int(str(n)[i-1]) != 0: 
    s += pow(2, i-1) 
    else: 
    s += 0 
print s 

PS:目前我正在制定反向算法。敬请期待:)

+3

如果这是您认为可以改进的**工作代码**,请参见[codereview.se]。如果不是,请澄清问题。 – jonrsharpe

+0

这确实是一个工作代码。不知道代码审查部分。谢谢你提到它。我一定会检查出来的。 – Stefan

+0

第一条评论:使用更好的变量名称。 – Mast

回答

0
import math 
print "Please enter a binary sequence." 
prompt = '>> ' 
x = raw_input(prompt) 
x = list(x[::-1]) 
result=0 
'''bin2dec''' 
for i in range(len(x)): 
    result+=int(x[i])*pow(2,i) 
print result 
  • 首先保持理解的变量,同时发布。
  • 可以将输入转换为更好的遍历列表。
  • 这是更清晰和可升级的代码可能与您的概念。
  • 可以使用代替使用数学函数2**i