为什么我得到7作为输出?

2024-06-26 03:58:34 发布

您现在位置:Python中文网/ 问答频道 /正文

number = "9,223,372,036,854,775,807"
cleanedNumber = ''

for i in range(0, len(number)):
    if number[i] in '0123456789':
        cleanedNumber = number[i]

newNumber = int(cleanedNumber)

print("The number is {} ".format(newNumber))    

上面的代码我不明白的是输出。因为我得到的输出是数字7。为什么是7?你知道吗

我知道如果cleanedNumber+=number[I]是这样的话,我会得到。但是为什么当我把+=改成=时我会得到7呢。你知道吗


Tags: the代码informatnumberforlenif
3条回答

你得到它是因为你不再使用复合赋值,而是赋值。每次你到达cleanedNumber = number[i]你都给它赋值。你知道吗

似乎您只想从字符串中获取数字。因为您要在结尾将类型更改为int,所以您也不关心小数位数,否则您将调用float。鉴于这些假设,为什么不:

number = "9,223,372,036,854,775,807"
cleanedNumber = int(''.join(number.split(',')))
print("The number is {}".format(cleanedNumber)) 

否则,您将需要进行以下更改:

number = "9,223,372,036,854,775,807"
cleanedNumber = ''

for char in number: # just iterate over the string
    if char.isdigit():
        cleanedNumber += char

cleanedNumber = int(cleanedNumber)

print("The number is {}".format(cleanedNumber))   

因为你做错了。每次通过循环时,您都要重置cleanedNumber的值,这时您应该附加到它:

number = "9,223,372,036,854,775,807"
cleanedNumber = ''

for i in range(0, len(number)):
    if number[i] in '0123456789':
        cleanedNumber += number[i]

newNumber = int(cleanedNumber)

print("The number is {} ".format(newNumber)) 

这是因为"7"是您迭代的最后一个数字,即'0123456789'。如果您需要进一步的指导,请查看this

相关问题 更多 >