Python怎么一行输入多个不同类型的数据,用空格隔开?

一行输入同时有int和String类型,用空格隔开,用不了end,还可以怎么写?
关注者
6
被浏览
14,447

7 个回答

一、思路

根据问主的意思:

问主的需求

可以先把 input 输入的字符串,按照空格分割成列表,然后再写一个把 数字 字符串,转换成整数的函数。

最后依次把列表遍历出来的元素,扔到函数里转换即可。

二、数字遍历

def is_int(code):
    int_codes = [str(x) for x in range(10)]
    for i in code:
        if i in int_codes:
            try:
                return int(code)
            except Exception as Error:
                print(Error)
        else:
            return str(code)
if __name__ == '__main__':
    texts_new = list()
    text = input()
    texts = text.split()
    print(texts)
    for t in texts:
        texts_new.append(is_int(t))
    print(texts_new)
    for t in texts_new:
        print(f'{t}, type: {type(t)}')
完整代码

运行结果:

运行效果,注意函数的逻辑

注意,此函数的逻辑,只能输入连续的数字,数字中间不能包含其他字符,否则等同于字符串处理。

三、使用字符串方法 isdigit

当然,字符串也自带 isdigit 来判断字符串是否全部是数字。

In [1]: dir(str)
Out[1]: 
['__add__',
 '__class__',
 '__contains__',
 '__delattr__',
 '__dir__',
 '__doc__',
 '__eq__',
 '__format__',
 '__ge__',
 '__getattribute__',
 '__getitem__',
 '__getnewargs__',
 '__gt__',
 '__hash__',
 '__init__',
 '__init_subclass__',
 '__iter__',
 '__le__',
 '__len__',
 '__lt__',
 '__mod__',
 '__mul__',
 '__ne__',
 '__new__',
 '__reduce__',
 '__reduce_ex__',
 '__repr__',
 '__rmod__',
 '__rmul__',
 '__setattr__',
 '__sizeof__',
 '__str__',
 '__subclasshook__',
 'capitalize',
 'casefold',
 'center',
 'count',
 'encode',
 'endswith',
 'expandtabs',
 'find',
 'format',
 'format_map',
 'index',
 'isalnum',
 'isalpha',
 'isascii',
 'isdecimal',
 'isdigit',
 'isidentifier',
 'islower',
 'isnumeric',
 'isprintable',
 'isspace',
 'istitle',
 'isupper',
 'join',
 'ljust',
 'lower',
 'lstrip',
 'maketrans',
 'partition',
 'removeprefix',
 'removesuffix',
 'replace',
 'rfind',
 'rindex',
 'rjust',
 'rpartition',
 'rsplit',
 'rstrip',
 'split',
 'splitlines',
 'startswith',
 'strip',
 'swapcase',
 'title',
 'translate',
 'upper',
 'zfill']
In [2]: '1234'.isdigit()
Out[2]: True
In [3]: '1234.4'.isdigit()
Out[3]: False
In [4]: 

利用这个特性,就可以把函数写的简单一些。

def is_int(code):
    for i in code:
        if i.isdigit():
            try:
                return int(code)
            except Exception as Error:
        else:
            return str(code)
if __name__ == '__main__':
    texts_new = list()
    text = input()
    texts = text.split()