首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python Affine-密码

Python Affine-密码
EN

Stack Overflow用户
提问于 2020-05-03 08:59:55
回答 2查看 88关注 0票数 0
代码语言:javascript
复制
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))

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

代码语言:javascript
复制
    ascii = text[i] - 96

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

我该如何修复这个错误?

EN

回答 2

Stack Overflow用户

发布于 2020-05-03 09:22:12

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

代码语言:javascript
复制
ord(text[i]) ### get the ascii character of your text

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

代码语言:javascript
复制
 ascii = ord(text[i]) - 96

How to get the ASCII value of a character

  • 参考

希望这能有所帮助

票数 0
EN

Stack Overflow用户

发布于 2020-05-03 09:40:33

我想你看到的可能是这样的东西:

代码语言:javascript
复制
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. 不是手动添加96,而是使用ord
  2. 而不是手动减去96,使用chr
  3. 将日和月更改为整数,以便可以计算y
  4. 而不是while(y < 26):y-26只使用y %= 26

<代码>G210

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61568356

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档