Python程序的流程控制:
python程序是从上至下逐行执行的
一、if条件的判断
python的if语句的语法:
if 条件1:
条件1成立的情况下执行
elif 条件2:
条件2成立的情况下执行
elif 条件3:
条件3成立的情况下执行
...
else:
之前的所有条件均不成立的情况下执行
定义:if判断在程序中是用于逻辑判断的。
用以下几个例子来说明if判断的作用。
例1:Python简单的猜年龄
# 猜年龄
xiaobai_age = 18 # 先定义好一个初始值的变量
user_input = int(input("Please guess xiaobai's age:")) # 再定义一个变量,由于是要与上一个变量进行比较,所以要强制改为整型
if user_input > xiaobai_age: # 以下的逻辑判断则是在对以上的两个变量进行对比,然后作出相应的结果
print("Try smaller")
elif user_input < xiaobai_age:
print("Try bigger")
else:
print("You got it")
例2:Python简单的用户登陆
# 用户登陆
user = "xiaobai"
pwd = "123456" # 先定义好用户名和密码的变量
user_input = input("Please input your username:") # 再定义好用户输入的用户名和密码的变量
password = input("Please input your password:")
if user_input == user and password == pwd: # 将这两组变量进行对比判断
print("login successfully")
else:
print("Sorry,your username or password is wrong,please Try again!")
例3:查看成绩
# 查看成绩
user = int(input("Please input your scores:"))
# 先定义一个用户输入的变量,因为是要用于作比较,所以必须强制改为整型
# 以下是作判断
if user > 90:
print("You got an 'A'")
elif user < 90 and user > 70:
print("You got a 'B'")
elif user < 70 and user > 60:
print("You got a 'C'")
else:
print("You got a 'D'")
二、while循环
Python的while语句的语法:
while 条件:
循环体
如果条件为真,循环体则执行
如果条件为假,循环体则不执行
1、while循环
定义:while循环在程序中是用来重复干一件事情的。常见的应用场景有:比如登陆QQ时要输入账号密码
用以下几个简单的实例来说明while循环
例1:while 1:
# while循环的简单实例
while 1:
# while 1:表示条件为1时打印“OK”,
# 每打印完“OK”后又返回到起始位置再来判断条件,反复执行,这是一个死循环
print("OK")
print("1111111111")
# 所以在循环外的字符“1111111111”不会被打印
例2:while 3>2:
# while循环的简单实例
while 3>2:
# while 3>2:表示条件3>2时打印“OK”,
# 每打印完“OK”后又返回到起始位置再来判断条件,因为3永远大于2,反复执行,这又是一个死循环
print("OK")
print("1111111111")
# 所以在循环外的字符“1111111111”不会被打印
例3:while True:
# while循环的简单实例
while True:
# while True:表示条件永远为真时打印“OK”,
# 每打印完“OK”后又返回到起始位置再来判断条件,因为永远为真,反复执行,这又是一个死循环
print("OK")
print("1111111111")
# 所以在循环外的字符“1111111111”不会被打印
例4:while False:
# while循环的简单实例
while False:
# while False:表示条件不成立,则不会打印循环体内的“OK”字符,
print("OK")
print("1111111111")
# 所以在循环外的字符“1111111111”会被打印
例5:只打印9次"OK"
先来个容易让人迷惑的例子
# while循环的简单实例
count = 1
while count<10:
print("OK")
print("111111111")
# 并不是打印10次“OK”,而是一个死循环,
# 因为变量count每次循环都没有变化,都是等于1,每进入循环时都是拿1<10作比较,所以这是一个死循环
# 循环外的字符“11111111”不会被打印
若要打印9次“OK”,则将程序改为:
# while循环的简单实例
count = 1 # 先定义变量count,并赋值1
while count<10: # 设定条件,把count
print("OK",count) # 打印字符“OK”,并打印count变量每次循环的次数变化
count += 1 # 最关键的一步:将conunt自增1操作,这样每次循环的变量count的数字都会变化,直到小于10后停止循环。
print("111111111") # 以上循环停止后程序将继续执行,将会打印字符"11111111"
输出结果:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
OK 1 OK 2 OK 3 OK 4 OK 5 OK 6 OK 7 OK 8 OK 9 111111111
2、break与continue的作用
1、break
终止当前循环,跳出循环体
2、continue
终止本次循环并开始下一轮循环
打个非常通俗易懂的比方来理解break与continue的区别:
一个比较叛逆的学生在学校上课,某天因为犯了错挨了老师的骂,叛逆的他便打了老师一顿,违反了校规,被学校责令停课一天反省,第二天又继续让其上课。这就类似于循环体中的continue。
又某一天该学生又犯了错被校长训斥了,于是叛逆的他便打了校长一顿,这次严重违反了校规,直接被学校开除了,以后就不能来学校上课了。这就类似于循环体中的break。
例1:简单的用户输入命令程序
# 简单的用户输入命令的程序
user = "xiaobai"
pwd = "123456"
while True:
user_input = input("Please input your username:")
password = input("Please input your password:")
if user_input == user and password == pwd:
print("Login succefully") # 用户名密码验证成功后则进入下一个循环
while True:
res = input("Please input command:")
if res == "q":
break # 这个break表示当res变量等于q时,则退出当前循环
print("user input command is %s"%res)
break
# 这个break的意思表示当以上循环退出时,再退出当前的循环,这里可以在之前加上else:也可以不加
由于出现2个break,虽然程序没有错,但是很容易让程序员误解,这时就要用到标识位来解决这个问题,具体操作如下:
# 简单的用户输入命令的程序
user = "xiaobai"
pwd = "123456"
tag = True # 标识位,相当于生活中的红绿灯,红灯停,绿灯行,让一个变量把True存储起来
while tag: # 相当于while True,只不过是用tag变量代替了。
user_input = input("Please input your username:")
password = input("Please input your password:")
if user_input == user and password == pwd:
print("Login succefully")
while tag: # 相当于while True,只不过是用tag变量代替了。
res = input("Please input command:")
if res == "q": # 当变量res等于字符“q”时,下面是最重要的一步来了
tag = False # tag改为False,那么本次的循环就是while False了,while False的特性就是不会运行循环内的代码。
# 相当于break,直接跳出了当前循环
continue # 这里加上continue是为了不打印"q"这个命令,因为退出了程序就不需要打印了。表示跳出本次循环。
print("user input command is %s"%res)
break # 这个break表示上面的命令都执行完了则退出当前的主体循环
三、for循环
Python中for语句的语法:
for 变量名 in range(范围)
循环体
定义:和while循环一样,也是用于程序重复做某一件事
range()是内建函数,表示范围
例1:for语句的简单示例
# for 语句的简单示例
for i in range(5): # 默认从0开始,打印5次字符“OK”
print("OK",i)
输出结果:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
OK 0 OK 1 OK 2 OK 3 OK 4
例2:for语句的简单示例2
# for 语句的简单示例2
for i in range(1,5): # 表示取从1到4的范围,顾首不顾尾
print("OK",i)
输出结果:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
OK 1 OK 2 OK 3 OK 4
例3:for语句的简单示例3
# for 语句的简单示例3
for i in range(1,5,2):
# 表示取从1到4的范围,顾首不顾尾,且隔一个值取。括号中第三个数表示步长
print("OK",i)
输出结果:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
OK 1
OK 3
例4:九九乘法表
# 九九乘法表
for i in range(1,10):
for j in range(1,i+1):
print("%s*%s=%s" %(i,j,i*j),end=' ') # end是用来避免print自带的换行功能。
print() # print自带换行功能
四、小练习
1、使用while循环输出1、2、3、4、5、6、8、9、10
误区:以下是新手会常犯的错误,用最笨拙的方法:依次将count的值代入至循环体内进行反复运算,直到count的值等于7时,此时count不再作自增1的操作了,而是把count等于7的值再回到上面再继续代入至循环体内,碰到if count==7:时又跳出本次循环继续将7代入,反复如此便是死循环了。
输出结果:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 2 3 4 5 6
从输出的结果看好像只是输出了1-6的数字,实际上这是一个死循环,只需要在if count == 7:下面加上一行打印的代码就能看到效果。
解决方法:
(1)方法一:在以上代码中在if count ==7:下面插入一条count += 1即可
# 1、使用while循环输出1、2、3、4、5、6、8、9、10
count = 1
while count<11:
if count == 7:
count += 1 # 作用:当count等于7时,跳出本次循环,再自增1
continue
print(count)
count += 1
输出结果:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 2 3 4 5 6 8 9 10
(2)方法二:优化方法一的代码
# 1、使用while循环输出1、2、3、4、5、6、8、9、10
count = 1
while count<11:
if count != 7:
print(count)
count += 1
输出结果:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 2 3 4 5 6 8 9 10
2、求1-100的所有数的和
(1)方法一:用while循环实现1-100所有数的和
# 2、求1-100的所有数的和
count = 1 # 设定一个初始值
sum = 0 # 设定一个总数的初始值,用于存储总数的计算结果
while count < 101: # 设定循环1-100的范围
sum = sum + count # 让每次循环的结果相加并赋给sum
count += 1 # count自增1操作
print(sum)
输出结果:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
5050
(2)方法二:用for循环实现1-100所有数的和
sum = 0 # 设定一个总数的初始值,用于存储总数的计算结果
for i in range(1,101): # 设定循环1-100的范围
sum = sum + i # 让每次循环的结果相加并赋给sum
print(sum)
输出结果:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
5050
3、输出1-100内的所有的偶数
(1)方法一:用while循环实现1-100所有偶数的和
# 3、输出1-100内的所有的偶数
count = 1
while count<101:
if count % 2 == 0: # 取余运算,表示能被2整除
print(count)
count += 1
输出结果:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96 98 100
(2)方法二:用for循环实现1-100所有偶数的和
# 3、输出1-100内的所有的偶数
for i in range(1,101):
if i % 2 == 0:
print(i)
输出结果:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96 98 100
以上的方法中还可以将取余等于0改成取余不等于0
4、求1-2+3-4+5-6...99的所有数的和
(1)方法一:用while循环求1-2+3-4+5-6...99的所有数的和
# 4、求1-2+3-4+5-6...99的所有数的和
count = 1
sum = 0
while count < 100:
if count % 2 == 0:
sum = sum - count # 所有负偶数的和
else:
sum = sum + count # 所有奇数的和
count += 1
print(sum)
输出结果:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
50
(1)方法二:用for循环求1-2+3-4+5-6...99的所有数的和
# 4、求1-2+3-4+5-6...99的所有数的和
sum = 0
for i in range(1,100):
if i % 2 == 0:
sum = sum - i # 所有负偶数的和
else:
sum = sum + i # 所有奇数的和
print(sum)
5、简单的用户登陆(三次机会重试)
关于这一题,有很多种方法,下面我就以我的思路来解题。
(1)方法一:
# 三次登陆
user = "xiaobai"
pwd = "123456" # 这里一定要加上引号,否则程序会出错
count = 1
while True:
username = input("Please input your username:")
password = input("Please input your password:")
if username == user and password == pwd:
print("Login successfully!")
break
else:
if count >= 3:
print("Login fail,Please try again")
break
count += 1
(2)方法二:
user = "xiaobai"
pwd = "123456" # 这里一定要加上引号,否则程序会出错
count = 0
while True:
if count == 3:
print("Too many times!")
break
username = input("Please input your username:")
password = input("Please input your password:")
if username == user and password == pwd:
print("Login successfully!")
break
count += 1
五、Pycharm软件的使用
就例举pycharm中最常用的一些功能的快捷键:
1、shift + 回车键跳转至下一行
2、鼠标滚轮按住拖动不放,表示选中的轨迹同时进行编辑
3、ctrl + / 选中行注释
4、将选中的行按Tab键,相当于所选的行行首都增加了一个tab键
5、将选中的行按shift键和Tab键,相当于所选的行行首都减少一个tab键
暂时写到这里,以后有补充再加上去
六、数字和字符串类型
数据类型指的是变量的值的不同的类型,用来表示不同的状态
查看python数据类型的命令是:type()函数
查看python数据的内存地址的命令是:id()函数
1、数字类型:整型、长整型、复数、浮点型。
在Python3中已没有长整型的概念,我们要用到的最常用的就是整型和浮点型。
数字类型的特性:
<1> 只能存放一个值
<2> 一旦定义,不可更改
<3> 直接访问
数字类型的常用操作就是用来加减乘除等计算用的。
(1)整型
用 int()可以强制转换为数字类型,前提条件是字符串必须是数字,否则报错
直接定义,例如:
n = 1 # 这就定义了一个整型
# 用type(n)就可以查看到这是一个整型的数据类型
(2)浮点型
<1>直接定义,例如:
n = 1.85 # 这就定义了一个浮点型
# 用type(n)就可以查看到这是一个浮点型的数据类型
<2>补充1:
Python的科学记数法
用“e”表示的:
例如:
print(1.8e-3) # 表示1800.0
print(1,8e3) # 表示0.0018
<3>补充2:
Python实现十进制转二进制
十进制转换二进制的命令是bin()的函数
例如:
print(bin(10)) # 得到的结果是:“0b1010”,“0b”代表二进制
<4>补充3:
Python实现十进制转八进制
十进制转换八进制的命令是oct()的函数
例如:
print(oct(10)) # 得到的结果是:“0o12”,“0o”代表八进制
<5>补充4:
Python实现十进制转十六进制
十进制转换十六进制的命令是hex()的函数
例如:
print(hex(10)) # 得到的结果是:“0xa”,“0x”代表十六进制
2 、字符串类型
(1)定义:
Python中定义在引号里面的就叫做字符串类型,字符串是由一个个的字符组成的。
用 str( )可以强制转换字符类型
字符串类型的特性:
<1> 只能存放一个值
<2> 不可变
<3> 按照从左至右的顺序定义字符集合,下标从0开始顺序访问,有序
例:
s1 = 'hello world'
s2 ="hello world"
s3 = '''hello world'''
s4 = """hello world"""
(2)字符串常用的操作:
字符串的方法是在字符后加上“.”来进行操作的。
字符串常用的操作有:
移除空白 strip()
分割 : s.split("|")
长度: 例:len(s)
索引: 例:s[3]、s[-1]
切片: 例:s[0:5:2]
具体参照 http://www.cnblogs.com/xiaoxiaobai/p/7612042.html
(3)字符串的索引与切片操作:
<1>索引
用“[ ]”来对字符串进行索引操作
若中括号里的索引数为正数,则从左至右找,从0开始取
若中括号里的索引数为负数,则从右至左找,从-1开始取
若中括号里的索引数超出要取的字符串的长度,程序则会报错:IndexError: string index out of range
例:取出字母”o“
s = "xiaobai" # 数字符串“xiaobai”中的字母“o”所在的索引位置,从左至右,从0开始
print(s[3])
<2>切片
用“[:]”来对字符串进行切片操作
[:],表示取出字符串中的所有字符
[1:],表示从索位置1开始一直取到字符串最后一个字符
[:2],表示从索引位置0开始一直取到索引位置1的字符,顾首不顾尾
[2:6],表示从索引位置2开始一直取到索引位置5的字符,顾首不顾尾
[-1:],表示从取出字符串中最后一位字符
[:-1],表示取出除了字符串中最后一位字符的所有字符
[3:-2],表示从取出索引3至倒数2位置之间的字符
[1:6:2],表示取出索引1至索引5位置的字符,并且取出的字符每隔一个取一个,最后的“2”表示步长, 因为是正数,表示从左至右隔一个取
例:取出索引位置1和3所在的字母
s = "xiaobai"
print(s[1:3])