python len str_关于python:’str’对象没有属性’len’

我有一个方法,通过检查前三个字母/数字,确保它们是相同的,然后继续像这样工作

def combineProcess(request):

carID1 = request.POST['carID1']

carID2 = request.POST['carID2']

for x in range (0,3):

a += carID1.length(x)

b += carID2.length(x)

if a.equals(b):

//do something

在它使用之前它现在停止了,我得到这个错误。

Exception Type: UnboundLocalError

Exception Value:

local variable 'a' referenced before assignment

我几个星期前从未用过的东西没有改变任何东西,所以我做了a和b全球。

def combineProcess(request):

carID1 = request.POST['carID1']

carID2 = request.POST['carID2']

global a,b

for x in range (0,3):

a += carID1.length(x)

b += carID2.length(x)

if a.equals(b):

//do something

现在我收到了这个错误。

Exception Type: NameError

Exception Value:

name 'a' is not defined

然后我删除了全局线,只是把它

a ="P"

并得到以下错误

str object has no attribute length() or len()

现在让我感到困惑的是这段代码是如何停止工作的,为什么它不能识别字符串对象有一个len()方法。 主要是我失去了我的代码从工作到两周不工作的方式。

请修改你的缩进。 我们不可能知道功能中的内容。 使用4个空格来获取代码块,使用另外4个空格来显示函数的缩进。

你确定你在这里写Python,而不是像Java那样的东西吗? 除了.length()的问题之外,字符串在Python中也没有.equals方法。

我认为这可能是问题因为我每天编写两个语言python和c#所以我可能只是混淆两个

Python String len() Method

句法

以下是len()方法的语法?

len( str )

str ="this is string example....wow!!!";

print("Length of the string:", len(str))

在运行上述程序的时候,产生以下结果?

Length of the string:  32

参考:Python String len()方法

UnboundLocalError: local variable 'a' referenced before assignment

说明

这是因为,即使存在a和b,您也在函数combineProcess()内的名称a和b上使用赋值语句。当然,这会在函数的范围内创建一个名为a和b的变量。

Python解释器在模块加载时看到这一点,并决定不应在本地作用域内使用a和b的全局作用域,这会导致在本地分配变量之前引用该变量时出现问题。

Var1 = 1

Var2 = 0

def function():

if Var2 == 0 and Var1 > 0:

print("Result One")

Var1 =- 1

function()

如果您运行此程序,它会出现以下错误。

UnboundLocalError: local variable 'Var1' referenced before assignment

由于修改了Var1的值,因此在函数的范围内创建一个名为Var1的变量。因此,由于Var1 =- 1语句之前的条件检查Var1 > 0,报告错误。

但是如果我们修改代码如下。

Var1 = 1

Var2 = 0

def function():

global Var1

if Var2 == 0 and Var1 > 0:

print("Result One")

Var1 =- 1

function()

然后它工作正常。

请注意,如果我们在if条件检查之前移动语句Var1 =- 1,那么即使您不使用global Var1语句,它也不会报告任何错误。所以,以下代码工作正常。

Var1 = 1

Var2 = 0

def function():

Var1 =- 1

if Var2 == 0 and Var1 > 0:

print("Result One")

function()

参考:见这个答案。

NameError: name 'a' is not defined

说明

您可能会收到此错误,因为在Python中,您无法使用equals()方法比较两个字符串。没有这样的方法存在。

示例:比较两个字符串

您可以使用> , < , <= , <= , == , !=比较两个字符串。 Python按字典顺序比较字符串,即使用字符的ASCII值。例如,要比较两个字符串是否相等,您可以执行以下操作。

if string1 == string2:

// do something

我假设您来自Java等语言,您可以直接在字符串上调用函数。你可以用Python做到这一点:

>>> A ="Hello"

>>> B ="Hello"

>>> A.__len__()

5

>>> A.__eq__(B)

True

但是,正确的做法是这样的:

>>> len(A)

5

>>> A == B

True

话虽如此,我不确定你在那里用长度函数想要完成什么。你说你的代码正在检查2个字符串的前3个字母是否相同 - 你可以这样做:

A ="car123"

B ="car456"

print(A[:3] == B[:3]) # -> True

这使用Python的切片表示法来获取每个字符串的前3个字符,并将这些切片相互比较。

thansk的帮助,我不知道为什么,但我得到了两个混淆(C#和python),只有当你们帮助它变得清晰,但我仍然不明白为什么代码工作原来的方式...... ...我很困惑为什么它只是停止但是谢谢我会做出必要的改变

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值