我想编写一个更简单的密码程序,该程序可以将数字转换为字母。因此,用户提供数字作为输入,程序将其解码,这就是您读取机密消息的方式。问题是要能够遍历数字,我需要可变类型的字符串,而要(由于ASCII代码而加95)我需要类型int。
我尝试将输入作为字符串,我尝试将其转换为int。我什至尝试将其在for循环中转换为int,但仍然收到错误,要么它必须是字符串,要么该变量需要转换为int。
a = int(input("Enter a number: "))
for numbers in a:
number = chr(numbers) + 95
print (number)
答案 0 :(得分:3)
您的问题似乎是您需要在不同的数据类型之间进行来回转换:字符串,字符串列表和整数列表。
您的问题可能对他人没有多大帮助,但是我希望这个答案至少可以对您有所帮助:)我将我的回答从注释中分解为更短的步骤。每个步骤都有一个示例,说明您最后要处理什么类型的数据。
# Read a string like "8 5 12 12 15"
encoded = input("Enter some numbers, separated by spaces: ")
# Turn the string into a list of shorter strings.
# For example: ["8", "5", "12", "12", "15"]
# you should handle input errors here, too
encoded_list = encoded.split(' ')
# Conver the list of strings to a list of integers
# For example: [8, 5, 12, 12, 15]
encoded_numbers = [int(character) for character in encoded_list]
# Decode the numbers and turn them back into strings using chr()
# For example: ["h", "e", "l", "l", "o"]
character_list = [chr(number + 96) for number in encoded_numbers]
# Finally, turn the list of characters into a single string using
# join, then print it
print("Decoded message:")
print("".join(character_list))
我强烈建议您使用交互式外壳程序(只需运行python
-甚至最好安装ipython
即可)。检查函数返回哪种类型的数据并以这种方式进行试验更容易。
答案 1 :(得分:2)
现在,您尝试获取字符串并将其转换为第一个字符串中的整数,然后尝试将该整数放入for循环中。
我不太了解您从这段代码中想要什么,但是如果您想在ascii ang中键入一些字符,请使用以下字符:
a = input('Enter a number: ')
char = chr(int(a) + 96)
print('Decoded char: ' + char)
答案 2 :(得分:1)
您需要迭代range
个数字,也许是26个?。
然后,您必须添加97
的ASCII值a
for number in range(26):
char = f'{chr(number + 97)}'
print (char, end=' ')
a b c d e f g h i j k l m n o p q r s t u v w x y z
从那时起,您可以轻松地在ASCII代码和字母表示形式之间导航;添加偏移模26将为您提供一个凯撒密码。
反向操作(从字母到ASCII码,到原始(0-26)数字如下:
ord(char) - 97