0412zc 发表于 2022-5-1 22:41:50

关于循环for - if的问题

本帖最后由 0412zc 于 2022-5-1 22:43 编辑

用for if 循环做一个图书查询功能

用户输入查询信息message,与books比较,找到结果,打印(可以忽略return i , 一个备用参数)。找不到结果,返回-1。

现在的结果是,如果books中有2条以上符合条件的信息,只能找出来一条,而且这一条信息打印2次。

请各位大神帮我找找,哪里出了问题,谢谢。



风车呼呼呼 发表于 2022-5-1 23:15:57

你for的判断条件i<k,k在函数里没定义,这是个全局变量?初始化过没有?
在if里面加一条打印i的值看看,同样的信息打印两次,要么i没有变过,要么存的图书信息有什么问题。而且也不知道你是怎么调用这个函数的,只能你自己调试

930552489 发表于 2022-5-1 23:34:23

1、你的search函数在搜索到有效数据时就会return(退出函数),也就是说你的设计就是每次search被调用只要找到一个匹配的就退出了;
2、至于结果有两次打印,猜测是由于你的search被调用了两次;而且两次调用都是从0开始搜索的,所以得到的结果也是一样的;
具体你需要在检查一下你的函数调用是否是这样的。

0412zc 发表于 2022-5-2 00:30:50

930552489 发表于 2022-5-1 23:34
1、你的search函数在搜索到有效数据时就会return(退出函数),也就是说你的设计就是每次search被调用只要 ...

我也试着把return放到for外面,报错。我现在也知道放外面是对的,现在就从这开始改。之前也打印了i信息,第一次打印,循环内i=5, 循环外i=5. 第二次打印,循环内i=5, 循环外i=6。

谢谢

0412zc 发表于 2022-5-2 00:32:38

风车呼呼呼 发表于 2022-5-1 23:15
你for的判断条件i

k是全局变量,已经预加载了5本书,所以k=5, k是没问题的。

之前也打印了i信息,第一次打印,循环内i=5, 循环外i=5. 第二次打印,循环内i=5, 循环外i=6。

我现在已经把return放到循环外面了,在这个基础上再改。

谢谢

风车呼呼呼 发表于 2022-5-2 13:20:22

1.不知道books里面的内容,不了解两条符合条件的信息的位置关系
2.不知道你调用这函数的过程
3.不懂你各种修改是怎么改的,把return i放到循环外面,岂不是有两个return了;打印i的信息,循环内还能理解,循环外是怎么能打印两次的,那不是说明你调用这函数就不止一次;k=5,两次打印的时候循环内i=5,你循环终止条件都是i<k,这根本不可能啊

单独这一段代码貌似看不出什么问题,基于以上种种信息的缺乏,只能提供可能的验证方向,具体的你不提供详细就只能靠自己发现了

小凯2013 发表于 2022-5-7 18:46:51

你这是Python2吧???

苹果树上无苹果 发表于 2022-5-7 22:50:53

連code也不給全,一看就調用不只一次,神仙也難救你
页: [1]
查看完整版本: 关于循环for - if的问题