本章内容

  1. 数据类型
  2. 数据运算
  3. 表达式 if ...else 语句
  4. 表达式 for 循环
  5. 表达式 while 循环

一、数据类型

  在内存中存储的数据可以有多种类型。

  在 Python 有五个标准的数据类型

  1. Numbers (数字)
  2. String (字符串)
  3. List (列表)
  4. Tuple (元组)
  5. Dictionnary (字典)

数字

  Python 支持四种不同的数字类型

  • int (有符号整数)
  • long (长整型)
  • float (浮点型)
  • complex (复数)

字符串

  字符串或串(String)是由数字、字母、下划线组成的一串字符。

  1. print("我爱你,我的国!")

  这里说一下字符串拼接,在第一章的时候最后一张图显示出字符串拼接。这里我们演示一下怎么用,先看个简单的程序如下:

  1. #班里面有10人,来了5人,现在有多少人?
  2. student_number=10
  3. come_number=5
  4. new_number=student_number+come_number
  5. print("班级现有",new_number,"人") # 没用字符串拼接
  1. #班里面有10人,来了5人,现在有多少人?
  2. student_number=10
  3. come_number=5
  4. new_number=student_number+come_number
  5. print("班级现有"+str(new_number)+"人") #采用字符串拼接

  这里面new_number 数据类型是 int 类型,要通过 str() 转换成字符串(详见第一章介绍)。然后通过 + 号进行拼接

列表

  List(列表) 是 Python 中使用最频繁的数据类型。

  基本操作:

    • 索引
    • 切片
    • 追加
    • 删除
    • 长度
    • 切片
    • 循环
    • 包含
  1. a = ["","","",""]
  2. b = a[1]
  3. c = a[0]
  4. d = a[1:3] #提取列表中 a[1]和a[2] 用到切片功能,后面在详细的学
  5. print(b) #b = 2
  6. print(c)
  7. print(d) #d = ["2","3"]

元组

  元组是另一个数据类型,类似于List(列表)。

  元组用"()"标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表。

  创建元组

  1. age=(11,12,13,43,33,23)
  2. print(age)

 字典

  字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型。列表是有序的对象集合,字典是无序的对象集合。

  两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

  字典用"{ }"标识。字典由索引(key)和它对应的值value组成。

  1. person={"name":"xp","age":24}
  2. print(person)

更多内容:猛戳这里

二、数据运算

  根据这几天学的和查阅资料,整理出以下几种数据运算,当然有些我自己还没练习,先整理出来,后面用到再重点介绍。

 算术运算

运算符 描述 实例
+ 加——两个数相加 a=1  b=2    a+b 输出结果为 3    
- 减——两个数相减 a=4  b=2    a-b 输出结果为 2 
* 乘——两个数相乘 a=1  b=2    a*b 输出结果为 2 
/ 除——两个数相除 a=4  b=2    a/b 输出结果为 2
% 取模——返回除法的余数 a=5  b=2    a%b 输出结果为 1
// 整除——返回商的整数部分 a=5  b=2    a//b 输出结果为 2
** 幂——返回x的y次幂 a=5  b=2    a**b 输出结果为 25

比较运算

运算符 描述 实例
== 等于——比较对象是否相等 a=1  b=2  a==b 返回false
!= 不等于——比较两个对象是否不相等 a=1  b=2  a==b 返回True
> 大于——比较两个对象谁大 a=1  b=2  a>b 返回false
< 小于——比较两个对象谁小 a=1  b=2  a<b 返回ture
>= 大于等于——比较两个对象的关系 a=1  b=2  a>=b 返回false
<= 小于等于——比较两个对象的关系 a=1  b=2  a<=b 返回false

逻辑运算符

运算符 描述 实例
and a=false  b=ture   a and b =false
or a=false  b=ture   a or b =ture
not a=false  b=ture   nat(a and b) =ture

逻辑运算符真值表

  and 真值表

and

1

0

1

