一、if判断
1、入门
python是一个强制缩进型的语言,不信的话可以参考下下面的代码
1 #!/user/bin/env python
2 #-*- coding: utf-8 -*-
3 user = 'monkey'
4 passwd = '124555'
5
6 username = input("username:")7 password = input("password:")8
9 if user ==username:10 print("username is correct...")11 if passwd ==password:12 print("Weclome...")13 else:14 print("password is invalid...")15 else:16 print("哈哈哈哈哈,傻了吧,用户名错了啦。。。")
一般我们在输入账号、密码之后,需要进一步的判断输入的账号、密码是否正确的;此时,我们需要先定义一组正确的user、passwd作为参照是否为正确的,定义的username、password是我们输入的账号
==
等于(在判断语句中,如果要判断所输入的值是否跟正确的标准值是否相等的话需要用双等号)
=
赋值 (赋值关系,并非判断是否相等)
从属关系:如上代码,if跟print之间是属于从属关系(python是一个强制缩进型的语言,有时候很多报错都是因为缩进问题,所以!!!敲黑板....写代码的时候要注意下缩进问题好伐?),python判断是否是从属关系也是根据缩进来判断的,如果上面的print没有缩进的话,跟上面if判断就完全没关系啦。
整体流程如下:(用户输入用户名、密码,进入以下判断)
注意点⚠️:在if判断或者是else判断的都要加冒号(:)
2、优化程序--一条语句多个判断
#!/user/bin/env python#-*- coding: utf-8 -*-
user = 'monkey'passwd= '124555'username= input("username:")
password= input("password:")if user == username and password ==passwd:print("Welcome...")else:print("Invalid username or password...")
and :与判断
流程如下图所示:(用户输入用户名和密码)
3、多重判断--elif
#!/user/bin/env python#-*- coding: utf-8 -*-
age = 20guess_num= int(input("input your guess num:"))if guess_num ==age:print("Congratulations! you got it.")elif guess_num >age:print("bigger...")else:print("smaller...")
elif = else if 用于存在着三种或者是三种以上的判断情况。
只有执行一次判断一次而已,如果想要重复循环判断的话参照下面的for循环例子
elif可以是多个,但是一个if只能对应一个else
二、for循环
1、基本语法
for i in range(10):print(i)
range(10): 表示循环10次,i 如果没有定义的话,默认从0开始每执行一次自增1(1++),打印出来的结果如下所示:
2、应用--将上面的guess age游戏优化
例子1:循环10次guess age 游戏(即使猜对了也不会跳出循环)
age = 20 #age是固定的参照标准,所以不用在for循环里面进行循环,故写在for循环的外面
for i in range(10):
guess_num= int(input("input your guess num:"))if guess_num ==age:print("Congratulations! you got it.")elif guess_num >age:print("bigger...")else:print("smaller...")
例子2:优化例子1,如果年纪输入对了的话就跳出循环,不再循环输入下去。
break 语法:中止、退出。
age = 20
for i in range(10):
guess_num= int(input("input your guess num:"))if guess_num ==age:print("Congratulations! you got it.")break #如果遇到break之后就跳转整个loop(循环),不再往下走
elif guess_num >age:print("bigger...")else:print("smaller...")
例子3:在range10次的情况下,限制输入的次数只能是输入5次,如果超过5次输入错误的话则退出,不能再输入
#!/user/bin/env python#-*- coding: utf-8 -*-
age = 20
for i in range(10):if i <= 4: #i是默认自增1的,所以可以当做次数来做参考
guess_num= int(input("input your guess num:"))if guess_num ==age:print("Congratulations! you got it.")break
elif guess_num >age:print("bigger...")else:print("smaller...")else:print("game over!")break #超过5次的话就退出循环,并且打印出来game over!
例子4:每循环3次问用户是否想要继续游戏,如果用户想要再继续的话就继续游戏,大于10次之后退出--糟糕的例子
#!/user/bin/env python#-*- coding: utf-8 -*-
age = 20
for i in range(10):print('new i2',i)if i <= 4:
guess_num= int(input("input your guess num:"))if guess_num ==age:print("Congratulations! you got it.")break
elif guess_num >age:print("bigger...")else:print("smaller...")else:
continue_confirm= input("Do you want to continue?")if continue_confirm == "y":i=0print('new i1',i)else:print("game over!")break
执行结果如下图所示:
根据上面的截图,我们打印出来的new i1跟new i2是不一样的,因为 for i in range(10):中的i是根据range(10),每次执行一次的话都会从range(10)中减1,而不会根据我们定义的new i1来表示为执行的次数,所以当第6次的时候,i2还是等于6,会选择直接跳出循环
例子5:
#!/user/bin/env python#-*- coding: utf-8 -*-
age = 20counter=0for i in range(10):print('-->counter:',counter)if counter <= 4:
guess_num= int(input("input your guess num:"))if guess_num ==age:print("Congratulations! you got it.")break
elif guess_num >age:print("bigger...")else:print("smaller...")else:
continue_confirm= input("Do you want to continue?")if continue_confirm == "y":counter=-1 #因为后面会执行counter+1,所以重新开始输入的时候counter默认开始的是1而不是0,会少一次,所以需要修改成-1else:print("game over!")breakcounter+= 1 #counter = counter + 1
执行结果如下:
counter += 1 与 counter = counter + 1 表示的含义都是一样的。
因为如果直接是用i的话,根据例子4运行的时候是会直接默认为每执行一次i加1的,需要重新定义一个变量counter来当计时器。
例子6:对例子5进行优化
#!/user/bin/env python#-*- coding: utf-8 -*-
age = 20counter=0for i in range(10):print('-->counter:',counter)if counter <= 4:
guess_num= int(input("input your guess num:"))if guess_num ==age:print("Congratulations! you got it.")break
elif guess_num >age:print("bigger...")else:print("smaller...")else:
continue_confirm= input("Do you want to continue?")if continue_confirm == "y":
counter=0continue #只要用户输入y 就继续执行,直接不让程序往下走了,跳出当次循环,进入到下次循环
else:print("game over!")breakcounter+= 1 #counter = counter + 1
采用continue (继续) 语句来继续操作指令。