鱼C论坛

 找回密码
 立即注册
查看: 3204|回复: 11

python 使用遍历出了个问题

[复制链接]
发表于 2013-12-3 00:33:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
初学python在做文件内容查找时使用for遍历文件内容,最后打印出来的结果有一个小尾巴。
  1. import sys
  2. sys.path.append('C:/Users/sunshineyilan/Desktop/study')
  3. file1 = open('demo_file.txt','w')
  4. file1.writelines(' num:1 sex:male phone:1111 \n num:2 sex:female phone:2222 \n num:3 sex=male phone:3333 \n')
  5. file1.close()
  6. file1 = open('demo_file.txt','r')
  7. readfile = file1.readlines()
  8. while True:
  9.     guest_input = input('enter the keywords you want to search for:').strip()
  10.     if len(guest_input) == 0:
  11.         print('please enter the keywords what you want to search:')
  12.         continue
  13.     else:
  14.         for line in readfile:
  15.             if guest_input in line:
  16.                 print(line)
  17.                 file1.close()
  18.             else:
  19.                 print("have no data.")
复制代码
附件中有一个错误的截图。

QQ截图20131203003235.png

最后想做到的样子:输入1 或者2 3的时候不会显示have no data,输入num的时候会显示所有带有num字符的行

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-12-3 00:35:12 | 显示全部楼层
  1. sys.path.append('C:/Users/sunshineyilan/Desktop/study')
复制代码
这一句代码是因为我没有在linux环境中所以他找不到我的py文件,我就改了下python的路径。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-12-3 08:58:30 | 显示全部楼层
python3.2?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-3 09:00:41 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-12-3 09:05:23 | 显示全部楼层
逻辑错误,你可以设置一个标志found,在循环里面查找,如果找到了,就打印并设置found=1。最后在循环外面判断found的值,确定找没找到。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-12-3 09:28:29 | 显示全部楼层

。。。这个不是重点。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-3 10:52:41 | 显示全部楼层
liufei_vip 发表于 2013-12-3 09:05
逻辑错误,你可以设置一个标志found,在循环里面查找,如果找到了,就打印并设置found=1。最后在循环外面判 ...

可以这么做,但是打印出来的结果就只有1条了。
  1. found = 1
  2. while True:
  3.     guest_input = input('enter the keywords you want to search for:').strip()
  4.     if len(guest_input) == 0:
  5.         print('please enter the keywords what you want to search:')
  6.         continue
  7.     else:
  8.         for line in readfile:
  9.             if guest_input in line:
  10.                 found = 0
  11.     if found == 0:
  12.         while True:
  13.             print(line)
  14.             file1.close()
  15.             break        
  16.     else:
  17.         print("have no data")
  18.             
  19.             
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-12-3 14:02:29 | 显示全部楼层
我用的2.7,前面的输入输出改了一些就没复制,后面的大体是这样。。。
PS:主要是逻辑。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-3 17:46:25 | 显示全部楼层
liufei_vip 发表于 2013-12-3 14:02
我用的2.7,前面的输入输出改了一些就没复制,后面的大体是这样。。。
PS:主要是逻辑。。。

恩,是的,我个人感觉是在for循环的时候出问题的,应该是他找到匹配数据后还会继续往下面查找,等没找到的时候就break掉了,但是这时候就会出现那个小尾巴了。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-4 20:22:28 | 显示全部楼层
有人帮忙么。实在是没办法了。。。:dizzy:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-12-10 17:21:27 | 显示全部楼层
逻辑存在漏洞,给你补了,
  1. #coding:utf-8

  2. import sys
  3. sys.path.append('C:/Users/sunshineyilan/Desktop/study')
  4. file1 = open('demo_file.txt','w')
  5. file1.writelines(' num:1 sex:male phone:1111 \n num:2 sex:female phone:2222 \n num:3 sex=male phone:3333 \n')
  6. file1.close()
  7. file1 = open('demo_file.txt','r')
  8. readfile = file1.readlines()
  9. while True:
  10.     guest_input = input('enter the keywords you want to search for:').strip()
  11.     if len(guest_input) == 0:
  12.         print('please enter the keywords what you want to search:')
  13.     else:
  14.         flag = []
  15.         for line in readfile:
  16.             if guest_input in line:
  17.                 print(line)
  18.                 flag.append(1)
  19.             else:
  20.                 flag.append(0)
  21.         for each in flag:
  22.             if each == 1:
  23.                 flag = 1
  24.                 break
  25.         if flag == 0:
  26.             print("have no data.")
  27.             
  28. file1.close()
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-1 11:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表