擅长:python、mysql、java
<p>您的代码正确地从<code>validateUserInputTime</code>返回整数值:</p>
<pre><code>return True, int(startHour), int(startMinute)
</code></pre>
<p>但调用函数时,忽略这些返回值:</p>
<pre><code>validateUserInputTime(startHour, startMinute)
</code></pre>
<p>……所以它们是否正确并不重要;你不能对它们做任何事。你知道吗</p>
<p>如果你试着<code>print(type(startHour))</code>,它仍然是<code>str</code>,因为它仍然是一个与以前相同的值的名称。你知道吗</p>
<p>如果要将这些返回值赋给变量,则需要一个赋值语句:</p>
<pre><code>success, startHour, startMinute = validateUserInputTime(startHour, startMinute)
</code></pre>
<p>现在,<code>print(type(startHour))</code>将显示<code>int</code>。你知道吗</p>
<hr/>
<p>然而,对于一个函数来说,这是一个非常奇怪的接口。如果成功,则返回<code>True</code>加上两个值;如果失败,则返回<code>False</code>加上其他值。因此,对于无效时间,该赋值将引发<code>TypeError: 'bool' object is not iterable</code>。你知道吗</p>
<p>即使在失败的情况下,也可以通过返回三个值来解决此问题:</p>
<pre><code>return False, int(startHour), int(startMinute)
</code></pre>
<p>或者,更简单地说,只需使用一个<code>return</code>:</p>
<pre><code>success = int(startHour) in hoursList and int(startMinute) in minutesList
if not success:
print("FAIL")
return success, int(startHour), int(startMinute)
</code></pre>