让for循环第一次忽略某个元素

2 投票
1 回答
983 浏览
提问于 2025-04-18 02:44

我正在为我的计算机科学课做一个加密作业,里面用到了一个叫做“逻辑图”的东西,主要是用来改变字符的,涉及到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...

撰写回答