美文网首页
python3读取输入(input和sys)

python3读取输入(input和sys)

作者: 0error_ | 来源:发表于2020-03-22 18:06 被阅读0次

    我就不信还记不住╰(°▽°)╯

    不定期更

    需要用到的内容:

    参考博客:https://www.jb51.net/article/169914.htm
    参考博客:https://www.cnblogs.com/yyxayz/p/4034299.html

    split()

    切分用的函数是split(),如果为空,就是按空格分割(很多个空格也会当成1个空格)。
    如果按照逗号分隔,split(",")

    strip()

    s为字符串,rm为要删除的字符序列. 只能删除开头或是结尾的字符或是字符串。不能删除中间的字符或是字符串。
    s.strip(rm) 删除s字符串中开头、结尾处,位于 rm删除序列的字符

    sys.stdin.readline()

    (记得要import sys)
    sys.stdin.readline()可以实现标准输入,需要调用sys库,sys.stdin是一个标准化输入的方法,其中默认输入的格式是字符串,如果是int,float类型则需要强制转换。
    注意:
    ① 默认输入的是字符串(注意strip('\n')表示以\n分隔,否则输出是“字符串+\n”的形式 )
    ② 如果是多个输入,strip()默认是以空格分隔,返回的是一个包含多个字符串的list
    ③ 如果要强制转换成int等类型,可以调用map()函数。

    sys.stdin.readline( )会将标准输入全部获取,包括末尾的'\n',input()会把‘\n'忽略.

    ---------------下面进入正题----先读一行--------------------

    读取数字

    1. 读取一行里的多个数字,用空格隔开,回车结束,用列表保存

    参考博客:https://blog.csdn.net/qq_14841239/article/details/82903445

        list1 = list(map(int, input().split()))
        print (list1)  #[12, 43, 27, 94, 73]
    
    2. 读取一行里的多个数字,用空格隔开,回车结束,分别保存

    但是好像需要提前知道数字的个数?
    参考博客:https://blog.csdn.net/Hackeryuan/article/details/103714783

        a,b =map(int, input().split())
        print ('a : %d, b : %d' %(a,b)) #a : 143, b : 888
    

    用sys:

        a, b = map(int, sys.stdin.readline().split())
    

    读取字符串

    1. 读取一行里的多个字符串,用空格隔开,回车结束,用列表保存
        s = input().split() #['gsg', 'ewg', '83gj', '924'] (瞎打的)
    

    用sys:

        list1 = sys.stdin.readline().split()
    
    2. 读取一行里的多个字符串,用空格隔开,回车结束,分别保存

    参考博客:https://blog.csdn.net/weixin_30698297/article/details/97068650?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

        s1,s2 = input().split()
        print ('s1 : %s, s2 : %s' %(s1,s2)) #s1 : tt0s, s2 : 4ge
    

    用sys:
    https://blog.csdn.net/demon24/article/details/8502565

        str1, str2 = map(str, sys.stdin.readline().split())
        print ('str1 : %s, str2 : %s' %(str1,str2)) #str1 : ghaf74, str2 : 09fr
        print ('str1的长度 : %d, str2的长度 : %d' %(len(str1),len(str2))) #str1的长度 : 6, str2的长度 : 4
    

    ----------------------试试读多行---------------------------

    • 最简单的是input(),注意如果需要int类型,需要强转 int(intput())
    • 如何判断输入结束了:按下Enter,然后按下ctrl+d

    读取字符串

    1. 不指定行数,读取多行字符串,每行里的字符串以空格隔开,存入一维/二维list

    来源博客:https://blog.csdn.net/qq_26884501/article/details/89194211

    import sys
    try:
        mx = []
        while True:
            m = sys.stdin.readline().strip()
            #若是多输入,strip()默认是以空格分隔,返回一个包含多个字符串的list。
            if m == '':
                break
            m = list(m.split())
            mx.append(m) #二维,如果要一维,就用extend
        print(mx)
    except:
        pass
    
    

    extend出来的是一维list:


    image.png

    append出来的是二维list:


    image.png
    2. 不指定行数,读取多行数字,每行里的数字以空格隔开,存入二维list

    (其实就是把上面代码改了改,转成了int)

    import sys
    try:
        mx = []
        while True:
            m = sys.stdin.readline().strip()
            #若是多输入,strip()默认是以空格分隔,返回一个包含多个字符串的list。
            if m == '':
                break
            m = list(map(int, m.split())) #改的是这里!
            mx.append(m)
        print(mx)
        print(mx[0][0])
        print(type(mx[0][0])) #看看是不是int
    except:
        pass
    

    append出来的是二维list:


    image.png

    相关文章

      网友评论

          本文标题:python3读取输入(input和sys)

          本文链接:https://www.haomeiwen.com/subject/oydvyhtx.html