2017-05-05 135 views
-1

我写了一个我正在写程序的脚本,因为我改变了职业生涯,但遇到了很多问题。假设取一个字符串并用一个密钥加密它。因为我是编程新手,所以不知道从哪里开始解决问题,所以来这里寻求帮助。也许如果你能指出我的写作方向从哪里开始?Python脚本不能正常工作

这是我得到的错误,但看起来不错。

$ python temp.py -p "ThisIsATestOfMyCode" -k "testtest" 
    File "encrypt.py", line 37 
    else: 
    ^

这是我的代码。

#!/usr/bin/env python 
import sys, argparse 

def encrypt(varAble1, varAble2): 
    varAble1_size = len(varAble1)/float(len(varAble2)) 
    if str(varAble1_size).split(".")[1] == "0": 
    else: 
     while str(varAble1_size).split(".")[1] != "0": 
      varAble1 +== "@" 
      varAble1_size = len(varAble1)/float(len(varAble2)) 
    code = [] 
    varAble1 = list(varAble1) 
    varAble2 = list(varAble2)) 
    multiply_size = int(str((varAble1_size)).spliy(".")[0]) * 8 
    while varAble1 != []: 
     p_varAble1 = varAble1[0:8] 
     p_varAble2 = varAble2[0:8] 
     temp_list = [] 
     for i in xrange(0,8): 
      if type(p_varAble2[i]) == type(int): 
       new_ct = (ord(chr(p_varAble2[i]))^ord(p_varAble1[0])) 
      else: 
      new_ct = (ord(p_varAble2[i])^ord(p_varAble1[0])) 
      code.append(new_ct) 
      temp_list.append(new_ct) 
      varAble1.pop(0) 
      p_varAble1.pop(0) 
      varAble2 = temp_list 
     varAble2.reverse() 
    code.reverse() 
    varAble1 = code.reverse() 
    code_text = [] 
    for i in code: 
     hex_value = hex(i) 
     if len(hex_value) != 4: 
      code_text.append("0" + hex(i)[2:]) 
     else: 
      code_text.append(hex(i)[2:]) 
      varAble2 += i 
    code_text = "".join(code_text).upper() 
    return code_text 

def main(): 
    parser = argparse.ArgumentParser(description="Encrypt things") 
    parser.add_argument("-p", "--var1",help="String to enc",metavar='<pt>', required=True) 
    parser.add_argument("-k", "--var2", help="8 length key to encrypt with", metavar='<key>', required=True) 
    args = parser.parse_args() 
    var1 = args.var1 
    var2 = args.var2 
    hash = encrypt(var1, var2) 
    print "[+] Encrypted using %s [+]\n%s" % (var2, hash) 

if __name__ == "__main__": 
    main() 
+2

以及Andrew的回答您的行在“new_ct”else之后没有正确缩进。这可能是你的代码有一些使用空格缩进的行,有些使用制表符。 –

+2

这个程序有些奇怪。它似乎不是由Python新手编写的。另一方面,它有初学者的错误。如果你想学习Python,从简单的程序开始,而不是复制代码。小步骤。这可以更容易地发现你的错误。 –

+0

欢迎来到SO!在发布任何问题之前,请阅读本文[如何操作](http://stackoverflow.com/help/how-to-ask)。 – thewaywewere

回答

2

if str(varAble1_size).split(".")[1] == "0":块是空的,所以你需要在它后面添加一个pass声明。 Keef Baker在发现第37行的else:块没有正确缩进时也是正确的。

+0

啊!谢谢你们俩! – babytoby

2

你必须else后缩进代码:

else: 
    new_ct = (ord(p_varAble2[i])^ord(p_varAble1[0])) 

正如安德鲁Kulpa指出,后

if str(varAble1_size).split(".")[1] == "0": 

块是空的,所以你要么需要做的事情在该块,或添加pass声明。

Python不使用括号,而是使用缩进控制流。 在您的代码中,Python解释器会看到一个其他的,但没有声明,所以会引发错误。 在此处查看更多关于控制流程的信息:https://docs.python.org/3/tutorial/controlflow.html