如何在python中将变量更改为字符串?
所以我试图用一个函数把一个随机化变量变成一个字符串,你知道这为什么不起作用吗如何在python中将变量更改为字符串?,python,Python,所以我试图用一个函数把一个随机化变量变成一个字符串,你知道这为什么不起作用吗 def letter(x): if x == 1: x = "A" elif x == 2: x = "C" elif x == 3: x = "G" elif x == 4: x = "T" else: print "Error" randint18= ra
def letter(x):
if x == 1:
x = "A"
elif x == 2:
x = "C"
elif x == 3:
x = "G"
elif x == 4:
x = "T"
else:
print "Error"
randint18= random.randrange(1,5)
letter(randint18)
print randint18 `
您必须从函数返回值,并将其分配给变量
def letter(x):
...
return x
randint18 = random.randrange(1, 5)
result = letter(randint18)
print result
您忘记在函数中包含一个返回
def letter(x):
if x == 1:
x = "A"
elif x == 2:
x = "C"
elif x == 3:
x = "G"
elif x == 4:
x = "T"
else:
print "Error"
return x
randint18 = random.randrange(1,5)
returned_result = letter(randint18)
print returned_result
不能就地更改变量,必须返回变量并捕获返回值
import random
def letter(x):
if x == 1:
x = "A"
elif x == 2:
x = "C"
elif x == 3:
x = "G"
elif x == 4:
x = "T"
else:
print "Error"
return x # return it here
randint18= random.randrange(1,5)
randint18 = letter(randint18) # capture the returned value here
print randint18
有一种更简单的方法可以实现您想要的,使用字典映射值
import random
def letter(x):
mapd = {1:'A', 2:'C', 3:'G', 4:'T'}
return mapd.get(x, None)
randint18= random.randrange(1,5)
randint18 = letter(randint18)
print randint18
添加函数的返回值
return x
value\u you\u want=letterrandint18添加返回语句。输出将保存为所需的值
请注意,函数中定义的变量是函数的局部变量,不能在函数范围之外访问。您期望函数外的x值,这是不可能的。只需检查运行函数并尝试访问变量x中的值。它将给出错误
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
print x
NameError: name 'x' is not defined
我的答案不是一个正确的答案(已经提供了),而是一个改进代码的建议。我会在注释中这样做,但代码格式不够好 为什么不使用字典来进行映射,而不是一系列的if?如果愿意,您仍然可以将其放置在函数中:
letter = {1:'A', 2:'C', 3:'G', 4:'T'}
randint18 = random.randrange(1,5)
mapping = letter.get(randint18, 'Error')
print mapping
请注意,如果映射从零开始,列表将更加有效:
letter = ['A', 'C', 'G', 'T']
randint18 = random.randrange(0,4)
try: # in case your random index were allowed to go past 3
mapping = letter[randint18]
except IndexError:
mapping = 'Error'
print mapping
慢慢后退python控制台,深呼吸,现在就开始阅读。谢谢!对不起,如果这是个愚蠢的问题。