<p>您收到的错误是因为您试图将无效字符强制转换为int</p>
<p>您的输入是:<code>1, 2, 3, 4</code>,所以这些逗号是导致错误的原因。你知道吗</p>
<p>要纠正这种情况,只需删除int()类型转换,通过在输入中添加<code>.split(',')</code>使输入成为一个列表。拆分的作用是通过逗号拆分将字符串转换为列表。这样,您将有一个由字符串表示的数字列表。你知道吗</p>
<p>所以,既然你在做数学,你需要确保你实际上使用的是数值表示法,而不是列表中数据的字符串表示法。通过使用Python的<code>map</code>方法(<a href="https://docs.python.org/2/library/functions.html#map" rel="nofollow">documentation</a>),有一个简洁的单行解决方案,可以将所有条目转换为int</p>
<p>因此,您的用户输入可以简单地如下所示:</p>
<p>Python 3:</p>
<pre><code>userNumbers = list(map(int, input("Enter the digits here: ").split(',')))
</code></pre>
<p>Python 2:</p>
<pre><code>userNumbers = map(int, raw_input("Enter the digits here: ").split(','))
</code></pre>
<p>代码中还有一个问题。在userChoice方法中,您引用的是<code>userNumbers</code>。我认为这是在<code>numberPlacement</code>方法中对<code>userNumbers</code>的引用。你不能这么做。你知道吗</p>
<p>我建议你做的是,既然你想分别调用这两个方法,那就让你的userChoice方法接受一个参数,这个参数是一个列表,叫做userNumber。简单地说:</p>
<pre><code>def userChoice(userNumbers):
# the rest of your code
</code></pre>
<p>现在,非常重要的是要记住,<code>userNumbers</code>方法中的<code>userChoice</code>与<code>numberPlacement</code>方法中的<code>userNumbers</code>不同。为了理解原因,这是范围界定的一部分。你可以读到<a href="http://def%20userChoice():" rel="nofollow">here</a>。你知道吗</p>
<p>所以,当你现在调用你的方法时,你只需要这样做:</p>
<pre><code>number_placements = numberPlacement()
print(number_placements)
print(userChoice(number_placements))
</code></pre>
<p>当你把它们放在一起,你的代码现在看起来像这样:</p>
<p>(Python2)</p>
<pre><code>from collections import Counter
def numberPlacement():
print("Welcome to the PyCalculator, please enter a series of digits!")
userNumbers = map(int, raw_input("Enter the digits here: ").split(','))
return userNumbers
def userChoice(userNumbers):
while True:
print("Awesome, now that we haave your numbers please choose an operation (Mean, Median, or Mode!)")
userAnswer = raw_input("Enter your choice here: ")
if userAnswer == "Mean":
mean = sum(userNumbers) / float(len(userNumbers))
return mean
elif userAnswer == "Mode":
mode = Counter(userNumbers)
return mode
continue
r = numberPlacement()
print(userChoice(r))
</code></pre>
<p>演示:</p>
<pre><code>Welcome to the PyCalculator, please enter a series of digits!
Enter the digits here: 1,2,3,4
Awesome, now that we haave your numbers please choose an operation (Mean, Median, or Mode!)
Enter your choice here: Mode
Counter({1: 1, 2: 1, 3: 1, 4: 1})
</code></pre>