1

0

0

0

0

  or 真值表

or

1

0

1

1

1

0

1

0

not 真值表

not

1

0

0

1

赋值运算符

运算符 描述 实例
= 简单的赋值运算符 a=3 b=a   b 的输出结果为 3
+=  加法赋值运算符 a=3  c=1  a+=c   a 的输出结果为 4     等价于a=a+c
-=  减法赋值运算符 a=3  c=1  a-=c   a 的输出结果为 2     等价于a=a-c
*=  乘法赋值运算符 a=3  c=2  a*=c   a 的输出结果为 6     等价于a=a*c
/=  除法赋值运算符 a=4  c=2  a/=c   a 的输出结果为 2     等价于a=a/c
%=  取模赋值运算符 a=9  b=5  a%=b  a 的输出结果为 4    等价于a=a%b
//=  整除赋值运算符 a=49  b=5  a//=b  a 的输出结果为 9    等价于a=a//b
**=  幂赋值运算符 a=2  b=3  a**=b  a 的输出结果为 8    等价于a=a**b

位运算

运算符 描述 实例
& 按位 与 运算符 a=11  b=2   (a&b)=2     二进制:0000 0010
| 按位 或 运算符 a=11  b=2   (a|b)=11    二进制:0000 1011
^ 按位 异或 运算符 a=11  b=2   (a^b)=9     二进制:0000 1001   (取不相同的位)
~ 按位 取反 运算符 a=11   (~a)=-12     二进制:1000 1100
<< 左移动运算符 a=11  (<<a) =22    二进制:0001 0110
>> 右移动运算符 a=11  (<<a) =5     二进制:1000 0101

  注意:按位 午饭运算符,高位为1符号位为1为负数,负数在计算机以反码形式存储,反码 = 二进制取反(符号位不变)+1。所以 a = 11 二进制位:0000 1011

取反后为:1111 0100  ——> 1111 0100-1 = 1111 0011 ——> 取反: 1000 1100 = -12

  问题:a = 11 c=a>>1  那么 a 的最低位移到高位上,后面的一次向右挪一位,那么高位上位1,为什么不是负数呢?结果却是5, 二进制位: 1000 0101

运算符优先级

运算符 描述
** 指数 (最高优先级)
~ + - 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@)
* / % // 乘,除,取模和取整除
+ - 加法减法
>> << 右移,左移运算符
& 位 'AND'
^ | 位运算符
<= < > >= 比较运算符
<> == != 等于运算符
= %= /= //= -= += *= **= 赋值运算符
is is not 身份运算符
in not in 成员运算符
not and or 逻辑运算符


更多内容:
猛戳这里

三、表达式 if ...else 语句

 缩进:缩进级别必须保持一致

  Tab 键 != 4个空格

  IndentationError: expected an indented block  语法错误

实例一:猜数字

  1. ge_of_princal = 56
  2. guess_age = int(input(">>:"))
  3. if guess_age == age_of_princal:
  4. print("yes")
  5. elif guess_age > age_of_princal:
  6. print("太大了,往小的猜")
  7. else:
  8. print("太小了,往大的猜")

 实例二:成绩等级划分

  1. score = int(input("score:"))
  2.  
  3. if score > 90:
  4. print("A")
  5. elif score > 80:
  6. print("B")
  7. elif score > 70:
  8. print("C")
  9. elif score > 50:
  10. print("D")
  11. else:
  12. print("退学吧")

实例三:比较大小

  1. #比较三个数的大小
  2.  
  3. max_number = 0
  4. number1 = int(input("number1="))
  5. number2 = int(input("number2="))
  6. number3 = int(input("number3="))
  7. if number1 > number2:
  8. max_number = number1
  9. if max_number > number3:
  10. print("最大值为:",max_number)
  11. else:
  12. max_number = number3
  13. print("最大值为:",max_number)
  14. else:
  15. max_number = number2
  16. if max_number > number3:
  17. print("最大值为:",max_number)
  18. else:
  19. max_number = number3
  20. print("最大值为:",max_number)

