繁体   English   中英

如何在python中使字符串的每个字母成为变量

[英]How to make each letter of a string a variable in python

我正在尝试在python中制作编码器

这是到目前为止的代码。 它工作正常,但我想将字符串中的每个字母更改为相应的数字,例如:a = 1,b = 2。 因此,它最终将变成数字句子。 我的目标是拥有2个程序,一个用于编码,一个用于解码

print "Welcome to the encoder"
Letter1 = raw_input ("Please input the first letter of the word: ")
Letter2 = raw_input ("Please input the second letter of the word: ")
Letter3 = raw_input ("Please input the third letter of the word: ")
Letter4 = raw_input ("Please input the fourth letter of the word: ")
Letter5 = raw_input ("Please input the fifth letter of the word: ")
Letter6 = raw_input ("Please input the sixth letter of the word: ")
Letter7 = raw_input ("Please input the seventh letter of the word: ")
Letter8 = raw_input ("Please input the eighth letter of the word: ")
Letter9 = raw_input ("Please input the ninth letter of the word: ")
Letter10 = raw_input ("Please input the tenth letter of the word: ")
Letter11 = raw_input ("Please input the eleventh letter of the word: ")
Letter12 = raw_input ("Please input the twelvth letter of the word: ")
print "Your code is " + Letter3 + Letter2 + Letter1 + Letter6 + Letter5 
+ Letter4 + Letter9 + Letter8 + Letter7 + Letter12 + Letter11 + 
Letter10

如果您使用列表并将每个raw_input追加到列表中,则不会使用变量来存储每个字母,而是更简洁,更易于缩放。

print "Welcome to the encoder"
code_length = 12
code = []
for index in xrange(0, code_length):
    letter = raw_input  ("Please input letter " + str(index) + " of the word: ")
    ordinal = ord(letter) - 96
    code.append(str(ordinal))

print ' '.join(code)

您可以使用dict (字典)存储每个字母及其对应的数字。 如果您想将代码更改为字母序号以外的其他内容,这将非常灵活。

# define the dictionary
encoder = {"a":"1", "b":"2", "c":"3", "d":"4", "e":"5"}

# take your input
Letter1 = raw_input ("Please input the first letter of the word: ")
Letter2 = raw_input ("Please input the first letter of the word: ")
Letter3 = raw_input ("Please input the first letter of the word: ")

# print out the encoded version
print encoder[Letter1] + encoder[Letter2] + encoder[Letter3]

您可以在python中使用ord()方法并执行此操作。

word = raw_input()

print('Your code is\n')
for letter in word:
    print ord(letter)-96
Letter1,Letter2,Letter3,Letter4,Letter5,Letter6,Letter7,Letter8,Letter9,Letter10,Letter11,Letter12=[''],[''],[''],[''],[''],[''],[''],[''],[''],[''],[''],['']
def encoder():
  print "Welcome to the encoder"
  [Letter1.append(str(ord(c)-96)) for c in raw_input ("Please input the first letter of the word: ")]
  [Letter2.append(str(ord(c)-96)) for c in raw_input ("Please input the second letter of the word: ")]
  [Letter3.append(str(ord(c)-96)) for c in raw_input ("Please input the third letter of the word: ")]
  [Letter4.append(str(ord(c)-96)) for c in raw_input ("Please input the fourth letter of the word: ")]
  [Letter5.append(str(ord(c)-96)) for c in raw_input ("Please input the fifth letter of the word: ")]
  [Letter6.append(str(ord(c)-96)) for c in raw_input ("Please input the sixth letter of the word: ")]
  [Letter7.append(str(ord(c)-96)) for c in raw_input ("Please input the seventh letter of the word: ")]
  [Letter8.append(str(ord(c)-96)) for c in raw_input ("Please input the eighth letter of the word: ")]
  [Letter9.append(str(ord(c)-96)) for c in raw_input ("Please input the ninth letter of the word: ")]
  [Letter10.append(str(ord(c)-96)) for c in raw_input ("Please input the tenth letter of the word: ")]
  [Letter11.append(str(ord(c)-96)) for c in raw_input ("Please input the eleventh letter of the word: ")]
  [Letter12.append(str(ord(c)-96)) for c in raw_input ("Please input the twelvth letter of the word: ")]
  print "Your code is " + ''.join(Letter3) + ''.join(Letter2) + ''.join(Letter1) + ''.join(Letter6) + ''.join(Letter5) + ''.join(Letter4) + ''.join(Letter9) + ''.join(Letter8) + ''.join(Letter7) + ''.join(Letter12) + ''.join(Letter11) + ''.join(Letter10)

def decoder():
  Letter112 = [chr(int(c)+96) for c in Letter1[1:]]
  Letter21 = [chr(int(c)+96) for c in Letter2[1:]]
  Letter31 = [chr(int(c)+96) for c in Letter3[1:]]
  Letter41 = [chr(int(c)+96) for c in Letter4[1:]]
  Letter51 = [chr(int(c)+96) for c in Letter5[1:]]
  Letter61 = [chr(int(c)+96) for c in Letter6[1:]]
  Letter71 = [chr(int(c)+96) for c in Letter7[1:]]
  Letter81 = [chr(int(c)+96) for c in Letter8[1:]]
  Letter91 = [chr(int(c)+96) for c in Letter9[1:]]
  Letter101 = [chr(int(c)+96) for c in Letter10[1:]]
  Letter111 = [chr(int(c)+96) for c in Letter11[1:]]
  Letter121 = [chr(int(c)+96) for c in Letter12[1:]]
  print "Your code is " + ''.join(Letter31) + ''.join(Letter21) + ''.join(Letter112) + ''.join(Letter61) + ''.join(Letter51) + ''.join(Letter41) + ''.join(Letter91) + ''.join(Letter81) + ''.join(Letter71) + ''.join(Letter121) + ''.join(Letter111) + ''.join(Letter101)

encoder()
decoder()

输出:

Welcome to the encoder
Please input the first letter of the word:  asdf
Please input the second letter of the word:  b
Please input the third letter of the word:  g
Please input the fourth letter of the word:  r
Please input the fifth letter of the word:  d
Please input the sixth letter of the word:  w
Please input the seventh letter of the word:  r
Please input the eighth letter of the word:  c
Please input the ninth letter of the word:  g
Please input the tenth letter of the word:  d
Please input the eleventh letter of the word:  s
Please input the twelvth letter of the word:  c
Your code is 72119462341873183194
Your code is gbasdfwdrgcrcsd

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM