请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 6968|回复: 5

求教,已知文件和多个列表,逐行判断每个字符属于那个...

[复制链接]

1

主题

0

好友

13

积分

新手上路

Rank: 1

发表于 2017-7-1 12:59:02 |显示全部楼层
本帖最后由 刘伶闯天台 于 2017-7-1 13:01 编辑

需求:
1.0-9 10个字符以及26个英文字母,一共36个字符,将36个字符每3个一组,分成12个组,例如:
  1. 1:0 1 2
  2. 2:3 4 5
  3. 3:6 7 8
  4. 4:9 a b
  5. 5:c d e
  6. 6:f g h
  7. 7:i j k
  8. ……
复制代码
2.有一个文件,需要判断该文件的每一行的每个字符属于36个字符的哪一个分组?文件示例:
  1. 124586
  2. b15894d
  3. tbg1re78z
  4. po0mnb
  5. ……
复制代码
字母不区分大小写,假定全部为小写,需要得到如下结果:
  1. 124586:112233
  2. b15894d:4123425
复制代码
请教大家这个应该怎么写?先谢谢大家。
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2017-7-1 17:54:10 |显示全部楼层
了解一下 列表和字符串 相关的操作(课程里有这几课的),以及 in 关键字的用法

建一个二维列表即可,判断字符属于哪个列表里

配合上字典来写也可以
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

1

主题

0

好友

13

积分

新手上路

Rank: 1

发表于 2017-7-3 14:39:54 |显示全部楼层
本帖最后由 刘伶闯天台 于 2017-7-3 14:43 编辑
crossin先生 发表于 2017-7-1 17:54
了解一下 列表和字符串 相关的操作(课程里有这几课的),以及 in 关键字的用法

建一个二维列表即可,判断 ...

多谢crossin先生指教。
思考了一下,把这个功能实现了,贴上代码,大神们帮忙看有需要注意的地方吗?
执行结果:
py.png
  1. #!/usr/bin/python
  2. # -*- coding:UTF-8 -*-
  3. #coding:utf-8
  4. #author:刘伶闯天台
  5. #date:20170703
  6. #Description:36个字符每3个分一组,获取输入字符串每个字符所在分组。(以列表索引号为分组编号)
  7. a=[('0','1','2'),
  8. ('3','4','5'),
  9. ('6','7','8'),
  10. ('9','a','b'),
  11. ('c','d','e'),
  12. ('f','g','h'),
  13. ('i','j','k'),
  14. ('l','m','n'),
  15. ('o','p','q'),
  16. ('r','s','t'),
  17. ('u','v','w'),
  18. ('x','y','z')
  19. ]

  20. c=raw_input("Please enter a string:")
  21. b=''
  22. for i in c: #遍历字符串
  23.     for x in a: #遍历列表a
  24.         #print x
  25.         if i in x:#判断字符是否在列表a的元素中包含,如果在该元素中包含,记录该元素的索引号
  26.             b=b+str(a.index(x))
  27. c=c+':'+b #拼接字符串
  28. print b
  29. print c
复制代码
回复

使用道具 举报

1

主题

0

好友

13

积分

新手上路

Rank: 1

发表于 2017-7-3 15:32:53 |显示全部楼层
使用字典解决方法:
  1. #!/usr/bin/python
  2. # -*- coding:UTF-8 -*-
  3. #coding:utf-8
  4. #author:刘伶闯天台
  5. #date:20170703
  6. #Description:36个字符每3个分一组,获取输入字符串每个字符所在分组。(以字典的键为分组编号)
  7. a={
  8. 'A':('0','1','2'),
  9. 'B':('3','4','5'),
  10. 'C':('6','7','8'),
  11. 'D':('9','a','b'),
  12. 'E':('c','d','e'),
  13. 'F':('f','g','h'),
  14. 'G':('i','j','k'),
  15. 'H':('l','m','n'),
  16. 'I':('o','p','q'),
  17. 'J':('r','s','t'),
  18. 'K':('u','v','w'),
  19. 'L':('x','y','z')
  20. }



  21. c=raw_input("Please enter a string:")
  22. b=''
  23. for i in c: #遍历字符串
  24.     for x in a.keys(): #遍历字典a的key(键)
  25.         #print x
  26.         if i in a[x]:#判断字符是否在字典a[x]的value中包含,如果在该值中包含,记录该key
  27.         #    print a[x]
  28.             b=b+x
  29. c=c+':'+b #拼接字符串


  30. print b
  31. print c
复制代码
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2017-7-3 19:59:36 |显示全部楼层
刘伶闯天台 发表于 2017-7-3 15:32
使用字典解决方法:

可以的。
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

1

主题

0

好友

13

积分

新手上路

Rank: 1

发表于 2017-7-3 20:11:21 |显示全部楼层
crossin先生 发表于 2017-7-3 19:59
可以的。

多谢指点。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-3-29 14:03 , Processed in 0.024777 second(s), 25 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部