基于补获异常的一系列问题

python
1.用input输入信息全部转化为str型-怎么能用户输入什么类型就是什么类型
2.在try中虽然引用lis(a),但是实际运行结果没有达到lis(a)的用途
3.运行结果会根据我输入的字符串个数打印几遍,但我只想打印一遍
代码:
class MyException(Exception):
def init(self,message):
super().init(message)

def lis(a):
for i in a:
if type(i) is not str:
raise MyException('列表类型不符')
if len(a)>10 and len(a)<5:
raise MyException('长度不符')
else:
print(a)

try:
k=int(input('输入字符串长度:'))
b=[]
for i in range(k):
b.append(input('请按次序输入列表元素:'))
lis(b)

except MyException as e:
print(e)

input输入的信息就是str,需要手动转换。
如果想实现<输入什么类型就是什么类型>的功能可以在try里使用eval,即执行传入的字符串表达式。
eval("1")会返回1,而eval("[1, 2, \"3\"])会返回[1, 2, "3"]