让for循环第一次忽略某个元素
我正在为我的计算机科学课做一个加密作业,里面用到了一个叫做“逻辑图”的东西,主要是用来改变字符的,涉及到ord()和chr()这两个函数。
在我的代码中,我使用了一个循环,我需要这个循环在执行某个命令(logMap)之前先运行一次。
from logistic import logMap
from genAmpSeed import genAmpSeed
from cipherChr import cipherChr
password=input("Enter password: ")
amp,seed=genAmpSeed(password)
line=input("Enter line to cipher: ")
def logMap(a,x):
ans=(a*x)*(1-x)
return ans
def line2cipher(amp,seed,line):
acc=''
for i in line:
res=logMap(amp,seed)
offset=int(96*res)
acc+= cipherChr(i,offset)
print(acc,res)
所以我需要这个循环第一次运行时使用genAmpSeed中的默认值(genAmpSeed.py),然后之后就用logMap的默认值。
1 个回答
0
你可以用切片(slice)来忽略字符串的第一个字符。
def line2cipher(amp,seed,line):
acc=''
for i in line[1:]:
res=logMap(amp,seed)
offset=int(96*res)
acc+= cipherChr(i,offset)
print(acc,res)
编辑:
如果你想要一个更通用的方法,可以使用一个标志来检查循环是否第一次运行:
first = True
for i in range(10):
if first:
first = False
# Do whatever you need to do for the first time
continue
# Do something...