四、表达式 for 循环

  for x in ...:

  1. name=['xp','qa','ws','ed']
  2. x=0
  3. for x in name:
  4. print(x)

  执行这段代码,会依次打印 name 的每个元素

  1. xp
  2. qa
  3. ws
  4. ed

  比如我们想计算1-100的整数之和,从1写到100有点困难,利用 Python 提供的 range() 函数,可以生成一个整数序列,再通过 list() 函数转换成 list 。

  1. sum=0
  2. x=1
  3. for x in range(101): # range() 函数生成(0,100)整数序列
  4. sum=sum+x #这里一定要注意缩进
  5. print(sum)

  range() 函数 可以生成一个整数序列,通过 list() 函数转换成 list (列表)

  比如:生成一个数列 [0,1,2,3,4]

  1. list_number=list(range(5))
  2. print(list_number)

  代码打印结果:

  1. [0,1,2,3,4]

  如果生成1~100之间的奇数怎么实现呢?

  1. for i in range(1,101,2):
  2. if i % 2 ==1:
  3. print("loop:",i)

  也可以利用步长来实现:

  1. for i in range(1,101,2):
  2. print("loop:",i)

五、表达式 while 循环

  实例:编写一个登陆接口,输入用户名和密码,认证成功后显示欢迎信息;输错三次后程序退出,不能再输入密码。

  1. n = 3
  2. user_name = "li"
  3. pass_name = ""
  4. while n>0:
  5. name = input("请输入用户名:")
  6. password=input("请输入用户名密码:")
  7. if name == user_name and password == pass_name:
  8. print("欢迎进入....")
  9. break
  10. else:
  11. n=n-1
  12. if n==0:
  13. print("该用户名被锁定")
  14. else:
  15. print("密码输入错误,还有", n, "次机会")

  while 的另外一种程序,附带解释图

  1. _user = "li"
  2. _passwd = ''
  3. counter = 0
  4. while counter <3:
  5. username = input("Username:")
  6. password = input("Passworld:")
  7. if username == _user and password == _passwd:
  8. print("Welcome %s login...."%_user)
  9. break
  10. else:
  11. print("Invalid username or password!")
  12. counter += 1
  13. else:
  14. print("你行不行啊")

  上面程序是利用while循环实现,这里我们用for循环试试

  1. _user_name = "xp"
  2. _user_password = ""
  3. for i in range(3):
  4. user_name = input("User_name:")
  5. user_password = input("User_password:")
  6. if user_name == _user_name and user_password == _user_password:
  7. print("Welcome login....")
  8. break
  9. else:
  10. print("Invalid username or password!")

  实例打印1~100之间的偶数部分

  1. #打印1~100之内的偶数部分
  2. even_number = 1
  3. while even_number <= 100:
  4. even_number +=1
  5. if even_number % 2 == 0:
  6. print(even_number)

  未完待续........

  有什么不对的地方请大家多多指教,相互交流学习。尽量将自己学会的通过博客给大家展示出来,也希望大家不要着急。

大家也可以关注我的博客与我互动学习、交流。

