首页 > 解决方案 > 由函数分配的某些变量未在 python 脚本中分配

问题描述

我正在研究角色概念的程序生成。作为其中的一部分,我设置了变量来更改文本中的代词,以便它们对于生成的字符是正确的。但是,由于某种原因,我的代码拒绝为此分配变量,导致输出类似于“Bob 是高加索人。工作方式...”它应该显示为“Bob 是白人男性。他工作方式...”

代词或男性或女性一词应在的任何地方,它都不会打印任何内容。不安慰,也不归档。当我将整个脚本剥离为仅调用函数运行的代码和函数本身时,它仍然不会分配变量。

其他使用函数分配变量的系统可以 100% 正常工作。

我已经重写了 3 次新函数来尝试不同的方法。我已经尝试使变量成为全局变量。我不知道还能尝试什么。

这是功能。

def pronouns(sex1):
    pronoun1, pronoun1alternate, pronoun2, pronoun2alternate = "", "", "", ""
    if sex1 == "male":
        pronoun1 = "He"
        pronoun1alternate = "he"
        pronoun2 = "His"
        pronoun2alternate = "his"
    elif sex1 == "female":
        pronoun1 = "She"
        pronoun1alternate = "she"
        pronoun2 = "Her"
        pronoun2alternate = "her"
    return pronoun1, pronoun1alternate, pronoun2, pronoun2alternate

变量 sex1 是在很久以后创建的,并且无法在此函数中创建,因为我可能希望稍后扩展该程序以用于幻想和科幻角色概念,并决定处理每个种族的性别选择以防万一将来会像 Species-8472 这样的东西。

这是稍后调用该函数的方式。

p1, p1a, p2, p2a = pronouns(sex1)

我被告知 python 传递值但不传递名称。当函数输出 p1 p1a 等时它也不起作用。有人告诉我以相同的顺序使用不同的名称可能会解决问题。它没。

在这里他应该如何使用变量。

description = name + " is a " + race + " " + sex + ". " + p1 + " has " + eyes + " eyes. " + colorapp

填写姓名、种族、眼睛颜色和 colorapp 变量没有问题,但无论我做什么,都不能填写性别或任何代词值。

单独运行此代码时不会出现错误消息。如果要求仅打印代词或性别,它将打印空白行。但是,sex1 将成功打印,程序中几乎所有其他变量也一样。

标签: pythonfunctionvariables

解决方案


你如何为变量 sex1 赋值?确保它以小写形式传递。如果这是问题所在,您可以在函数的第 3 行和第 8 行使用 sex1.lower()。


推荐阅读