检查列表是否仅由整数组成

1 python

我有一个程序

  • 如果列表仅由整数组成,则反转列表的顺序
  • 如果列表仅包含单词,则将列表项转换为大写
  • 如果列表成员不满足这两个条件中的任何一个,则返回相同的列表

虽然我希望程序循环遍历列表,但是我已经编写了它,如果type int-append的值和类型字符串的下一个值显示原始列表和结束循环

我认为我的代码我的代码做得不好:

def is_int(val):
    if type(val) == int:
        return True
    else:
        return False

def is_string(val):
      if type(val) == str:
         return True
      else:
         return False

def is_float(val):
    if type(val) == float:
        return True
    else:
        return False

def invert(val):
    k = len(val)

    for i in range(k//2):
        a = val[i]
        val[i] = val[k-1]
        val[k-1] = a

    print(val)


lis = ["a","c",2,7]
lim = []
tart = 1
for x in lis:
    if is_int(x) == True and is_int(lis[tart:]) == True:
        lim.append(x)
        tart += 1
    elif is_string(x) == True and is_string(lis[tart:]) == True :
        x = x.upper()
        lim.append(x)
        tart += 1
    else:
        print(lis)
        break


invert(lim)
Run Code Online (Sandbox Code Playgroud)

Sus*_*ant 5

你可以用这个 -

all(isinstance(i, int) for i in lis)
Run Code Online (Sandbox Code Playgroud)

这将为您提供True如果列表的所有元素都是整数,那么您可以修改您的代码以测试字符串和整数

if all(isinstance(i, int) for i in lis):
    return list(reversed(lis)) # return reversed list
elif all(isinstance(i, str) for i in lis):
    return [i.upper() for i in lis] # change to uppercase and return the list
return lis # return list as is
Run Code Online (Sandbox Code Playgroud)