Day 09:Python基本介绍02 | 变数、资料型态

⚠行前通知

考量到有些人可能还没学过Python,然後我的主题又是定为从HTML到Python爬虫的30天之旅,所以没办法,虽然简单还是要交,因此接下来几天我会用很基础的角度来介绍Python,已经学过Python的人可能会觉得有点无聊,这部分可以先跳过,等到开始讲爬虫的部分再回来也没关系(目前暂定是第13天的时候)。

预防针已经先打好了,那我们就开始吧!

输出

稍微复习一下昨天的程序码:

print("Hello Python!")

昨天说过,print()是Python原本就有的函数,可以将()中的内容印在终端机(terminal)上。

变数

变数是存取资料数值的容器,Python和C语言不同,不需要事先宣告变数的资料型态,而是在初次赋予值的时候决定。

# demo01
name = "Andy"
age = 20

print(name)
print(age)

执行结果:

Andy
20

这时候name变数的值就是"Andy",而age变数的值就是20,这个值之後是可以改变的。

也可以将变数印在一起,像是这样:

# demo02
print("Hi! My name is "+name+", and I am "+age)

执行结果:

Traceback (most recent call last):
  File "d:\2021-IT-30days\Code\Day 09\02.py", line 4, in <module>
    print("Hi! My name is "+name+", and I am "+age)
TypeError: can only concatenate str (not "int") to str

咦? 可是怎麽跑出了错误讯息呢? 讯息的意思是 "只能str可以连接str(而不是int)",这是什麽意思呢? 这部分就不得不提到资料型态了。

资料型态

对学习程序语言来说,资料型态是相当重要的观念。一个变数只能是一种资料型态,而不同的资料型态可以做不同的事,并有不同的特性。

Python内建的资料型态大致可以分为三种:

  • 文字:str (字串)
  • 数字:int (整数), float (浮点数)
  • 布林值:bool (真or假)

前面说过Python是在初次赋予值的时候决定变数的资料型态,所以是什麽资料型态取决於=之後的值。

使用type()函数可以显示变数的资料型态为何。

# demo03
a = 5
b = "Hello"
c = 0.15
d = True

print(type(a))
print(type(b))
print(type(c))
print(type(d))

执行结果:

<class 'int'>
<class 'str'>
<class 'float'>
<class 'bool'>

资料型态转换 (Casting)

将变数强制转成我们要的变数型态。

  • int():将任何的资料型态转为int
  • float():将任何的资料型态转为float
  • str():将任何的资料型态转为string

回到前面出错的例子(demo02),之所以会出错是因为+只能连接字串和字串,而不能字串和数字,所以解决办法很简单,就是将整数转为字串就好了。

# demo04
print("Hi! My name is "+name+", and I am "+str(age))

执行结果:

Hi! My name is Andy, and I am 20

输入

input()函数会将读取你在终端机输入的内容,而且一律存为字串型态。

另外,可以在()中加入提示,提示的文字会显示在你的输入的前面。

# demo05
a = input()
b = input("Enter something! ")

print(a)
print(b)
print(type(a))
print(type(b))

执行结果:

>> 123
>> Enter something! asd
123
asd
<class 'str'>
<class 'str'>

现在你可以让demo04变得更好!

# demo06
name = input("Enter your name: ")
age = input("Enter your age: ")

print("Hi! My name is "+name+", and I am "+age)

执行结果:

>> Enter your name: Andy
>> Enter your age: 20
Hi! My name is Andy, and I am 20

这边有一个小问题要问你们,刚才的age要使用str()转成字串型态,为什麽这里就不用了呢? 好好想一下并把答案写在留言区吧!

字串

字串前面已经出现过了,但现在要讲字串使用上更多的技巧。

字串长度

使用len()得到字串的长度,回传的是一个数字。

第n个字元

将字串视为一个由字元所组成的列表(明天就会讲),每个数字都有索引值,索引值从0开始。

如果要取得第n个字元的话,就是str[n-1]

切割字串

str[n:m]可以切割从n到m-1的子字串。

取代字串

str.replace("A", "B")将字串中所有的"A"都取代成"B"。

分割字串

str.split(",")用逗号将字串分割成好几个小区块,并回传一个字串的阵列。

连接字串

A+B可以连接A和B字串。

# demo07
a = "Why not to learn "
b = "Python?"

print(len(a))
print(a[2])
print(a[4:7])
print(a.replace("learn", "teach"))
print(a.split(" "))
print(a+b)

执行结果:

17
y
not
Why not to teach
['Why', 'not', 'to', 'learn', '']
Why not to learn Python?

数学运算子

数学运算子可以对数字型态的变数作简单的数学运算,基本上就是你国小就会的加减乘除。

  • +:加法
  • -:减法
  • *:乘法
  • /:除法
  • %:取余数
  • **:次方
# demo08
x = 12
y = 4

print("x+y = "+str(x+y))
print("x-y = "+str(x-y))
print("x*y = "+str(x*y))
print("x/y = "+str(x/y))
print("x%y = "+str(x % y))
print("x**y = "+str(x**y))

执行结果:

x+y = 16
x-y = 8
x*y = 48
x/y = 3.0
x%y = 0
x**y = 20736

注解

不管是什麽程序语言,写注解都是一个好习惯,不但可以帮助你日後看得懂当初在写什麽东西,也可以避免被同事白眼w

Python有两种注解,分别是单行和多行注解,功能上大同小异。

# 这是单行注解

"""
这是多行注解
"""

小结

今天开始Python基础教学,从一开始的变数和资料型态,到後来的字串和数学运算子。因为篇幅的关系,你可能会觉得今天教的东西有点杂,但这其实是为了让你更快速的熟悉Python的语法哦!

明天要教的是Python的四种Collections,是非常好用的资料容器哦! 到底是哪四种呢? 就让我们继续 看 下 去~

一不小心发现Python有太多东西可以写了,所以Python的介绍应该会往後延长一天,对期待Python爬虫的朋友说声抱歉?。


如果喜欢这系列文章麻烦帮我按Like加订阅,你的支持是我创作最大的动力~

本系列文章以及范例程序码都同步更新在GitHub上,後续会持续的更新,如果喜欢也麻烦帮我按个星星吧~

有任何问题或建议,都欢迎在底下留言区提出,还请大家多多指教。


<<:  Day 9 运算宝石:EC2 重点架构

>>:  Day 01-AWS Solution Architect Associate的铁人之旅行前会

Day6 开机学习 Lua - 标准函式库

Day6 开机学习 Lua - 标准函式库 上一回分享的是,Lua 变数型别与宣告 今天主题则是 L...

Day 5 韧体的烧录及可靠性

目前嵌入式软件,大部分都是烧录在DDR或SDRAM上面,过去的韧体烧录,非常麻烦,常常会失败,目前大...

html的开始、让网页出现文字

开启visual studio code并且新增一个档案,将档案储存为html档,接下来在档案内输入...

老师!我想知道!如果只使用原生的终端机要怎麽客制化 Prompt 呢!

这篇文章是来自同事的许愿,到底能不能不要安装那些 iTerm2、zsh、oh-my-zsh、字型等等...

Image Compression - JPEG

JPEG概述 Joint Photographic Expert Group在1992年被评为国际标...