Python 学习第二章的更多相关文章

  1. python学习第二讲,pythonIDE介绍以及配置使用

    目录 python学习第二讲,pythonIDE介绍以及配置使用 一丶集成开发环境IDE简介,以及配置 1.简介 2.PyCharm 介绍 3.pycharm 的安装 二丶IDE 开发Python,以 ...

  2. python学习第二次笔记

    python学习第二次记录 1.格式化输出 name = input('请输入姓名') age = input('请输入年龄') height = input('请输入身高') msg = " ...

  3. oracle学习 第二章 限制性查询和数据的排序 ——03

    这里.我们接着上一小节2.6留下的问题:假设要查询的字符串中含有"_"或"%".又该如何处理呢? 開始今天的学习. 2.7  怎样使用转义(escape)操作符 ...

  4. Python学习-第二天-字符串和常用数据结构

    Python学习-第二天-字符串和常用数据结构 字符串的基本操作 def main(): str1 = 'hello, world!' # 通过len函数计算字符串的长度 print(len(str1 ...

  5. [Python笔记][第二章Python序列-复杂的数据结构]

    2016/1/27学习内容 第二章 Python序列-复杂的数据结构 堆 import heapq #添加元素进堆 heapq.heappush(heap,n) #小根堆堆顶 heapq.heappo ...

  6. [Python笔记][第二章Python序列-tuple,dict,set]

    2016/1/27学习内容 第二章 Python序列-tuple tuple创建的tips a_tuple=('a',),要这样创建,而不是a_tuple=('a'),后者是一个创建了一个字符 tup ...

  7. [python笔记][第二章Python序列-list]

    2016/1/27学习内容 第二章 Python序列-list list常用操作 list.append(x) list.extend(L) list.insert(index,x) list.rem ...

  8. python学习第二天 -----2019年4月17日

    第二周-第02章节-Python3.5-模块初识 #!/usr/bin/env python #-*- coding:utf-8 _*- """ @author:chen ...

  9. Asp.Net MVC4 + Oracle + EasyUI 学习 第二章

    Asp.Net MVC4 + Oracle + EasyUI 第二章 --使用Ajax提升网站性能 本文链接:http://www.cnblogs.com/likeli/p/4236723.html ...

随机推荐

  1. [Hbase]Hbase章3 Hbase单点故障

    很长一段时间以来,一个region同一时间只能在一台RS(Region Server)中打开.如果一个region同时在多个RS上打开,就是multi-assign问题,会导致数据不一致甚至丢数据的情 ...

  2. SecureCRT乱码解决

    本文不涉及编码,只说明ssh问题产生的乱码 如果终端中输出以下字符,就会出现乱码 echo -e '\xe' 还有 ctrl+v,ctrl+n也能产生乱码 恢复方法 echo -e '\xf'

  3. Asterisk 的安全性

      設置 Asterisk 的安全性 (security) 转载http://www.osslab.com.tw/index.php?title=VoIP/IP_PBX/%E8%BB%9F%E9%AB ...

  4. 【转载】 了解实时媒体的播放(RTP/RTCP 和 RTSP)

    http://blog.csdn.net/span76/article/details/12913307 离线媒体只是用 Http协议去读取服务器端文件而已,而对于实时直播如何实现, 这里就要用到 R ...

  5. spring学习 十八 spring的声明事物

    1.编程式事务: 1.1 由程序员编程事务控制代码.commit与rollback都需要程序员决定在哪里调用,例如jdbc中conn.setAutoCimmit(false),conn.commit( ...

  6. Linux mount命令

    mount 1.作用 mount命令的作用是加载文件系统,它的用权限是超级用户或/etc/fstab中允许的使用者. 2.格式 mount -a [-fv] [-t vfstype] [-n] [-r ...

  7. JS高级-Date- Error-***Function:

    1. Date: API: 1. 8个单位: FullYear   Month   Date   Day Hours     Minutes   Seconds   Milliseconds 2. 每 ...

  8. Python-IDLE实现清屏

    1.将下面文件复制到命名为ClearWindow.py的文件下,移动到 …Python\Python36-32\Lib\idlelib下. ############################## ...

  9. Codeforces Round #538 (Div. 2) F 欧拉函数 + 区间修改线段树

    https://codeforces.com/contest/1114/problem/F 欧拉函数 + 区间更新线段树 题意 对一个序列(n<=4e5,a[i]<=300)两种操作: 1 ...

  10. mysql (_mysql_exceptions.OperationalError) (1055, "Expression #1 of SELECT list is not in GROUP BY clause

    sudo gedit /etc/mysql/my.cnf在打开的my.cnf文件中添加 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 保存,退 ...