如何编写代码以在拆分前检查项目是否为负数?

时间:2019-03-24 21:38:07

标签: python python-3.x encryption

嘿,所以我有一个多字母密码,它的工作原理很好,但是我遇到了将所有输入都放在一行的问题。输入将是shift; secretWord;和消息。我需要找到一种方法来检查输入是否仅是一个负数,以及是否需要退出代码。我还需要找到一种方法来使我的代码不断循环直到满足否定条件。

alpha = ['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']

shiftChange = 0
secretWord = 0
da_message = 0
shiftChange = int(shiftChange)
inputs = []

shiftChange, secretWord, da_message = input('').split(";") 
da_message = da_message.lower()
inputs.append(shiftChange)
inputs.append(secretWord)
inputs.append(da_message)

secretWord = secretWord.lower()
secretWord = secretWord * len(da_message)

cypherText = ''
symbol = ' '
count = 0
for letter in da_message:
   if letter in alpha:
       shift = alpha.index(secretWord[count]) + int(shiftChange)
       letterIndex = alpha.index(letter) + 1
       cypherLetter = alpha[(letterIndex+shift)%26]
       cypherText = cypherText + cypherLetter
       count = count + 1
       print(cypherText.upper())

1 个答案:

答案 0 :(得分:0)

使用int()

int()会为所有非整数的整数引发ValueError。使用try-except循环捕获此错误,然后如果引发错误,则执行其余代码。 (因为它是一个字母数字),否则,如果小于0,则进行比较,如果为true,则退出。

下面是代码的修改版本,可以解决您的两个问题。 while True确保程序继续循环运行,直到找到负数,这又导致它退出整个程序。

alpha = ['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']

shiftChange = 0
secretWord = 0
da_message = 0
cypherText = ''
symbol = ' '
count = 0
shiftChange = int(shiftChange)
inputs = []

while True:
    shiftChange, secretWord, da_message = input('enter:').split(";")
    da_message = da_message.lower()
    inputs.append(shiftChange)
    inputs.append(secretWord)
    inputs.append(da_message)
    secretWord = secretWord.lower()
    secretWord = secretWord * len(da_message)
    for i in range(len(inputs)):
        try:
            temp = int(inputs[i])
        except ValueError:
            for letter in da_message:
               if letter in alpha:
                   shift = alpha.index(secretWord[count]) + int(shiftChange)
                   letterIndex = alpha.index(letter) + 1
                   cypherLetter = alpha[(letterIndex+shift)%26]
                   cypherText = cypherText + cypherLetter
                   count = count + 1
                   print(cypherText.upper())
        if temp < 0:
            exit()

希望这会有所帮助!