简介:用户输入字符串和序号,字符转换器将字符串中的每个字符在字典中的位置后移若干位(序号),拼成新的字符串。
举例:用户输入字符串abc123和序号2,则生成cde345,输入xyz789和3,则生成abc012。
用户输入的字符串可根据需要包含大写字母、小写字母、数字,后续也可添加符号。
import lists
isInputPassed = False #用户输入的字符串是否合法标记
userInput = input('input a word\n')
indexInput = int(input('input an index\n')) #输入新的序号
listNewStr = [] #新生成的字符会保存在此list中
strNew = '' #后面将新生成的字符拼接成字符串
while not isInputPassed: #此步骤用来检测用户输入的字符串是否合法,遍历用户输入的每个字符,若符合小写字母、大写字母、数字,则进行下一步,否则重新输入
numLetterPassed = 0 #合法字符的数量,若等于用户输入字符串的长度,则合法
for letter in userInput:
if letter in lists.list_letters_lower or letter in lists.list_letters_upper or letter in lists.list_numbers:
numLetterPassed += 1
if numLetterPassed == len(userInput):
print('input all passed, continue')
isInputPassed = True
else:
userInput = input('input again\n')
def generateCode(letter, index, list): #定义序号的变化规则
global listNewStr
oldIndex = list.index(letter) #获取字符在list中的序号
newIndex = oldIndex + index #生成新的序号
if newIndex > len(list) - 1: #若新的序号超出list范围,则新序号从0开始计算
newIndex -= len(list)
listNewStr += list[newIndex] #将新的字符加入新的list
for letter in userInput: #遍历用户输入的字符串
if letter in lists.list_letters_lower:
generateCode(letter, indexInput, lists.list_letters_lower)
if letter in lists.list_letters_upper:
generateCode(letter, indexInput, lists.list_letters_upper)
if letter in lists.list_numbers:
generateCode(letter, indexInput, lists.list_numbers)
for str in listNewStr:
strNew += str
print(strNew)
lists是自建的py文件,包含一些常用的列表,使用时导入即可,也可根据实际需要添加常用的类别,以下为lists.py:
list_letters_lower = ['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']
list_letters_upper = ['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']
list_numbers = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
list_colors = ['red', 'orange', 'yellow', 'green', 'cyan', 'blue', 'purple', 'white', 'black', 'pink']
下面加入了对空格的支持,可以输入带有空格的语句了
import lists
isInputPassed = False # 用户输入的字符串是否合法标记
userInput = input('input a word\n')
listNewStr = [] # 新生成的字符会保存在此list中
strNew = '' # 后面将新生成的字符拼接成字符串
while not isInputPassed: # 此步骤用来检测用户输入的字符串是否合法,遍历用户输入的每个字符,若符合小写字母、大写字母、数字,则进行下一步,否则重新输入。若去掉此步骤,则含有标点的语句也可以
numLetterPassed = 0 # 合法字符的数量,若等于用户输入字符串的长度,则合法
for letter in userInput:
if letter in lists.list_letters_lower or letter in lists.list_letters_upper or letter in lists.list_numbers or letter == " ":
numLetterPassed += 1
if numLetterPassed == len(userInput):
print('input all passed, continue')
isInputPassed = True
else:
userInput = input('input again\n')
indexInput = int(input('input an index\n')) # 输入新的序号
def generateCode(letter, index, list): # 定义序号的变化规则
global listNewStr
oldIndex = list.index(letter) # 获取字符在list中的序号
newIndex = oldIndex + index # 生成新的序号
if newIndex > len(list) - 1: # 若新的序号超出list范围,则新序号从0开始计算
newIndex -= len(list)
listNewStr += list[newIndex] # 将新的字符加入新的list
for letter in userInput: # 遍历用户输入的字符串
if letter in lists.list_letters_lower:
generateCode(letter, indexInput, lists.list_letters_lower)
if letter in lists.list_letters_upper:
generateCode(letter, indexInput, lists.list_letters_upper)
if letter in lists.list_numbers:
generateCode(letter, indexInput, lists.list_numbers)
if letter == " ":
listNewStr += " "
for str in listNewStr:
strNew += str
print(strNew)
以下是添加了对序号为负数的支持,在第26行
import lists
isInputPassed = False # 用户输入的字符串是否合法标记
userInput = input('input a word\n')
listNewStr = [] # 新生成的字符会保存在此list中
strNew = '' # 后面将新生成的字符拼接成字符串
while not isInputPassed: # 此步骤用来检测用户输入的字符串是否合法,遍历用户输入的每个字符,若符合小写字母、大写字母、数字,则进行下一步,否则重新输入
numLetterPassed = 0 # 合法字符的数量,若等于用户输入字符串的长度,则合法
for letter in userInput:
if letter in lists.list_letters_lower or letter in lists.list_letters_upper or letter in lists.list_numbers or letter == " ":
numLetterPassed += 1
if numLetterPassed == len(userInput):
print('input all passed, continue')
isInputPassed = True
else:
userInput = input('input again\n')
indexInput = int(input('input an index\n')) # 输入新的序号
def generateCode(letter, index, list): # 定义序号的变化规则
global listNewStr
oldIndex = list.index(letter) # 获取字符在list中的序号
newIndex = oldIndex + index # 生成新的序号
if newIndex > len(list) - 1: # 若新的序号超出list范围,则新序号从0开始计算
newIndex -= len(list)
if newIndex < 0: #若序号为负数
newIndex += len(list)
listNewStr += list[newIndex] # 将新的字符加入新的list
for letter in userInput: # 遍历用户输入的字符串
if letter in lists.list_letters_lower:
generateCode(letter, indexInput, lists.list_letters_lower)
if letter in lists.list_letters_upper:
generateCode(letter, indexInput, lists.list_letters_upper)
if letter in lists.list_numbers:
generateCode(letter, indexInput, lists.list_numbers)
if letter == " ":
listNewStr += " "
for str in listNewStr:
strNew += str
print(strNew)