alphabet =["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"]
def decoder(input):
inputlist = list(input)
inputlength = len(input)
alphabetlength = len(alphabet)
result = "Decoded Sentence: "
for x in range(inputlength):
for y in range(alphabetlength):
if inputlist[x] is alphabet[y]:
print ("hi")
if y == 24:
result += "a"
if y == 25:
result += "b"
else:
result += alphabet[y+2]
if inputlist[x] is "(":
result += "("
if inputlist[x] is ")":
result += ")"
if inputlist[x] is ".":
result += "."
if inputlist[x] is " ":
result += " "
return result
我的代码应该把一个句子的字母表增加2。例如:a->;c、l->;n 我使用print(“hi”)语句来检查if语句是否被评估为true,但它从未被评估为true。有人能告诉我为什么吗?在
is
检查对象的标识。因为您似乎在测试两个字符串是否具有相同的值(不是相同的object),所以最好使用==
。例如:您也可以对其他
if
语句进行相同的更新。在问题是
is
比较字符串的同一性和不相等性。两个相等的短字符串可能是相同的,这是因为CPython做了一些字符串内接,但您通常不应该建立在这种行为的基础上。相反,使用==
来比较字符串的相等性。在请注意,使用^{} ,并使用^{} 创建的映射,可以更好地实现这一点:
您可以进一步使用^{} ,这样就不需要自己键入字母表;或者使用^{} 来表示小写和大写字符:
^{pr2}$除了
is
精简之外,代码中还有另一个问题:一旦}-这将导致错误。在
y == 24
,它将中断:首先,a
将被添加,然后{所以改变你的逻辑
这甚至可以进一步改进:
如果你做
^{pr2}$alphabet = 'abcdefghijklmnopqrstuvwxyz'
,你可以做到相关问题 更多 >
编程相关推荐