第11节,关注数据类型

1. 计算两个整数的和

请两次调用input函数接收用户的输入,用户会输入两个整数,程序计算这两个整数的和并使用print输出他们的和。

下面是一个同学的答案

number1 = input("请输入第一个整数:")
number2 = input("请输入第二个整数:")

number_sum = number1 + number2
print(number_sum)

在不运行程序的情况下,你能发现代码里的错误么?

本篇教程的核心内容是关注数据类型,你必须清楚的知道代码里每一个变量的数据类型,现在请思考,number1和number2的数据类型是什么?

很多人想当然的认为,这个变量的数据类型是int,这是一个天大的错误,input函数接收用户的输入,函数以字符串的形式返回用户的输入,因此这两个变量的类型是字符串。

为什么要关注数据类型,因为我们写的一切程序都是数据+算法。在初学阶段,算法于你来说太高深了,你唯一需要努力学习的就是数据,python都有哪些数据类型,他们如何定义,这些数据类型都有哪些方法,如何操作他们?如果你对此感到模糊,不确定,那么恭喜你,这样的你一辈子也入不了门。

你梦寐以求的编程思维里,就包含了对数据类型的关注,你必须强迫自己去思考代码里的每一个变量的数据类型是什么,如果看不出来,就添加代码,通过type函数来查看,比如改成这样个样子

number1 = input("请输入第一个整数:")
number2 = input("请输入第二个整数:")

print(type(number1))
print(type(number2))

number_sum = number1 + number2
print(number_sum)

实际运行代码,这两行新增的print语句会告诉你这两个变量的数据类型是什么。

一旦知晓了变量的数据类型,就仿佛是一个近视的人配了一副眼镜,眼前的一切都变得清晰了,我们需要的是两个int类型的数据,而不是两个字符串,ok,让我们修改程序

number1 = input("请输入第一个整数:")
number2 = input("请输入第二个整数:")

number1 = int(number1)
number2 = int(number2)

number_sum = number1 + number2
print(number_sum)

将字符串转成int类型数据,然后计算他们的和。

2. 计算两个整数和升级版

我们来加深一下题目的难度,此前要求你使用两次input函数来接收用户输入的两个整数,现在,要求你只使用一次input函数,用户一次性输入两个整数,两个整数之间用空格分隔,程序计算这两个整数的和并输出。

用户输入的内容,应当是这样的格式“3 5”,前面已经讲了,input函数以字符串的形式返回用户的输入,那么你在程序里得到的就是一个字符串,内容为“3 5”。

我们的目标是计算两个整数的和,但现在得到的只是一个字符串,字符串里有两个整数,用空格分开,该如何处理呢?

这个时候,任何的编程思维都不管用,只有基础知识方能起作用。对于字符串,不论何种编程语言,java, c++, php ,都提供了一个名为字符串切分的方法,它可以根据分隔符,将字符串分成若干部分,在python里,字符串的这个方法叫split。

在学习字符串的时候,至少在我的教程里,一定讲了这个方法,倘若你掌握了这个方法,此时便可能想得到用它来处理字符串,但若你走马观花的看教程,你根本不会注意到字符串有这样的方法,那么,你也就想不到如何处理input返回的字符串。

string = input("请输入两个整数,中间用空格分隔:")
array = string.split()      # 不传入分隔符,默认会用空格分隔

我先写出这两行代码,加入用户输入的内容是:3 8,请思考,变量string 和 array的数据类型分别是什么?

兜兜转转,又回到了本文的主题,关注数据类型。你只有知道array的数据类型,才能理解split方法的作用和这个方法返回的结果是什么。

对于代码,你必须做到清楚的知道每一个变量的数据类型,每一个函数的功能作用,每一个方法的功能作用,所有这些都必须如数家珍。如果你现在做不到,那么,应该以此为努力的方向,否则,就不要学习了,你那种轻轻松松的学习方法,根本学不会。唯有按照我说的方向去努力,你才可能用最短的时间,最少的努力掌握一门编程语言。

字符串split方法根据分隔符分隔字符串,将字符串分隔成若干个小的字符串,并以列表的形式返回,我并没有指定分隔符,因此会默认以空格进行分割,即便不运行程序,我也能手写出array的内容

array = ['3', '8']

现在,我不仅知道array的数据类型,还知道array的值是什么,如果你现在还做不到我这样熟练,没有关系,你可以通过print语句来输出自己想要的答案

string = input("请输入两个整数,中间用空格分隔:")
array = string.split()      # 不传入分隔符,默认会用空格分隔

print(type(array))      # list
print(array)            # ['3', '8']

剩下的事情就简单了,你知道如何使用索引来访问列表里的元素吧?如果不知道,请看基础教程,编程思维不是灵丹妙药,你一点基础都没有,就算手把手教你,你也还是学不会的,亲,踏实一点,看看基础吧。

string = input("请输入两个整数,中间用空格分隔:")
array = string.split()      # 不传入分隔符,默认会用空格分隔

number1 = int(array[0])
number2 = int(array[1])

print(number1 + number2)

很多人说自己写代码没思路,这里面固然有代码看得少,写的少,经验少的缘故,但更重要的原因是你自己基础不好,根本不会操作数据,其次才是缺少编程思维,给你一个列表,让你根据索引访问数据,这句话本身在表达什么意思,你都不清楚,还谈什么编程思维呢?

扫描关注, 与我技术互动

QQ交流群: 211426309

加入知识星球, 每天收获更多精彩内容

分享日常研究的python技术和遇到的问题及解决方案