Python的基础语法知识:循环语句、字符串格式化、运算符的优先级

Day 03 Python基础知识


Python的基础语法知识

概要:

  • 循环语句
  • 字符串格式化
  • 运算符(面试题)

1. 循环语句

  • while循环
  • for循环
while 条件:
    ....
    ....
    ....

1.1 循环语句使用示例

示例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)

1.2 综合小案例

实现一个用户登录系统,如果用户输入的密码不正确就提示用户重新输入直到正确为止。

name = john#用户名
password = "123"#密码123
#定义用户输入变量作为用户输入密码,便于比较
user_input_password = input("请输入john的密码")
while user_input_password!=password:#若密码不对则执行循环,直至正确
    print("密码错误请重新输入")
    user_input_password = input("请输入john的密码")
print("登陆成功")

1.3 练习题

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)

1.4 break

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("系统结束")

1.5 continue

主要用来结束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("结束")
  • break和continue都是用来控制循环过程的,遇到break会终止整个循环过程,而continue只是终止本轮循环。

1.6 While else

当while的条件不成立的时候,else中的代码就会执行。

while 条件:
    代码块
else:
    代码块
num = 1
while num < 5:
    print(num)
    num = num + 1
else:
    print(666)
#输出
1
2
3
4
666
  • 当遇到break后,else便不会再执行,即else只在while条件不成立时执行
while True:
    print(num)
    break
else:
    print(666)

2. 字符串格式化

便于实现字符串的拼接

2.1 %

2.1.1 格式化基本操作

#示例一
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)
2.1.2 百分比
text = "游戏已加载80%,请稍后"
print(text)
  • 一旦你的文本中想要输出百分号。而又存在格式化。
#按照我们所预想的,下列代码会输出,你好,游戏已加载80%,请稍后。。。
text = "%s,游戏已加载80%,请稍后..." %"你好"
#但实际上会报错提醒参数不足,也就是说系统会把后边的%也会认为是格式化符号
#解决办法就是再写一个%,即:
#text = "%s,游戏已加载80%%,请稍后..." %"你好"

print(text)

2.2 format

#示例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)

#以上的情况会自动默认顺序,但无法进行复用

  • 在我们使用format进行格式化的时候,可以使用命名的形式格式化
text = "我是{n1}".format(n1="你老头")
text = "我是{n1},我今年{age}岁".format(n1="你老头",age=18)
  • 另外在python中还可以这样:
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

2.3 f

  • python3.6后引入
# 基础形式如下,可以再括号内直接加值
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)

3. 运算符

  • 算数运算符
运算符描述实例: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
  • 比较运算符:根据两边的数据得出结果,返回值为(True和False)
运算符描述实例
==等于:比较两边是否相等a==b:False
!=不等于:判断两边是否不等a!=b:True
<>不等于:判断两边是否不等a<>b:True
>大于:判断左边是否大于右边a>b:False
<小于:判断左边是否小于右边a<b:True
>=大于等于:判断左边是否大于等于右边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。

3.1 运算符优先级

  • 算数运算符 大于 比较运算符
  • 比较运算符 大于逻辑运算符
  • 逻辑运算符内部三个优先级 not > and >or

即:加减乘除 > 比较 > not and or

3.2 面试题相关知识和练习题

逻辑运算中: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("输入错误请重新输入!")
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值