擅长:python、mysql、java
<p>我相信你正在努力实现以下目标:</p>
<pre><code>while True:
s = input("Please enter your name: ")
if " " not in s:
break
print('Cannot contain spaces.')
print('Welcome ' + s)
</code></pre>
<p>让我们从函数开始分析代码的错误:</p>
<pre><code>def has_space(item):
for i in item:
if i.isspace():
print('Cannot contain spaces.')
s = input("Please enter your name: ")
</code></pre>
<p>这里,在检查每个字符是否为空格时,要求用户插入一个名称,并将其分配给一个<strong>局部变量</strong><code>s</code>,该变量与全局变量<code>s</code>不一致。你知道吗</p>
<p>这意味着您要解析用户输入,要求为最初插入的名称中的每个空格输入一个新名称,而不做任何处理。你知道吗</p>
<p>此外,在<code>if</code>中使用此函数作为布尔条件,但该函数不返回任何内容:这被视为返回<code>None</code>,<code>if None</code>与<code>if False</code>相同。你知道吗</p>
<p>更好的方法是将控件和用户输入请求分为两个不同的功能,例如:</p>
<pre><code>def has_space(item):
return " " in item
def ask_name():
return input("Please enter your name: ")
while 1:
s = ask_name()
if has_space(s):
print('Cannot contain spaces.')
else:
break
</code></pre>