概要:
while 条件:
....
....
....
示例1:
print("123")
i = 0
while i<=10:
print(i)
i=i+1
print("end")
示例2:
print("123")
while True:
print("执行ing")
print("end")
#输出
123
执行ing
执行ing
执行ing
执行ing
....
示例3:
data = True
while data:
print("执行ing")
print("ending")
#输出
执行ing
执行ing
执行ing
执行ing
....
data = True
while data:
print("执行ing")
data = False
print("ending")
#输出
执行ing
ending
练习题:
#重复三次输出 我爱我的祖国
i=1
while i<3:
print("我爱我的祖国")
i=i+1
text = "我爱我的祖国"
print(3*text)
实现一个用户登录系统,如果用户输入的密码不正确就提示用户重新输入直到正确为止。
name = john#用户名
password = "123"#密码123
#定义用户输入变量作为用户输入密码,便于比较
user_input_password = input("请输入john的密码")
while user_input_password!=password:#若密码不对则执行循环,直至正确
print("密码错误请重新输入")
user_input_password = input("请输入john的密码")
print("登陆成功")
1.补充代码实现
猜数字,设定一个理想数字比如: 66,一直提示让用户输入数字,如果比66大,则显示猜测的结果大了﹔如果比66小,则显示猜测的结果小了;只有输入等于66,显示猜测结果正确,然后退出循环。
number =66
flag=True
while flag:
input_num = int(input("请输入数字:"))
if input_num > number:
print("大了")
elif input_num < number:
print("小了")
else:
print("结果正确")
flag=False
2.使用循环输出1~100所有整数。
i=1
while i<=100:
print(i)
i=i+1
3.使用循环输出1234568910,即:10以内除7以外的整数。
i=1
while i<=10:
if i!=7:
print(i)
i=i+1
i=1
while i<=10:
if i==7:
pass
else:
print(i)
i=i+1
4.输出1~100内的所有奇数。
i=1
while i<=100:
if i%2==1:
print(i)
i=i+1
5.输出1~100内的所有偶数。
i=1
while i<=100:
if i%2==0:
print(i)
i=i+1
6.求1~100的所有整数的和。
i=1
sum = 0
while i<=100:
sum=sum+i
i=i+1
print(sum)
7.输出10~1所有整数。
i=10
while i>0:
print(i)
i=i-1
思考题:求1~100的所有整数的这样的结果:1-2+3-4+5-6…=?
i=1
total = 0
while i<=100:
if i%2==1:
total=total+i
else:
total=total-i
i=i+1
print(total)
break,用来在while语句中终止循环,语句在执行过程中遇到break即退出循环。
示例1:
print("开始")
while True:
print ("红旗飘飘,军号响。")
break
print("剑已出鞘,雷鸣电闪。")
print("从来都是狭路相逢勇者胜。")
print ("结束")
示例2:
print("开始")
i = 1
while True:
print(i)
i=i +1
if i = 101:
break
print("结束")
示例3:
print("开始运行系统")
while True :
user = input("请输入用户名:")
pwd = input("请输入密码:")
if user =="john" and pwd = "123456" :
print ("登录成功")
break
else:
print ("用户名或密码错误,请重新登录")
print("系统结束")
主要用来结束while循环中的当前循环直接跳到下一循环。
示例1:
print("start")
while True:
print(1)
continue
print(2)
print("end")
示例2:
print("开始")
while True:
print ("红旗飘飘,军号响。")
continue
print("剑已出鞘,雷鸣电闪。")
print("从来都是狭路相逢勇者胜。")
print (结束")
示例3:
print("开始")
i =1
while i < 101:
if i ==7:
i =i +1
continue
print(i)
i=i +1
print("结束")
示例4:
print("开始")
i =l
while True:
if i =7:
i=i +1
continue
print(i)
i=i + 1
if i = 101:
break
print("结束")
当while的条件不成立的时候,else中的代码就会执行。
while 条件:
代码块
else:
代码块
num = 1
while num < 5:
print(num)
num = num + 1
else:
print(666)
#输出
1
2
3
4
666
while True:
print(num)
break
else:
print(666)
便于实现字符串的拼接
#示例一
name = "老头"
text = "我是你%s" %name
print(text)
#我是你老头
#示例二
num = 1
text1 = "1+1=%d"%num
print(text1)
#1+1=1
#示例三
num = 1.232323
text2 = "1+1=%f"%num
print(text2)
#1+1=1.232323
#示例四
num = 1.232323
text2 = "1+1=%.2f"%num
print(text2)
#1+1=1.23
#示例5
num = 1.232323
text2 = "1+1=%d"%num
print(text2)
#1+1=1
#示例6:按顺序标识
num = 18
name="老头"
text2 = "%s我今年%d岁"%(name,num)
print(text2)
#老头我今年18岁
https://www.cnblogs.com/wupeiqi/articles/5484747.html
#示例7:用变量名代表
massage = "%(name)s你啥时候过来,%(name1)s今天不在家" %{"name":"死鬼","name1":"老不死的"}
print(massage)
text = "游戏已加载80%,请稍后"
print(text)
#按照我们所预想的,下列代码会输出,你好,游戏已加载80%,请稍后。。。
text = "%s,游戏已加载80%,请稍后..." %"你好"
#但实际上会报错提醒参数不足,也就是说系统会把后边的%也会认为是格式化符号
#解决办法就是再写一个%,即:
#text = "%s,游戏已加载80%%,请稍后..." %"你好"
print(text)
#示例1
text = "我是{0}".format("你老头")
print(text)
#基本形式如上:我们用大括号加数字序列以及在后方后缀的形式实现字符串的格式化
#输出:
我是你老头
#示例2
name = "你老头"
num = 20
text1 = "我是{0},你今年{1}岁".format(name,num)
print(text1)
#输出:
我是你老头,你今年20岁
#示例3
name = "你老头"
num1 = 20
num2 = 45
text2 = "我是{0},你今年{1}岁,我今年{2}岁".format(name,num1,num2)
print(text2)
#输出:
我是你老头,你今年20岁,我今年45岁
#示例4
name = "你老头"
num1 = 20
num2 = 45
text2 = "我是{0},你今年{1}岁,我今年{2}岁,{0}".format(name,num1,num2)
print(text2)
#输出:
我是你老头,你今年20岁,我今年45岁,你老头
#如上标号是可以复用的
text = "我是{}".format("你老头")
name = "你老头"
num1 = 20
num2 = 45
text2 = "我是{},你今年{}岁".format(name,num1)
text3 = "我是{},你今年{}岁,我今年{}岁".format(name,num1)
#以上的情况会自动默认顺序,但无法进行复用
text = "我是{n1}".format(n1="你老头")
text = "我是{n1},我今年{age}岁".format(n1="你老头",age=18)
text = "我是{0},我今年{1}岁"
data=text.format("你老头",18)
#同时可以实现模板的复用
data1 = text.format("john",45)
print(data)
print(data1)
#输出
我是你老头,我今年18岁
我是john,我今年45岁
text ="i am %s,i am %d years old"
data = text %("Ken",20)
data1 = text %("Amy",19)
print(data)
print(data1)
#输出
i am Ken,i am 20 years old
i am Amy,i am 19 years old
# 基础形式如下,可以再括号内直接加值
text = f"我喜欢{'跑步'}"
print(text)
#输出
我喜欢跑步
#也可以在括号内放入变量名
sport= "跑步"
text = f"我喜欢{sport}"
print(text)
#输出
我喜欢跑步
#多个变量
sport= "跑步"
sport1 = "游泳"
text = f"我喜欢{sport},她喜欢{sport1}"
print(text)
#输出
我喜欢跑步,她喜欢游泳
#括号内还可加表达式
sport= "跑步"
sport1 = "游泳"
text = f"我喜欢{sport},她喜欢{sport1}.,1+1={1+1}"
print(text)
#输出
我喜欢跑步,她喜欢游泳
#还可以进行进制的转换
#转为二进制
text = f"i am {22:#b} years old."
print(text)
#输出
i am 0b10110 years old.
#转为8进制
text = f"i am {22:#o} years old."
print(text)
#输出
i am 0o26 years old.
#转为16进制
text = f"i am {22:#x} years old."
print(text)
#输出
i am 0x16 years old
name = ken
text = f"i am {name.upper()}."
print(text)
运算符 | 描述 | 实例:a=10,b=20 |
---|---|---|
+ | 加:两数相加 | a+b输出结果30 |
- | 减:一个数减去另一个数 | a-b输出结果-10 |
* | 乘:两个数相乘或是返回一个被重复若干次的字符串 | a*b输出结果200 |
/ | 除:一个数除以另一个数得到商 | b/a输出结果2 |
% | 模除:两数相除后返回余数 | a/b输出结果10 |
** | 幂:返回一个数的n次幂 | a**b即10的20次方100000000000000000000 |
// | 取整除:返回商的整数部分 | 3//2输出结果1 |
运算符 | 描述 | 实例 |
---|---|---|
== | 等于:比较两边是否相等 | a==b:False |
!= | 不等于:判断两边是否不等 | a!=b:True |
<> | 不等于:判断两边是否不等 | a<>b:True |
> | 大于:判断左边是否大于右边 | a>b:False |
< | 小于:判断左边是否小于右边 | a |
>= | 大于等于:判断左边是否大于等于右边 | a>=b:False |
<= | 小于等于:判断左边是否小于等于右边 | a<=b:True |
注意:python3中不支持<>
运算符 | 描述 | 实例 |
---|---|---|
= | 简单的赋值运算符 | 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 |
运算符 | 描述 | 实例 |
---|---|---|
in | 如果在指定的序列中找到值返回True,否则返回False。 | ×在y序列中,如果x在y序列中返回True。 |
not in | 如果在指定的序列中没有找到值返回True,否则返回False。 | x不在y序列中,如果x不在有序列中返回True. |
#常用来检测一段文本中是否存在敏感词
text= input("请输入一段文本:")
if "苍老师" in text:
print("少儿不宜")
else:
print("老少皆宜")
运算符 | 描述 | 实例 |
---|---|---|
and | 布尔"与"-如果x为False,x and y返回False,否则它返回y的计算值。 | (a and b)返回true |
or | 布尔"或"-如果x是True,它返回True,否则它返回y的计算值。 | (a or b)返回true. |
not | 布尔"非"-如果x为True,返回False。如果x为False,它返回True。 | not(a and b)返回false。 |
即:加减乘除 > 比较 > not and or
逻辑运算中:and or
v2 = "ken" and "alex"
#第一步:将and前后的只转换为布尔值True and True
#第二步:判断本次操作取决于谁?由于前面的是True
#所以本次逻辑判断取决于后面的值。所以,后面的只等于多少最终结果就是多少。v2 = "alex"
v3 =""and "alex""
#第一步:将and前后的只转换为布尔值False and True
#第二步:判断本次操作取决于谁?由于前面的是False,所以本次逻辑判断取决于前面的值。所以,前面的只等于多少最终结果就是多少。v2=""
v4= l or 8
#第一步:将and前后的只转换为布尔值True or True
#第二步:判断本次操作取决于谁?由于前面的是True,所以本次逻辑判断取决于前面的值。
#v4=1
v5 = 0 or 8
#第一步:将and前后的只转换为布尔值False or True
#第二步:判断本次操作取决于谁?由于前面的是False,所以本次逻辑判断取决于后面的值。
#v5 = 8
练习题
vl = 1 or 2
v2 = -l or 3
v3 = 0 or -l
v4 = 0 or 100
v5 =" or 10
v6 = "JJ" or ""
print (v1,v2 ,v3,v4 ,v5,v6)
# or最终是看表达式两边的第一个值,如果第一个值为真,则结果就是真,否则结果就取决于第二个值
v1 = 4 and 8
v2 = 0 and 6
v3 = -1 and 88
v4 = "" and 7
v5 = "鲁班" and ""
v6 ="" and 0
v7= 0 and "中国"
print (v1,v2 ,v3 , v4 ,v5 ,v6 )
#and,如果左边的值为真,则整个表达式的结果取决于右边的值,否则取决于右边的值
面试题
如果and和or并列则应该先计算and再计算or
v1 = 0 or 4 and 3 or 7 or 9 and 6
0 or 3 or 7 or 9 and 6
0 or 3 or 7 or 6
3 or 7 or 6
3 or 6
3
v2 = 8 or 3 and 4 or 2 and 0 or 9 and 7
8 or 4 or 0 or 7
v3 = 0 or 2 and 3 and 4 or 6 and 0 or 3
0 or 3 and 4 or 0 or 3
0 or 4 or 0 or 3
v4 = not 8 or 3 and 4 or 2
1.while循环语句
2.三种字符串的格式化的方式
3.基本运算符
4.break和continue关键紫的作用
1.判断下列逻辑语句的True,False
1 > 1 or 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6
#true
not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6
#false
2.求出下列逻辑语句的值
8 or 3 and 4 or 2 and 0 or 9 and 7
#8 or 4 or 0 or 7
#8
0 or 2 and 3 and 4 or 6 and 0 or 3
#0 or 4 or 0 or 3
#4 or 3
#4
3.下列结果是什么
6 or 2 > 1
#6
3 or 2 > 1
#3
0 or 5 < 4
#False
5 < 4 or 3
#3
2 > 1 or 6
#True
3 and 2 > 1
#True
0 and 3 > 1
# 0 and True
#0
2 > 1 and 3
#3
3 > 1 and 0
#0
3 > 1 and 2 or 2 < 3 and 3 and 4 or 3 > 2
#True and 2 or True
#2 or True
#2
4.实现用户登录系统,并且要支持连续三次输错之后直接退出,并且在每次输错误时显示剩余错误次数(提示:使用字符串格式化)。
user = John
passWord = "123"
i = 0
while i < 3:
user1 = input("请输入用户名:")
passWord1 = input("请输入用户密码:")
if user1 == user and passWord1 == passWord:
print("登陆成功")
break
else:
i = i+1
j = 3-i
print("还有%d次机会" %j)
print("end")
5.猜年龄游戏
要求:允许用户最多尝试3次,3次都没猜对的话,就直接退出,如果猜对了,打印恭喜信息并退出。
age = "18"
i = 0
while i < 3 :
userInput = input("请输入你的答案:")
if userInput == age:
print("恭喜,回答正确")
break
else:
i = i+1
print("回答错误,你还有%d次机会" %3-i)
6.猜年龄游戏升级版
要求:允许用户最多尝试3次,每尝试3次后,如果还没猜对,就问用户是否还想继续玩,如果回答Y,就继续让其猜3次,以此往复,如果回答N,就退出程序,如何猜对了,就直接退出。
age = "18"
i = 0
while i < 3:
userInput = input("请输入你的答案:")
if userInput == age:
print("恭喜,回答正确")
i = 0
break
else:
i = i+1
j = 3 - i
print("回答错误,你还有%d次机会" %j)
while i == 3:
flag = input("您已经尝试了3次,请确认是否继续,Y:继续。N结束。")
if flag == "Y":
i = 0
elif flag == "N" :
print("ending")
break
else:
print("输入错误请重新输入!")