Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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 3.x 为什么它会打印;无”;当我输入超出范围的新值时?Python 3_Python 3.x_Loops - Fatal编程技术网

Python 3.x 为什么它会打印;无”;当我输入超出范围的新值时?Python 3

Python 3.x 为什么它会打印;无”;当我输入超出范围的新值时?Python 3,python-3.x,loops,Python 3.x,Loops,我试图编写一个代码,如果用户输入不在范围内,它会再次要求用户输入。这在第一次执行循环时起作用,但在那之后,它打印“无”。在输入有效答案之前,如何保持循环重复?有人能给我解释一下吗 e、 g如果我在下面的代码中输入数字5,它应该再次询问用户,直到用户输入有效答案 def find_letter(word): prompt = "Enter index: " index = int(input(prompt)) length_of_word = len(word) - 1

我试图编写一个代码,如果用户输入不在范围内,它会再次要求用户输入。这在第一次执行循环时起作用,但在那之后,它打印“无”。在输入有效答案之前,如何保持循环重复?有人能给我解释一下吗

e、 g如果我在下面的代码中输入数字5,它应该再次询问用户,直到用户输入有效答案

def find_letter(word):
    prompt = "Enter index: "
    index = int(input(prompt))
    length_of_word = len(word) - 1
    while (index >= 0 and index <= length_of_word):
        index_word = word[index]
        return index_word
    else:
        index = int(input(prompt))
print(find_letter("Cats"))
def find_字母(单词):
prompt=“输入索引:”
索引=int(输入(提示))
单词的长度=len(单词)-1

while(index>=0,index你的
while
循环是无限的,因为你不增加变量
index
else
语句前面必须有一个
if
(我想你是想写
if
来代替
while

你的逻辑是向后的。目前,你的代码将(尝试)只要输入有效,就继续运行while块的内容,尽管不会,因为while块中有返回。同时,else块将只运行一次。因此,您可能需要

    while (index < 0 or index > word_length): #the 'invalid' input
        index = int(input(prompt)) #keep attempting to get new input
    else: #when we reach this block, the input is valid
        index_word = word[index] #so this is run once
        return index_word
while(索引<0或索引>字长):#“无效”输入
index=int(输入(提示))#继续尝试获取新输入
else:#当我们到达此块时,输入有效
index_word=word[index]#所以这只运行一次
返回索引词

重新读取。只要指定的条件为true,while循环的第一个块将运行,而else块(如果有)将运行当条件不再为真时,只运行一次,除非第一个块退出时返回、中断或引发异常。在进入while-else之前,条件可能已经为假,因此在这种情况下,第一个块永远不会运行,而else块仍然运行一次。

关于返回的
None
因为在
else
中,在输入之后,函数结束,隐式返回
None
(即不返回任何内容).

您好,欢迎来到StackOverflow。请与我们分享您的。我将如何进行此操作,使用while语句而不是if语句?增加变量是什么意思?抱歉,我是Python新手。通过增加,我的意思是您必须增加索引的值,只有这样,循环才会在某个点终止,而不是停留在E输入条件。如果要使用EL,则必须使用if语句。首先考虑熟悉循环和条件语句。@ LunalILAC考虑阅读;“如果用户输入不在范围内,它会再次请求用户输入”。甚至在编辑之前,这个问题就已经存在了。我猜while-else部分让你措手不及,很少使用(没错,关键字名称是误导性的)即使是经验丰富的Python开发人员,由于OP仍在学习,您猜他们正在尝试更常见的if-else-inside-for-loop。在实现while语句时,我是否应该总是先从“invalid”输入开始?感谢您的解释!是的,请阅读以下代码块“当它为真时,让我们继续这样做,当它不是真的时,继续使用else”。请记住,其他编程语言可能缺少while块的“else”部分,因此它可能会让非Python程序员(像我一样)一开始就感到困惑。如果使用return(正如您已经做过的)或break退出循环,else块也不会执行。