列出\u NAME[1]和“]”python

2024-09-26 17:49:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我对python3(以及一般的python)非常陌生,我决定尝试以我自己的方式制作一个cypher和decypher作为个人项目。cypher的工作原理是生成一个随机数并将字母的数值乘以它。它将所有这些相乘的值添加到一个列表中,然后在末尾添加随机数。你知道吗

假设清单是[1976,1995,19]。用户将复制并粘贴到输入中,然后按enter键

dlist = list(input('Text to be Decyphered:'))

然后,函数将获取列表中的最后一个值,并将该值赋给变量rnd。然后从列表中删除这个值。在此之后,它将其他值除以rnd。问题是

dlist[-1]

返回“]”

import string
import random
from random import randrange
def cypher():
    rinput = input('Write Text to be Cyphered: ')
    rnd = randrange(0, 100)
    rinput = rinput.lower()
    output = []
    for character in rinput:
        number = ord(character) * rnd
        output.append(number)
    output.append(rnd)
    print(output)
def decypher():
    dlist = list(input('Text to be Decyphered:'))
    rnd = dlist[-2]
    rnd = int(rnd)
    dlist.pop()
    a = 1
    out = ""
    for number in dlist:
        vlc = int(dlist[a])
        vnum = vlc/rnd
        valf = chr(vnum)
        out + valf
        a=a+1
    print(out)

我认为程序将列表视为字符串,因为它来自input()代码。你知道吗


Tags: totextimportnumber列表inputoutputbe
3条回答

在您的输入上尝试json:

import json
data = json.loads(the_string)

您的代码有一些问题:

  1. randrange(0,100)->;如果您得到0,那么您的结果将全部为0,并且不起作用
  2. 字符是整数,乘法和除法你不会总是得到一个整数回来,所以你需要处理舍入
  3. 您对cypher的输入是一个字符串,而decypher的输入是一个列表,因此您需要以您可以解析它的方式将列表转换回字符串。也许可以去掉“[”和“]”来分割字符串

要将字符串转换为列表,可以使用

valToDecode = "[464, 404, 460, 464, 4]"
cleanedVal = valToDecode.strip("][").split(","))

使用list函数时,它会将字符串转换为['[', '1', '9', '7', '6', ',', ' ', '1', '9', '9', '5', ',', ' ', '1', '9', ']']

改用:

dlist = eval(input('Text to be Decyphered:'))

eval函数将其转换为实际列表。您可以交叉核对:

>>>print(type(eval('[1976, 1995, 19]')))
<class 'list'>
>>>print(eval('[1976, 1995, 19]'))
[1976, 1995, 19]
>>>for i in eval('[1976, 1995, 19]')
       print(i)
1976
1995
19

相关问题 更多 >

    热门问题