如何在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控制台,深呼吸,现在就开始阅读。谢谢!对不起,如果这是个愚蠢的问题。