鱼C论坛

 找回密码
 立即注册
查看: 2568|回复: 5

[已解决]写一个摩尔斯代码的翻译器,但是和我想的执行不一样,求帮助

[复制链接]
发表于 2017-10-10 22:22:49 | 显示全部楼层 |阅读模式

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

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

x
想的是输入一个单词,就能够翻译成摩尔斯代码。但是现在的有几点:
1. 单字能够翻译,输出,但是单词的话提示未定义。我是想通过list函数将其变成列表。再输出。但是不知道为什么不成功
2. 不能根据设定条件跳出循环
3. 第一个支付输入无效

希望各位鱼油帮帮忙!

  1. #摩尔斯代码解译编译器

  2. a = A = '.-'
  3. b = B = '-...'
  4. c = C = '-.-.'
  5. d = D = '-..'
  6. e = E = '.'
  7. f = F = '..-.'
  8. g = G = '--.'
  9. h = H = '....'
  10. i = I = '..'
  11. j = J = '.---'
  12. k = K = '-.-'
  13. l = L = '.-..'
  14. m = M = '--'
  15. n = N = '-.'
  16. o = O = '---'
  17. p = P = '.--.'
  18. q = Q = '--.-'
  19. r = R = '.-.'
  20. s = S = '...'
  21. t = T = '-'
  22. u = U = '..-'
  23. v = V = '...-'
  24. w = W = '.--'
  25. x = X = '-..-'
  26. y = Y = '-.--'
  27. z = Z = '--..'

  28. while(True):
  29.     needtran = input('请输入待翻译的英文:')  #输入指令
  30.     if needtran == 'OVER' or 'over':    #终止程序指令
  31.         break
  32.     else:
  33.         needtran = list(needtran)  # 单词分割
  34.         print(needtran)            # 检验是否输入
  35.         for each in needtran:
  36.             needtran = eval(needtran)  
  37.             print(needtran)
  38.         
  39.    


  40.    
复制代码
最佳答案
2017-10-10 22:34:52
  1. #摩尔斯代码解译编译器

  2. a = A = '.-'
  3. b = B = '-...'
  4. c = C = '-.-.'
  5. d = D = '-..'
  6. e = E = '.'
  7. f = F = '..-.'
  8. g = G = '--.'
  9. h = H = '....'
  10. i = I = '..'
  11. j = J = '.---'
  12. k = K = '-.-'
  13. l = L = '.-..'
  14. m = M = '--'
  15. n = N = '-.'
  16. o = O = '---'
  17. p = P = '.--.'
  18. q = Q = '--.-'
  19. r = R = '.-.'
  20. s = S = '...'
  21. t = T = '-'
  22. u = U = '..-'
  23. v = V = '...-'
  24. w = W = '.--'
  25. x = X = '-..-'
  26. y = Y = '-.--'
  27. z = Z = '--..'

  28. while(True):
  29.     needtran = input('请输入待翻译的英文:')  #输入指令
  30.     if needtran.lower() == "over":
  31.         break
  32.     else:
  33.         for each in needtran:
  34.             temp = eval(each)  
  35.             print(temp)

  36.    


  37.    
复制代码
  1. 请输入待翻译的英文:apple
  2. .-
  3. .--.
  4. .--.
  5. .-..
  6. .
  7. 请输入待翻译的英文:
复制代码


源代码中有两处错误
一:needtran == 'OVER' or 'over',这句话是这样(needtran=='OVER')or'over'永远为真
二:needtran = eval(needtran)假设输入的是apple,那么eval(’apple‘),for循环并没有起到应尽的义务

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-10-10 22:34:52 | 显示全部楼层    本楼为最佳答案   
  1. #摩尔斯代码解译编译器

  2. a = A = '.-'
  3. b = B = '-...'
  4. c = C = '-.-.'
  5. d = D = '-..'
  6. e = E = '.'
  7. f = F = '..-.'
  8. g = G = '--.'
  9. h = H = '....'
  10. i = I = '..'
  11. j = J = '.---'
  12. k = K = '-.-'
  13. l = L = '.-..'
  14. m = M = '--'
  15. n = N = '-.'
  16. o = O = '---'
  17. p = P = '.--.'
  18. q = Q = '--.-'
  19. r = R = '.-.'
  20. s = S = '...'
  21. t = T = '-'
  22. u = U = '..-'
  23. v = V = '...-'
  24. w = W = '.--'
  25. x = X = '-..-'
  26. y = Y = '-.--'
  27. z = Z = '--..'

  28. while(True):
  29.     needtran = input('请输入待翻译的英文:')  #输入指令
  30.     if needtran.lower() == "over":
  31.         break
  32.     else:
  33.         for each in needtran:
  34.             temp = eval(each)  
  35.             print(temp)

  36.    


  37.    
复制代码
  1. 请输入待翻译的英文:apple
  2. .-
  3. .--.
  4. .--.
  5. .-..
  6. .
  7. 请输入待翻译的英文:
复制代码


源代码中有两处错误
一:needtran == 'OVER' or 'over',这句话是这样(needtran=='OVER')or'over'永远为真
二:needtran = eval(needtran)假设输入的是apple,那么eval(’apple‘),for循环并没有起到应尽的义务

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2017-10-10 22:46:35 | 显示全部楼层
Teagle 发表于 2017-10-10 22:34
源代码中有两处错误
一:needtran == 'OVER' or 'over',这句话是这样(needtran=='OVER')or'over' ...

谢谢可爱的鱼油
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-10 23:01:55 | 显示全部楼层
客气啦,在你的基础上我又加了一个解码的功能

  1. chose = int(input('please chose encode(0)/decode(1) : '))
  2. if not chose:
  3.     while True:
  4.         needtran = input('请输入待翻译的英文:')  #输入指令
  5.         if needtran.lower() == "quit":
  6.             break
  7.         else:
  8.             for each in needtran:
  9.                 temp = eval(each)  
  10.                 print(temp)
  11. else:
  12.     while True:
  13.         needtran = input('请输入要解码的密文:')
  14.         sep = input('请输入分割符:')
  15.         if needtran.lower() == 'quit':
  16.             break
  17.         else:
  18.             temp =  [eval(chr(i)) for i in range(ord('a'),ord('z')+1)]
  19.             for each in needtran.split(sep):
  20.                 print(chr(temp.index(each)+97),end=' ')
  21.             print('')
复制代码

QQ截图20171010230131.jpg
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-10 23:22:34 | 显示全部楼层
Teagle 发表于 2017-10-10 23:01
客气啦,在你的基础上我又加了一个解码的功能

我先保存啦。谢谢你哦。
这是我打算一步一步加进去的功能,正好你给了我参考头绪。谢谢哦
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-11 07:52:56 From FishC Mobile | 显示全部楼层
嘿嘿,打ctf的选手?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-3 00:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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