python零基础教程(7)——数据结构

嗨嗨嗨,大噶猴啊~话不多说,我们来看一下上次的每日一题~

上次的每日一题

小明十分关心自己的身材,他查询到一个叫做BMI的衡量标准:

BMI=体重(kg)/身高(m)^2

BMI<18.5为消瘦;18.6-23.9正常;24-27.9超重;≥28肥胖。而小明身高169,体重60。请编写程序帮他判断自己的身体状况。

要求:1、将身高和体重储存在变量中;2、使用if-elif-else语句,并最终输出他的身体状况

下面是答案示例,正确答案不唯一:

#定义身高、体重、BMI的变量
height=1.69
weight=60
BMI=weight/height**2
#对BMI四舍五入(没有讲过,了解即可)
BMI=round(BMI,1)
#进行条件判断
if BMI<=18.5:
    print("消瘦")
elif 18.6<=BMI<=23.9:
    print("正常")
elif 24<=BMI<=27.9:
    print("超重")
else:
    print("肥胖")

当然,你也可以像下面这样写:

def CheckBmi(h,w):
    BMI=round(w/h**2,2)
    if BMI<=18.5:
        return("消瘦")
    elif 18.6<=BMI<=23.9:
        return("正常")
    elif 24<=BMI<=27.9:
        return("超重")
    else:
        return("肥胖")
CheckBmi(1.69,60)

看不懂?嘿嘿,就对了。这用到了没有学习过的函数知识,以后会把它教给大家。:)

好,我们现在就开始进入今天的学习吧!

python中的数据结构

我们之前学习的变量每个可以存储1个数据,但是我需要存储10个数据的时候怎么办呢?

当然,写10个变量可以解决这个问题,但是太“烦”。

所以,在Python中,有几种内置的“容器”,可以以不同方式存储多个数据的集合。

而这样的“容器”,我们就叫它:“数据结构”。我们常用元组、列表、字典这三种。

  1. 储存多个数据的元组

元组,是一种由多个数据组成的有序数据集合。一对小括号,是定义元组的固定格式;逗号,是分隔元组里各个元素的固定符号。元组可以储存各种类型的数据。

让我们来看一个例子:

cal=("01.01","01.02","01.03","01.04")
print(cal)

output:
>>>("01.01","01.02","01.03","01.04")

这2行代码定义了一个cal的元组并打印了这个元组:第1行给一个元组赋值了"1月1日", "1月2日", "1月3日", "1月4日"这四个日期;第2行打印了calendar这整个元组。

元组中的数据是有顺序的。

也就是说,在刚刚定义的元组中,"01.01"是第一个,"01.02"是第二个,以此类推。当我们输出cal[0]时,我们就得到了这个元组的第一个数据。像这样访问它内部数据的机制,我们叫做“索引”:

索引

我们可以通俗地理解为索引就是数据的位置。索引从0开始,因此,第一个数据的索引为0,第二个数据的索引为1,以此类推。我们可以通过中括号和索引的方式,访问元组中到某一个位置的元素。

如:

cal=("01.01","01.02","01.03","01.04")
print(cal[1])

output
>>>"01.02"

但是,元组是不可以通过索引更改的。只可以通过+运算符合并元组或*运算符复制元素。

cal=("01.01","01.02","01.03","01.04")
cal[1]="0.0"

output
>>>Traceback (most recent call last):
>>>    File "", line 1, in 
>>>TypeError: 'tuple' object does not support item assignment

报错力——(doge

切片

切片,一个非常形象的名字,就是指截取元组中的元素,用":"表示。如:

cal=("01.01","01.02","01.03","01.04")
print(cal[1:3])

output
>>>"01.02","01.03","01.04"

其中,冒号前表示起始索引,冒号后表示结束索引,不写则是从头开始或到尾结束。

反索引

正如从头到尾依次的索引,自然也有从尾到头的反索引。反索引从-1开始,从尾到头递减:最后一项为-1,倒数第二项为-2,以此类推。

cal=("01.01","01.02","01.03","01.04")
print(cal[-1])

output
>>>"01.04"

in运算符

有时,一个元组的元素会比较多,如果我们想要寻找某数据是否在元组中,用直接观察费时费力。对于元组这样的数据结构(不限于元组),in运算符可以帮助我们进行快速判断。

in运算判断左边是否在右边之内,返回布尔值(True/False)。

如:

alphabet=("a","b","c","d","e","f","g","h","i")
b="c" in alphabet
print(b)

output
>>>True

第一行,我们定义了元组alphabet,储存了9个数据。第二行,我们使用in运算,判断"c"是否在元组中,并将结果赋值给变量b,最后一行输出变量b。最终程序会输出True。

常见报错

使用元组时,大家自然避免不了一些报错,下面是一些常见的报错整理:

  1. 超出范围

eg1.

number = (1,2,3,4,5,6)
print(number[6])

output
>>>Traceback (most recent call last):
>>>    File "", line 2, in 
>>>IndexError: tuple index out of range

我们先阅读报错内容:

Traceback (most recent call last):——表示出现报错

File "", line 2, in ——表示错误出现位置,这里在line2(第二行)

IndexError: tuple index out of range——具体报错内容

这里错在哪里呢?

IndexError,表示索引错误,out of range(超出范围)则是错误原因。

原来这个元组只有6个数据,不会存在索引number[6]的,只需要更改索引,就可以避免这样的报错。

  1. 括号错误

eg2.

number = (1,2,3,4,5,6)
print(number(6))

output
>>>Traceback (most recent call last):
    File "", line 2, in 
TypeError: 'tuple' object is not callable

同上,我们阅读完报错内容后,发现了问题。这是类型错误,元组是不可调用的。这经常是由括号的错误使用造成的。阅读程序后发现这是索引的中括号变成了小括号造成的,更改即可。

  1. 灵活多变的列表

列表是最常用的 Python 数据类型,它可以作为一个方括号内的逗号分隔值出现。如:

lis=[1,2,3,4]

像这样,我们就创建了一个列表。

列表和元组一样,都有对应的索引和反索引。但列表是可以进行修改。

  1. 一对一的字典

你可能感兴趣的:(python零基础教程,python)