Python 在for循环和if循环中,在循环外打印非字符串列表
我把这个列表Python 在for循环和if循环中,在循环外打印非字符串列表,python,loops,Python,Loops,我把这个列表bravo_uncode_message=[(0000000),(0000001),(0000010),(0000011),…]放在for循环中的if语句中,我无法从这3个循环中得到它,我试过这个命令bravo_uncode_message.extend和bravo_uncode_message.append,但似乎都不起作用 import binascii response=raw_input("Decrypt a message or encrypt a message? D/E
bravo_uncode_message=[(0000000),(0000001),(0000010),(0000011),…]
放在for循环中的if语句中,我无法从这3个循环中得到它,我试过这个命令bravo_uncode_message.extend
和bravo_uncode_message.append
,但似乎都不起作用
import binascii
response=raw_input("Decrypt a message or encrypt a message? D/E : ")
if response== "E":
message_to_encrypt=raw_input("Introduce message to encrypt: ")
key= raw_input("Insert key:")
abc=['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']
if any(word in key for word in abc):
print 'Not a valid key...'
elif len(key)!= 7:
print 'Invalid key'
else:
key=key*len(message_to_encrypt)
binary_message = bin(int(binascii.hexlify(message_to_encrypt), 16))
print binary_message
binary_message= list(binary_message)
del binary_message[0]
print binary_message
del binary_message[0]
recovery_number = binary_message[0]
print binary_message
del binary_message[8 - 1::8]
print binary_message
binary_message = ''.join(map(str,binary_message))
print binary_message
print key
a = binary_message
b = key
xored_message= int(a,2) ^ int(b,2)
print bin(xored_message)[2:].zfill(len(a))
print message_to_encrypt
elif response== "D":
encrypted_message = raw_input("Introduce message to decrypt: ")
beta_uncode_message = [tuple(map(int, format(i, '07b'))) for i in range(128)]
g=len(encrypted_message)/7
n=0
for i in beta_uncode_message:
n=n+1
if n<129:
alpha_uncode_message=beta_uncode_message[n-1]*g
x=tuple(map(str,alpha_uncode_message))
alpha_uncode_message=x
a=encrypted_message
b=alpha_uncode_message
b=''.join(map(str,b))
charlie_uncode_message = int(a, 2) ^ int(b, 2)
bravo_uncode_message=bin(charlie_uncode_message)[2:].zfill(len(a))
new_list = []
q = 7
for start_index in range(0, len(bravo_uncode_message),q):
new_list.extend(bravo_uncode_message[start_index:start_index + q])
new_list.append('0')
bravo_uncode_message[:-1]
bravo_uncode_message = ''.join(map(str, bravo_uncode_message))
binary_axis = '0b'
bravo_uncode_message = binary_axis + bravo_uncode_message
bravo_uncode_message.extend(bravo_uncode_message)
k = int(bravo_uncode_message, 2)
uncode_message = binascii.unhexlify('%x' % k)
print uncode_message
if n>129:
break
else:
break
print bravo_uncode_message
导入binascii
响应=原始输入(“解密消息或加密消息?D/E:”)
如果响应==“E”:
message\u to\u encrypt=原始输入(“引入要加密的消息:”)
键=原始输入(“插入键:”)
abc=['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']
如有(abc中的关键字对应单词):
打印“不是有效的密钥…”
艾利夫·伦(钥匙)!=7:
打印“无效密钥”
其他:
key=key*len(消息加密)
binary_message=bin(int(binascii.hexlify(message_to_encrypt),16))
打印二进制消息
二进制消息=列表(二进制消息)
del二进制_消息[0]
打印二进制消息
del二进制_消息[0]
恢复\u编号=二进制\u消息[0]
打印二进制消息
delbinary_消息[8-1::8]
打印二进制消息
二进制消息=''.join(映射(str,二进制消息))
打印二进制消息
打印键
a=二进制消息
b=键
xored_message=int(a,2)^int(b,2)
打印箱(xored_消息)[2:].zfill(len(a))
将邮件\u打印到\u加密
elif响应==“D”:
加密消息=原始输入(“引入要解密的消息:”)
beta_uncode_message=[范围(128)内i的元组(map(int,format(i,'07b')))
g=len(加密消息)/7
n=0
对于beta_uncode_消息中的i:
n=n+1
如果n129:
打破
其他:
打破
打印bravo_uncode_信息
我得到的错误是
AttributeError:“str”对象没有属性“extend”
您重新定义了bravo\u uncode\u message
类型,从list
到str
,然后对其调用了extend()
extend()
是用于list
的方法,而不是用于str
bravo_uncode_message = ''.join(map(str, bravo_uncode_message))
binary_axis = '0b'
bravo_uncode_message = binary_axis + bravo_uncode_message
bravo_uncode_message.extend(bravo_uncode_message)
此外,您还将b
类型从tuple
重新定义为str
,这在将来可能会有问题
b=alpha_uncode_message
b=''.join(map(str,b))
希望这有帮助。欢迎来到StackOverflow。您的if语句没有任何条件?你没有因此而得到一个错误吗?它有,但我不认为写它是必要的。请发布完整的代码示例。否则代码将无法编译。如果nAnd是
,那么什么是beta\u beta\u uncode\u消息
?是的,但是我如何才能得到bravo\u uncode\u消息?这就是我试过的方法对不起,我不明白你说的“出去”是什么意思bravo_uncode_message
是一个str
而不是一个循环。在循环之外,我可以打印存储在bravo_uncode_message中的数据请允许我解释,我在使用bravo_uncode_message[:-1]时遇到问题
当我运行代码时,该操作删除了最后一个字符,但也删除了一半的数据,因此我认为如果设法提取列表bravo_uncode_消息,循环将不会与此操作干涉bravo_uncode_消息[:-1]
我在代码中没有看到bravo_uncode_消息[:-1]
。它应该返回没有最后一个字符的bravo_uncode_消息。我不确定我是否明白你所说的“删除一半数据”的意思。您是否也在谈论范围(0,len(bravo\u uncode\u消息),q)中开始索引的循环:
?如果你能给我举个例子会很有帮助的。