检查列表的最后一个元素是否为数字

时间:2019-12-11 11:49:41

标签: python

我有一个函数,该函数生成带有空格的随机字符[a-Z0-9],并将每个字符附加到list

words = []

while words.count(' ') < 10:
    if len(words) == 0:
        # append character
    else:
        if words[-1].isdigit(): # checking if last character is digit
            # append only digit or whitespacce
        else:
            # append character

如您所见,最后一个(上一个)字符是否为数字,我尝试仅附加数字或空格,否则附加任何字符。问题是,当我运行代码时,出现以下错误:

'NoneType' object has no attribute 'isdigit'if words[-1].isdigit():。我做错了什么,为什么还有None而不是str

2 个答案:

答案 0 :(得分:0)

只需创建words字符串:

(它偏向于chars,因为空格不是数字,因此它可以从数字转换为chars,但不能以其他方式转向-如果我正确的话,这就是你想要的)

import random

sample_digit=" 0123456789"
sample_char=" abcdefghi"
sample_any=sample_digit+sample_char
words = ""
while words.count(' ') <10:
    if len(words) == 0:
        words+=sample_any[random.randint(0, len(sample_any)-1)]
    else:
        if words[-1].isdigit():
            words+=sample_digit[random.randint(0, len(sample_digit)-1)]
        else:
            words+=sample_char[random.randint(0, len(sample_char)-1)]

print(words)

答案 1 :(得分:-1)

一种测试字符是否为数字的简单方法:

if words[-1] in '0123456789':
    ...