Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 整数和-';int';对象是不可编辑的_Python - Fatal编程技术网

Python 整数和-';int';对象是不可编辑的

Python 整数和-';int';对象是不可编辑的,python,Python,我的问题与python中的sum函数有关 所以我的代码是 def black_jack(a, b): if sum(a, b) > 21: return 0 else: return sum(a, b) print black_jack(10, 5) 我得到一个错误,读取: 'int' object is not iterable 有人能解释一下为什么会发生这种情况以及如何修复它吗?sum需要一个可编辑的对象(比如list)。因此,代

我的问题与python中的sum函数有关

所以我的代码是

def black_jack(a, b):
    if sum(a, b) > 21:
        return 0
    else:
        return sum(a, b)


print black_jack(10, 5)
我得到一个错误,读取:

'int' object is not iterable

有人能解释一下为什么会发生这种情况以及如何修复它吗?

sum需要一个可编辑的对象(比如list)。因此,代码应该是:

def black_jack(a, b):
    if sum([a, b]) > 21:
        return 0
    else:
        return sum([a, b])

print black_jack(10, 5)

以下内容有什么问题

def black_jack(a, b):
    if a + b > 21:
        return 0
    else:
        return a + b

print black_jack(10, 5)
在21点游戏中,一个人可以拥有的不仅仅是两张牌,但在你的例子中,你似乎假设一手牌只能有两张牌。如果允许使用数量可变的卡,则需要使用其他人建议的iterable对象:

def black_jack(values):
    total = sum(values)
    return 0 if total > 21 else total

print black_jack(10, 5)
从以下文件中:

sum(
[,
])

将iterable的起始项和项从左到右求和,并返回总数。开始默认为
0
。iterable的项通常是数字,并且起始值不允许是字符串

对于某些用例,有很好的替代方法。连接字符串序列的首选快速方法是调用
'.join(sequence)
。要添加具有扩展精度的浮点值,请参见。为了连接一系列迭代,考虑使用.< /P> 版本2.3中的新功能


sum
将第一个参数作为列表。这里是:

def black_jack(a, b):
    if (sum([a], b) > 21):
        return 0
    else:
        return sum([a], b)


print black_jack(10, 5)
看看:

求和(iterable[,start])

将iterable的起始项和项从左到右求和,并返回总数。开始默认为
0
。iterable的项目包括: 通常为数字,且起始值不允许为字符串

所以你必须传递一个iterable作为参数,而不是int

sum((a,b))
应该正常工作


这是一个用于在列表中存储多个值时使用的函数(例如,如果要对两个值求和,只需使用
a+b

求和是内置函数,请参阅文档:

In [1]: sum?
Docstring:
sum(sequence[, start]) -> value

Return the sum of a sequence of numbers (NOT strings) plus the value
of parameter 'start' (which defaults to 0).  When the sequence is
empty, return start.
Type:      builtin_function_or_method
所以你需要通过一个iterable!:
解决方案1

sum([a, b]) #list
解决方案2

sum((a, b)) #tuple

sum接受一个iterable对象,比如一个列表,所以如果你想使用sum,那么就执行sum([a,b])
。从根本上看,这不是
sum
的目的,
sum
是元组或其他iterable列表的总和。不要超越你自己:)或者你可以只做
a+b
我想你在找这个:
int.\uu添加\uuuu(a,b)
但是,我不会用这个。我会用加号运算符。谢谢,我知道这很简单。