python字符转换器

        简介:用户输入字符串和序号,字符转换器将字符串中的每个字符在字典中的位置后移若干位(序号),拼成新的字符串。

        举例:用户输入字符串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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值