<p><code>str</code>是一个类,如<a href="https://docs.python.org/3/library/stdtypes.html#str" rel="nofollow noreferrer">docs</a>中所述,最多可以向其传递3个参数:</p>
<pre><code>class str(object=b'', encoding='utf-8', errors='strict')
</code></pre>
<p>此外,它还说明了它的功能:</p>
<blockquote>
<p>Return a string version of object. If object is not provided, returns the empty string.</p>
</blockquote>
<p>这意味着它用于将其他类型强制转换为字符串。因此,您需要单独转换每个int:</p>
<pre><code>users[n]["Transactions"] = users[n]["Transactions"] + str(names_f) + " bought " + str(quanti) + " of " + str(final[choice*3]) + " with a total price of " + str(price)
</code></pre>
<p>注意每个字符串前后的空格。或者,您可以格式化字符串:</p>
<pre><code>users[n]["Transactions"] = users[n]["Transactions"] + '%s bought %s of %s with a total price of %s' % (names_f, quanti, final[choice*3], price)
</code></pre>
<hr/>
<p>作为旁注,值得检查第一笔交易完成后会发生什么。如果键<code>Transactions</code>还不存在,则需要在访问它之前添加初始值</p>
<p>我通常这样做:</p>
<pre><code>if key not in dict_:
dict_[key] = 'my initial value'
dict_[key] += 'add my stuff'
</code></pre>
<p>另一种解决方案是使用<code>get</code>方法,该方法允许您添加默认值:</p>
<pre><code>dict_.get(key, 'default')
</code></pre>
<p>请注意,这不会将密钥添加到字典中,这意味着稍后尝试访问其值仍将导致密钥错误</p>