2013-10-20 21 views
1

我正在尝试编写一个函数,该函数在给定位长的情况下找到有符号/无符号的最大/最小值。但我每次执行函数时我得到一个错误,这里是我的代码如何将列表中的数字作为函数中的整数

#function to find max and min number of both signed and unsigned bit values 

    def minmax (n) : 
     for numbers in n : 

      unsignedmax = (2**n)-1 
      unsignedmin = 0 
      signedmax = 2**(n-1)-1 
      signedmin = -2**(n-1) 
     print "number  ", "unsigned    ", "signed" 

    #Main 

    bitlist = [2, 3, 8, 10, 16, 20, 32] 

    minmax(bitlist) 

误差

Traceback (most recent call last): 
    File "C:/Users/Issac94/Documents/Python Files/sanchez-hw07b.py", line 23, in <module> 
    minmax(bitlist) 
    File "C:/Users/Issac94/Documents/Python Files/sanchez-hw07b.py", line 6, in minmax 
    unsignedmax = (2**n)-1 
TypeError: unsupported operand type(s) for ** or pow(): 'int' and 'list' 
>>> 

我没有写完,但跑了,以确保没有错误在逻辑部分,但当我试图找到这些值时,我得到了一个错误。有没有可能插入int()或类似的东西,使数字被视为类型整数,而不是tyle列表,我假设正在发生?

+1

'n'(通过参数'bitlist')是一个列表,你试图提高2的列表的权力!似乎你已经交换了'n'和'数字'。 – mshsayem

回答

3

更改方法定义和第一行这样:

def minmax (numbers) : 
    for n in numbers : 

也就是说,在这两条线,以“数字”替换“n”个到处出现,并与替换“编号”“N”,其中它会出现。

正如您所写的那样,变量“numbers”包含要处理的列表中的项目,而变量“n”包含该列表。但其余的代码是用相反的假设编写的。

相关问题