gpt4 book ai didi

python - 我做错了什么,python循环不重复?

转载 作者:太空宇宙 更新时间:2023-11-04 03:04:06 27 4
gpt4 key购买 nike

我刚刚开始工作,现在,对于我来说,我无法让循​​环继续,因为它只产生第一个输入的结果。我哪里做错了?我知道我是一个业余爱好者,但无论你能得到什么帮助都会很棒!谢谢。

sequence = open('sequence.txt').read().replace('\n','')
enzymes = {}
fh = open('enzymes.txt')
print('Restriction Enzyme Counter')
inez = input('Enter a Restricting Enzyme: ')
def servx():
for line in fh:
(name, site, junk, junk) = line.split()
enzymes[name] = site
if inez in fh:
xcr = site
print('Active Bases:', site)
for line in sequence.split():
if xcr in line:
bs = (sequence.count(xcr))
print('Enzyme', inez, 'appears', bs, 'times in Sequence.')
servx()
def servy():
fh.seek(0);
qust = input('Find another Enzyme? [Yes/No]: ')
if qust == 'Yes':
inez = input('Enter a Restricting Enzyme: ')
servx()
servy()
elif qust == 'No':
print('Thanks!')
elif qust != 'Yes''No':
print('Error, Unknown Command')
servy()
fh.close()

最佳答案

这是一个范围问题。默认情况下,Python 变量在范围内是局部的。在 servy 中,您将 inez 设置为一个新值,Python 假定这是一个新的局部变量,因为您没有明确声明它是全局变量。因此,当你第二次调用 serx 时,全局变量 inez 没有改变。这里有一个更简单的例子来说明这个问题。

a = "hello"

def b():
print(a)

def c():
a = "world"
print(a)
b()

b()
c()

这是一个让我绊倒很多次的讨厌的错误。尽可能避免使用全局变量的重要原因之一。

上述代码还有其他问题,例如在可能应该使用循环的地方使用递归。我建议阅读 python 的作用域规则 (Short Description of the Scoping Rules?),尝试重构以避免递归,然后将您的代码发布到 http://codereview.stackexchange.com 上.

关于python - 我做错了什么,python循环不重复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40032219/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com