zoukankan      html  css  js  c++  java
  • python 输入输出 类似c++

    python 输入输出 类似c++

    python是个好东西。

    搞过ACM竞赛的同学应该遇到过即使是long long 类型也无法进行存储的数字,这是因为c++对每种数据类型的存储空间是固定的,所以我们要么使用数组进行存储。

    python就没有这样的问题。理论上只要内存足够大,我们就可以存储无穷大的数。

    但是python每次输入都是按照字符串来进行存储的,所以初次使用python来进行一行内输入多个数字会面临很多问题,比如下面的代码就是错误的。

    a, b = input(), input() #一行输入两个数字,但是结果是错误的
    print(a+b)
    print(type(a+b))
    
    1 2
    1
    1 21
    <class 'str'>
    

    运行上面的代码,第一行我输入了1 空格 2,然后回车。
    这时它还好会提示我们在进行输入,于是我输入了1,print输出的结果是1 21
    其实结果是一个字符串类型的

    a, b = map(int, input().strip().split())#正确的代码实现
    print(a+b)
    print(type(a+b))
    
    1 2
    3
    <class 'int'>
    

    这里来解释下,为什么第二个代码是正确的。
    首先,正如上面说的,python输入默认是字符串类型,而且输入都是按照一行来的,也就是说,无论一行有多少的空格,python都会接受。

    这里来说一下上面正确代码的流程

    1. 这里的input函数会返回一个字符串
    2. 然后调用字符串的strip函数,这个函数会去掉这个字符串的首尾的特定字符,这里我们没有传递给它参数,所以默认去掉的字符串首尾的空格。
    3. 去掉空格后再次调用split函数,这个函数会按照特定的字符来对字符串进行分割,这里我们也没有传递参数,所以默认是根据空格来进行分割。
    4. 这样我们就得到了输入的两个数字的字符串列表(类似于c++中的数组,但是更灵活)
    5. 然后我们使用了map函数,对,这个函数就是对上面列表里面的内容进行一个转换,第一个参数是int,那么就是把列表中的元素转换成int类型的数据
    6. 这样我们得到了两个数据,而且无论我们开头和结尾 或是 数字之间输入了多少个空格,我们都能进行正确地处理。

    好了,完结撒花!

  • 相关阅读:
    前端总结挺全面的
    cmd与bat脚本的使用
    Spring控制反转(IoC)的理解
    C# 中迭代器
    URL 分页并排序
    结合Flash上传文件时显示进度条
    C# 语言特性
    where T:new()
    图片缩放特效
    C# 隐藏窗体 ALT+TAb不可见
  • 原文地址:https://www.cnblogs.com/alking1001/p/13688164.html
Copyright © 2011-2022 走看看