Python仿射密码子

2024-09-26 18:01:45 发布

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

def afin(day,month,text):

    for i in range(len(text)):
        ascii = text[i] - 96
        y = (day * ascii) + month;
        while(y > 26):
            y -= 26

    sifrelenmiş_harf = y + 96
    sifrelimesaj += sifrelenmiş_harf



text = input("Enter Text:")
day = input("Birth Day:")
month = input("Birth Month:")
print(afin(day,month,text))

但是,每当我运行此脚本时,它都会出现以下错误:

    ascii = text[i] - 96

    TypeError: unsupported operand type(s) for -: 'str' and 'int'

我如何纠正这个错误


Tags: textinforinputlendef错误ascii
2条回答

我相信您正在尝试获取文本中每个元素的ascii值。要执行任何数值操作,首先需要将字符转换为整数值。一种方法是使用以下选项:

ord(text[i]) ### get the ascii character of your text

一旦你有了这个,你就可以进行如下操作:

 ascii = ord(text[i]) - 96

希望这有帮助

我想你可能会看到这样的情况:

def afin(day,month,text):
x = ""
for i in range(len(text)):
    y = (int(day) * ord(text[i])) + int(month);
    y %= 26
    x += chr(y+ord('a'))
return x

text = input("Enter Text:")
day = input("Birth Day:")
month = input("Birth Month:")
print(afin(day,month,text))

我在这里做的一些修改包括

  1. 使用ord代替手动添加
  2. 使用chr代替手动减去96
  3. 将日和月更改为整数,以便可以计算y
  4. 而不是while(y<;26):y-26只需使用y%=26

请注意,由于mod val为26,您的值将与大多数值不同,但算法仍应与上面的类似

相关问题 更多 >

    热门问题