【问题标题】:TypeError: string indices must be integers inpythonTypeError:字符串索引在python中必须是整数
【发布时间】:2020-03-13 17:55:41
【问题描述】:

这是我的代码:

import time

ed = input('Encrypt (e) or decrypt (d)? ')

chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ "
charsLen = len(chars)

def numberToStr(num):
    s = ""
    while num:
        s = chars[num % charsLen] + s
        num //= charsLen

    return(s)
def strToNumber(numStr):
    num = 0
    for i, c in enumerate(reversed(numStr)):
        num += chars.index(c) * (charsLen ** i)

    return(num)

def enc():
    key = input('What is your key? (Alphanumeric and space) ')
    ID = int(input('What is your ID? (0-9, 3+ digits) '))
    inp = int(strToNumber(input('What do you want to encrypt? ')))
    keyAsNum = int(strToNumber(key))
    enc.asint = inp ** 2
    enc.asint = enc.asint * ID
    enc.asint = enc.asint - keyAsNum
    enc.astext = numberToStr(int(enc.asint))
    return(enc)


def dec():
    key = input('What is your key? (Alphanumeric and space) ')
    ID = int(input('What is your ID? (0-9, 3+ digits) '))
    inp = int(strToNumber(input('What do you want to decrypt? ')))
    keyAsNum = int(strToNumber(key))
    message = inp + keyAsNum
    message = message // ID
    message = math.sqrt(message)
    message = numberToStr(message)
    return(message)

if ed=='e':
    crypt = enc()
    print('crypt.asint:\n' + str(crypt.asint) + '\ncrypt.astext:\n' + crypt.astext)
elif ed=='d':
    crypt = dec()
    print(crypt)

time.sleep(10)

这是错误: 文件“stdin”,第 5 行,在模块中

文件“stdin”,第 9 行,在 dec 中

文件“stdin”,第 4 行,在 numberToStr 中

TypeError:字符串索引必须是整数

我不知道为什么它会抛出这个错误并且在谷歌上找不到任何东西。

【问题讨论】:

  • 即使,无论出于何种原因,该问题根本没有出现,但仍有一页又一页的相关信息。您没有找到任何这些信息吗?

标签: python encryption


【解决方案1】:

回溯可以准确地告诉您出了什么问题。你在做

s = chars[num % charsLen] + s

但您不确定 num 是否为 int,因为之前您确实知道:

message = math.sqrt(message)
message = numberToStr(message)

math.sqrt 返回什么类型?

【讨论】:

    猜你喜欢
    • 2016-03-26
    • 2016-02-17
    • 2023-03-03
    • 1970-01-01
    • 2022-11-02
    • 2019-04-26
    • 2020-08-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多