我有这段代码。你知道吗
class GRIDCODE:
pass
def change(BSMPW):
if GRIDCODE == "1":
return "BSM"
elif GRIDCODE == "3":
return "BSE"
elif GRIDCODE == "4":
return "BSP"
else:
return "None"
我想让它做的是,如果列a中的值是1,则填充列b中的值BSM,依此类推。如果没有数据,则不写入任何数据。 结果是它写入每一行“None”,这是错误的,因为我正在查看的列(GRIDCODE)中填充了值1、3和4。你知道吗
我做错什么了?你知道吗
编辑:2014年6月25日下午4:31
我想澄清一下:
我的桌子是这样的:
GRIDCODE BSMPW
1 empty (that does not stand in there, its just blanc)
1 empty
3 empty
1 empty
4 empty
我希望它看起来像这样:
GRIDCODE BSMPW
1 BSM
1 BSM
3 BSE
1 BSM
4 BSP
我以前用另一张桌子做过,效果很好。BSMPW列设置为文本,而GRIDCODE设置为整数。你知道吗
根据你的评论,我想我会进一步详细的回答,为什么你可能会收到你的错误。如前所述,您不应该需要该类,因为它现在所在的位置没有被使用。您需要的是:
注意到我们现在是如何打开BSMPW而不是GRIDCODE的。您正在打开一个不存在的变量(这可能是它之前抛出全局错误的原因)。因为它从来没有等同于你的任何给定的情况,它总是返回没有。但是,您的代码中仍然有一个问题,我想在这里也表达出来。你知道吗
如果你给它一个int,它永远不会给你任何。这是因为您试图将整数与字符串进行比较。下面的示例对此进行了详细说明:
如果要传递一个整数,则需要将其与整数进行比较。所以您需要将代码更改为:
但是,如果您希望成为“pythonic”并实现一个高效的switch语句,那么您需要执行以下操作(如果您要比较字符串,请再次添加引号):
Bob和Aamir指出的问题是GRIDCODE没有值,因此不能等于任何值,这使得change()函数的其余部分变得毫无意义。如果您想使用GRIDCODE的某个值,您的代码可能如下所示。你知道吗
但是,如果我正确理解您的意思,最简单的方法是完全跳过类并使用CSV模块,只要列可以转换为CSV。然后你可以一行一行地,为每一行运行change函数。你知道吗
相关问题 更多 >
编程相关推荐