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() 或类似的东西,将数字视为整数类型而不是我假设正在发生的类型列表?

4

1 回答 1

3

将方法定义和第一行更改为:

def minmax (numbers) :
    for n in numbers :

也就是说,在这两行中,将出现的任何地方的“n”替换为“numbers”,并在出现的地方用“n”替换“numbers”。

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

于 2013-10-20T03:26:54.200 回答