我正在尝试编写一个函数,该函数在给定位长度的情况下找到有符号/无符号的最大值/最小值。但是每次执行该函数时都会出错,这是我的代码
#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列表,我假设正在发生?
答案 0 :(得分:3)
将方法定义和第一行更改为:
def minmax (numbers) :
for n in numbers :
也就是说,在这两行中,将“n”替换为出现的“数字”,并将“数字”替换为“n”,并将其替换为“n”。
正如您所写的那样,变量“numbers”保存您要处理的列表中的项目,变量“n”保存列表。但是你的代码的其余部分是用相反的假设编写的。