目录
一、python字面量
字面量:在代码中,被写下来的固定的值,称为字面值。
1.1、常见的路中值(数据)类型
类型 | 描述 | 说明 |
数字(Number) | 支持 -整数(int) -浮点数(fooat) -复数(complex) -布尔(boot) | 整数(int):10 ,-10 浮点数(float):13.14 ,-13.14 复数(complex):4+3j,以j结尾表示符输 布尔(bool):表达现实生活中的逻辑,即真和假,True表示真,False表示假(True本质上是一个数字记做1,False记作0) |
字符串(String) | 描述文本的一种数据类型 | 字符串(String)由任意数量的字符组成 |
列表(List) | 有序的可变序列 | Python中使用最频繁的数据类型,可有序记录一堆数据 |
元组(Tuple) | 有序的不可变序列 | 可有序记录一堆不可变的Python数据集合 |
集合(Set) | 无序不重复集合 | 可无序记录一堆不重复的Python数据集合 |
字典(Dictionary) | 无序Key-Value集合 | 可无序记录一堆Key-Value型的Python数据集合 |
1.2、字符串
字符串(string)又称文本,是由任意数量的字符如中文,英文,各类符号,数字等组成,所以叫做字符的串。
需要注意的是:Python中,字符串需要双引号("")包围起来。被双引号包围的都是字符串。
>>> name = "Alex Li" #双引号
>>> age = "22" #只要加引号就是字符串
>>> age2 = 22 #int型在这里是
>>>
>>> msg = '''My name is Alex, I am 22 years old''' #三个引号也可以表示字符型
>>>
>>> hometown = 'ShangDong' #单引号也可以
单引号,双引号区别:
单引号和双引号没有任何区别,只有下面这种情况需要注意单双引号的配合
msg = "My name is Alex , I'm 22 years old!"
多引号作用:
多引号作用就是多行字符串必须用多引号
msg = '''
今天是个好日子
今天开启py学习
py学起来很好玩
'''
print (msg)
字符串拼接
数字可以进行加减乘除等运算,字符串同样可以使用
>>> age = '22'
>>> name = 'Alex Li'
>>> name + age
>>> 'Alex Li22'
>>> name * 10
>>> 'Alex LiAlex LiAlex LiAlex LiAlex LiAlex LiAlex LiAlex LiAlex LiAlex Li'
不用尝试相减、相除、臣妾办不到呀。
注意,字符串的拼接只能是双方都是字符型,不能跟数字或其他类型拼接
>>> name = "Aliex Li"
>>> age = 23
>>>
>>> type(name),type(age)
(<class 'str'>, <class 'int'>)
#name是字符型 age是整形
>>>
>>> name + age
#报错信息
Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
name + age
TypeError: can only concatenate str (not "int") to str
1.3、布尔类型
布尔类型很简单,就两个值,一个True(真),一个False(假),主要用作逻辑判断。
但对于初学者并不是很明白这句话说明意思,简单说,我现在有两个值,a=3,b=5我说a>b你说成立吗?结果肯定是不成立,但是计算机怎么去描述这不成立呢?或者说a<b是成立,计算机怎么描述这个公式是成立的呢?
答案肯定是,用布尔类型
>>> a=3
>>> b=5
>>> a<b
True
>>> a>b
False
计算机为什么要描述这种条件呢?因为接下来就可以根据条件结果来干不同的事,比如:
a=4
b=5
if a > b :
print ("a is bigger then b")
else :
print("a is small than b")
1.4、列表(list)
如果要把全班的人名都在内存里存下来,用上面的字符串类型可以做到,但是取的时候不方便
name = "alex,zhangsan,lisi,wangwu,jack"
print(name)
names = ["alex","zhangsan","lisi","wangwu","jack"]
print(names[2]
print(name)它打印所有人的信息,如果要想单独去除lisi,这里用列表(示例的第二种方法)
因为列表是通过下标来标记元素位置的,下标来标记元素位置的,下标也可称为索引。下标从0开始,每添加一个元素,就自动+1
元素名 | alex | zhangsan | lisi | wangwu | jack |
下标(索引) | 0 | 1 | 2 | 3 | 4 |
元素添加(插入与追加)
names = ["alex","zhangsan","lisi","wangwu","jack"]
#元素插入
names.insert(3,"小明") #3代表你想插入的下表位置
print(names)
#元素追加
names.append("小强") #append添加到列表的尾部
print(names)
列表的修改
直接根据下表找到元素重新赋值即可
names = ["alex","zhangsan","lisi","wangwu","jack"]
print(names)
#列表的修改
names[0] = "小赤"
print(names)
删除元素
有两种方法删除方法:
一:元素删除:
#元素值删除
names = ["alex","zhangsan","lisi","wangwu","jack"]
print(names)
#删除元素
names.remove("alex") #通过指定元素名删除,会删除从左边开始找到的第一个小明,如果有多个小明就删除找到的第一个
print(names)
二:下标删除
names = ["alex","zhangsan","lisi","wangwu","jack"]
print(names)
#下标删除元素
del names[0] #通过指定下标删除
print(names)
判断某匀速是否在列表里
names = ["alex","zhangsan","lisi","wangwu","jack"]
print(names)
if ("alex" in names): #判断alex是否在数组names里,主要是通过("alex" in names)来判断
print("true")
else:
print(false)
二、运算符
计算机可以进行的运算很多种,可不知加减乘除怎么简单,运算按种类可分为算术运算,比较运算,逻辑运算,赋值运算,成员运算,身份运算,位运算,今天我们暂时只讲算术运算,比较运算,逻辑运算,赋值运算,成员运算。
2.1、算术运算符
预先设置变量:a=10 b=20
运算符 | 描述 | 实例 |
+ | 加-两个对象相加 | a+b输出结果30 |
- | 减-得到符输或是一个数减去另一个数 | a-b输出结果-10 |
* | 乘-两个数相乘或是返回一个被重复若干次的字符串 | a*b输出结果200 |
/ | 除-两数相除 | b/a输出结果为2 |
% | 取余(模)-返回除法的余数 | b%a输出结果为0 |
** | 幂-返回x的y次幂 | a**b为10的20次方 |
// | 取整数-返回商的整数部分 | 9//2输出结果4 |
2.2、比较运算符
预先设置变量:a=10 b=20
运算符 | 描述 | 实例 |
== | 等于-比较对象是否相等 | (a==b)返回false |
!= | 不等于-比较两个对象是否不相等 | (a!=b)返回true |
<> | 不等于-比较两个对象是否不相等 | (a<>b)返回true |
> | 大于-返回x是否大于y | (a>b)返回false |
< | 小于-返回x是否小于y。所有的比较运算符返回1表示真,返回0表示假,这分别与特殊的变量True和False等价。注意,这些变量名大写 | (a<b)返回true |
>= | 小于等于-返回x是否大于等于y | (a>=b)返回false |
<= | 小于等于-返回x是否小于等于y | (a<=b)返回true |
2.3、赋值运算符
运算符 | 描述 | 实例 |
= | 简单的赋值运算符 | c=a+b将a+b的运算结果赋值给c |
+= | 假发赋值运算符 | c+=a等效于c=c+a |
-= | 减法赋值运算符 | c-=a等效于c=c-a |
*= | 乘法赋值运算符 | c*=a等效于c=c*a |
/= | 除法赋值运算符 | c/=a等效于c=c/a |
%= | 取模赋值运算符 | c%=a等效于c=c%a |
//= | 取整数赋值运算符 | c//=a等效于c=c//a |
**= | 幂赋值运算符 | c**=a等效于c=c**a |
2.4、逻辑运算
a=10 b=20
运算符 | 描述 | 实例 |
and | 判断多个条件均为真事时,返回真 | a>10 and b>10 返回false |
or | 判断多个任意一个为真时,返回真 | a>10 or b>10 返回true |
not | 取反 | not a>b 返回为true |
2.5、成员运算
运算符 | 描述 | 实例 |
in | 如果在指定的序列中找到值返回true | x在y序列中,如果x在y序列中返回true |
not in | 如果在指定的序列中没有找到返回true | x不在y序列中,如果x不在y序列中返回true |
三、读取用户输入
若你的程序要接收用户指令,可以用input语法:
name = input("What is you name? ")
print("Hello " + name)
执行脚本就会发现,程序会等待你输入姓名后再往下继续走。
可以让用户输入多个信息,如下。
name = input("what's you name? ")
age = input("how old are you? ")
hometown = input("where is your hometown? ")
print("Hello",name,"your are",age,"years old,you come from",hometown)
四、格式化打印
现在有一个需求,问用户的姓名、年龄、工作、爱好,然后打印成一下格式
------------ info of Alex Li ----------
Name : Alex Li
Age : 22
job : Teacher
Hobbie: girl
------------- end ----------------
其实也结合上面很简单
name = input("Name:")
age = input("Age:")
job = input("Job:")
hobbie = input("Hobbie:")
info = f''' ------------ info of {name} -----------
Name : {name}
Age : {age}
job : {job}
Hobbie: {hobbie}
------------- end ----------------'''
print(info)
五、流程控制之if...else....
只需要在程序里预设一些条件判断语句,满足哪个条件完成什么操作,这个过程就是流程控制。
5.1、单分支
if 条件: #if后加.是固定语法
满足条件后要执行的代码
salary = 100
if salary>50:
print("super big")
5.2、双分支
if 条件:
满足条件执行代码
else:
if条件不成立就走这段代码
salary = 30
if salary>50:
print("super big")
else:
print("not so big")
5.3、缩进
你会发现,上面的if代码里,每个条件的下一行都缩进4哥空格,这是为什么呢?这就是python一大特色,强制缩进,目的是为了让程序知道,每段代码依赖哪个条件,如果不通过缩进来区分,程序怎么会知道,当你的条件成立后,去执行哪些代码呢?
在其他语言里,大多通过{}来确定代码块,比如c,c++,java,javascripts,以下就是一个javascripts的例子
var age = 56
if (age<50){
console.log("还能折腾")
console.log('可以执行多行代码')
}else{
console.log('太老了')
}
在有{}来区分代码块的情况下,缩进的作用就只剩下让代码变的整洁了
Python是们超级简洁的语言,发明者肯定是觉得用{}太丑了,所有索性直接不用它,那怎么能区分代码块呢?答案就是强制缩进。
5.4、多分支
if 条件:
满足条件执行代码
elif 条件: #else if ...
满足条件执行代码,前提是上一层的elif条件不满足
elif 条件: #else if ...
满足条件执行代码,前提是上一层的elif条件不满足
else:
if条件不成立就走这段代码
number = int(input("输入成绩:"))
if number>0 and number<39:
print("这成绩再不学习就只能搬砖了")
elif number>40 and number<59:
print("这成绩补补还有救")
elif number>60 and number<79:
print("成绩良好")
elif number>80 and number<89:
print("成绩优秀")
elif number>90 and number<100:
print("成绩相当好")