2013-10-20 3 views
1

Я пытаюсь написать функцию, которая находит как подписанные/unsigned max/min значения, заданные бит длины. Но каждый раз, когда я выполняю функции я получаю сообщение об ошибке, вот мой кодКак обрабатывать числа в списке как целые числа в функции

#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() или что-то подобное, чтобы число было обработано как целое число типа, а не список тилей, который im предполагает, что происходит?

+1

'n' (по параметру' bitlist') - это список, и вы пытаетесь поднять 2 до мощности списка! Кажется, вы каким-то образом поменяли 'n' и' numbers'. – mshsayem

ответ

3

Изменить определение метода и первая линия к этому:

def minmax (numbers) : 
    for n in numbers : 

То есть, в этих двух строках заменить «п» с «номерами» везде появляется и заменить «число» с «п», где это появляется.

Как вы его написали, переменная «числа» содержит элемент в списке, который вы хотите обработать, и переменная «n» удерживает список. Но остальная часть вашего кода написана с обратным предположением.

Смежные вопросы