day03 Python基础

课程目标:掌握Python基础中的必备语法知识。

课程概要:

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

1. while循环语句(for循环后面再讲)

1.1 while循环语句基本使用

示例1:

print('开始')
while True:     # 死循环标准语法,循环内语句会一直执行下去print('alex是个小逗比')
print('结束')# 输出结果:
开始
alex是个小逗比
alex是个小逗比
alex是个小逗比
alex是个小逗比
...

示例2:

print('开始')
while 1 > 2: # 1 > 2 为False,故不执行该循环内的语句print('如果祖国遭受侵犯,热血男儿当自强')
print('结束')# 输出结果:
开始
结束

示例3:

data = True
print('开始')
while data:     # 跟示例1一样,这里将True赋值给dataprint('如果祖国遭受侵犯,热血男儿当自强')
print('结束')# 输出结果:
开始
如果祖国遭受侵犯,热血男儿当自强
如果祖国遭受侵犯,热血男儿当自强
如果祖国遭受侵犯,热血男儿当自强
...

示例4:

print('开始')
flag = True
while flag:print('滚滚黄河,滔滔长江')flag = False # flag在这变成了False,下一次while循环判断为False,跳出循环print('结束')# 输出结果:
开始
滚滚黄河,滔滔长江
结束

示例5:

print('开始')
num = 1
while num < 3:print('滚滚黄河,滔滔长江')num = 5    # 与示例4类似,num在这变成了5,下一次while循环判断为False,跳出循环
print('结束')# 输出结果:
开始
滚滚黄河,滔滔长江
结束

示例6:

print('开始')
num = 1
while num < 5:print('滚滚黄河,滔滔长江')num = num + 1 # 每执行一次循环,num增加1,直到num=5时跳出循环,共执行4次循环
print('结束')# 输出结果:
开始
滚滚黄河,滔滔长江
滚滚黄河,滔滔长江
滚滚黄河,滔滔长江
滚滚黄河,滔滔长江
结束

案例7:实现一个用户登录系统,如果密码错误则反复提示让用户重新输入,直到输入正确为止。

# 提示:方法很多,这里列举2种:
# 方法一:
print('欢迎使用用户系统')
username = input('请输入用户名:')
password = input('请输入密码:')
while username != 'alex' or password != 'uuu':
# 当用户名或密码不正确时,重复执行while循环内语句,否则跳出循环print('用户名或密码错误,请重新输入')username = input('请输入用户名:')password = input('请输入密码:')
print('登录成功')# 方法二:
print("欢迎使用用户系统")
flag = True
while flag:user = input("请输入用户名:")pwd = input("请输入密码:")if user == "wupeiqi" and pwd == "luffy":# 当用户名和密码都正确时,flag变成False,跳出循环print("登录成功")flag = Falseelse:print("用户名或密码错误")

1.2 while循环语句练习题

  1. 猜数字,设定一个理想数字比如:66,一直提示让用户输入数字,如果比66大,则显示猜测的结果大了;如果比66小,则显示猜测的结果小了;只有输入等于66,显示猜测结果正确,然后退出循环。
flag = True
while flag:num = int(input('请输入一个数字:'))if num == 66:print('正确')flag = Falseelif num > 66:print('大了')else:print('小了')
  1. 使用循环输出1~100所有整数。
num = 1
while num < 101:print(num)num = num + 1
  1. 使用循环输出 1 2 3 4 5 6 8 9 10,即:10以内除7以外的整数。
num = 1
while num < 11:print(num)if num == 6:  num = num + 2 # 当num=6时,让num加2变成8,跳过输出7else:num = num + 1
  1. 输出 1~100 内的所有奇数。
num = 1
while num < 100:print(num)num = num + 2
  1. 输出 1~100 内的所有偶数。
num = 2
while num <= 100:print(num)num = num + 2
  1. 求 1~100 的所有整数的和。
num = 1
sum_num = 0        # 初始定义一个求和值为0
while num < 101:sum_num = sum_num + num    # 每循环一次,sum_num就加上一个新的numnum = num + 1
print(sum_num)
  1. 输出10 ~ 1 所有整数。
num = 10
while num > 0:print(num)num -= 1
  1. 输出1 - 2 + 3 - 4 + 5 - 6 + … + 99 - 100 的值。
num = 1
sum_num = 0
while num < 101:if num % 2 == 1:   # 判断如果num为奇数,sum_num就加上numsum_num += numelse:             # 判断如果num为偶数,sum_num就减去numsum_num -= numnum += 1
print(sum_num)

1.3 break

break:用于在while循环中终止循环。

示例1:

print("开始")
while True:print("红旗飘飘,军号响。")break # 循环中使用了break,则break后面的语句均不执行,跳出该循环print("剑已出鞘,雷鸣电闪。")print("从来都是狭路相逢勇者胜。")
print("结束")# 输出结果:
开始
红旗飘飘,军号响。
结束

示例2:

print("开始")
i = 1
while True:print(i)i = i + 1if i == 101:break
print("结束")
# 通过使用break,可以实现与上面while循环练习题2一样的效果# 输出结果:
开始
1
2
...
100
结束

示例3(使用break,另一种方法实现上面while循环的示例7):

print("开始运行系统")
while True:user = input("请输入用户名:")pwd =  input("请输入密码:")if user == 'alex' and pwd = "uuu":print("登录成功")breakelse:print("用户名或密码错误,请重新登录")
print("系统结束")

小结:在写代码时,想要结束循环可以通过两种方式实现,即:条件判断 和 break关键字,两种方式在使用时无好坏之分,只要能实现功能即可。

1.4 continue

continue:用于在循环中结束本次循环,直接开始下一次循环。

示例1:

print("开始")
while True:print("红旗飘飘,军号响。")continue# 与break不同的是,continue后面的语句不执行,直接进入下一次循环print("剑已出鞘,雷鸣电闪。")print("从来都是狭路相逢勇者胜。")
print("结束")# 输出结果:
开始
红旗飘飘,军号响。
红旗飘飘,军号响。
红旗飘飘,军号响。
红旗飘飘,军号响。
...

示例2:

print("开始")
i = 1
while i < 10:if i == 7:i = i + 1continueprint(i)i = i + 1
print("结束")
# 通过使用continue,可以实现与上面while循环练习题3一样的效果# 输出结果:
开始
1
2
3
4
5
6
8
9
10
结束

小结:

​ 对于break和continue都是放在循环语句中用于控制循环过程的,一旦遇到break就停止并跳出循环,一旦遇到continue就停止本次循环,直接开始下一次循环。break和continue可以在一定程度上简化我们的代码逻辑。

1.5 while else

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

示例1:

while False:pass
else:print(123)# 输出结果:
123

示例2:

num = 1
while num < 5:print(num)num += 1
else:print(666)# 输出结果:
1
2
3
4
666

2. 字符串格式化

字符串格式化:使用更便捷的形式实现字符串的拼接。

2.1 第一种:%

2.1.1 %格式化操作

示例1:

text = '我叫%s,今年18岁' % '轩小陌'

示例2:

name = '轩小陌'
text = '我叫%s,今年18岁' % name

示例3:

name = '轩小陌'
age = 18
text = '我叫%s,今年%s岁' % ( name , age )  或
text = '我叫%s,今年%d岁' % ( name , age )
# 这里的占位符%s特指name,占位符%d特指age

示例4:

message = '%(name)s你什么时候过来呀?%(user)s今天不在家。' % {'name':'死鬼','user': 'Alex'}
# 多个占位符代表不同变量时,可用字典{}的方式表示

2.1.2 特殊情况(百分比)

如果字符串中存在百分比,使用%格式化操作时请一定要加 “%%” 以实现正常输出 %。

示例

text = '%s,这个片我已经下载了90%%了,居然特么的断网了。' % '兄弟'

2.2 第二种:format

示例1:

text = '我叫{0},今年18岁'.format('轩小陌')
text = '我叫{0},今年{1}岁'.format('轩小陌',18)
text = '我叫{0},今年{1}岁,真实姓名也是{0}'.format('轩小陌',18)

示例2:

text = '我叫{},今年18岁'.format('轩小陌')
text = '我叫{},今年{}岁'.format('轩小陌',18)
text = '我叫{},今年{}岁,真实姓名也是{}'.format('轩小陌',18,'轩小陌')
# {}中不加索引数字也可以,但是format后面则要按顺序输入指代的值

示例3:

text = '我叫{name},今年18岁'.format(name='轩小陌')
text = '我叫{name},今年{age}岁'.format(name='轩小陌',age=18)
text = '我叫{name},今年{age}岁,真实姓名也是{name}'.format(name='轩小陌',age=18)
# {}中除了可使用索引数字,还可用变量命名

小结:% 和 format比较:

text = '我叫{0},今年{1}岁'
data1 = text.format ( '轩小陌' , 18 )
data2 = text.format ( '陌小轩' , 28 )text = '我叫%s,今年%d岁'
data1 = text % ( '轩小陌',18 )
data2 = text % ( '陌小轩', 28 )

2.3 第三种:f

f 格式化操作符是Python3.6版本后新增加的格式化操作符,更便捷。

示例1:

action = '跑步'
text = f'嫂子喜欢{ action },跑完之后满身大汗'

示例2:

name = "喵喵"
age = 19
text = f'嫂子的名字叫{ name },今年{ age }岁'

示例3:

text = f'嫂子的名字叫喵喵,今年{ 19 + 2 }岁'
# f格式化操作中还可以显示数值运算结果

示例4:

text = f'嫂子的名字叫喵喵,今年{ 19 + 2 = }岁'
# 在Python3.8版本后,f格式化操作中还可以显示数值运算过程并显示结果

示例5:

text = f'嫂子今年{ 22 : #b }岁'
# f格式化操作中还可以进行进制转换,#b是将22转换成2进制

示例6:

name = "alex"
text = f"我是{ name.upper() },我爱大铁锤"
# f格式化操作中还可以调用函数,upper()是大写函数# 输出结果:
我是ALEX,我爱大铁锤

3. 运算符

我们写代码时常见的运算符可以分为5种:

  • 算数运算符,包括:加减乘除、取模、幂、取整

  • 比较运算符,包括:等于、不等于、大于、小于、大于等于、小于等于

    注意:python3版本中已不支持 <>,统一使用 !=

  • 赋值运算符,例如:变量赋值、加法赋值等

    num = num + 1
    num += 1
    # 两种表达方式是一个意思,使用加法赋值运算符使代码更加简洁。
    
  • 成员运算符,包括:in、not in

    示例1:

    v1 = "le" in "alex"  # 返回布尔值True
    

    示例2:让用户输入一段文本,检测文本中是否包含敏感词。

    text = input("请输入内容:")
    if "苍老师" in text:print("输入名称不合法")
    else:print(text)
    
  • 逻辑运算,包括:且、或、非

3.1 运算符优先级

运算符的优先级有很多,日常工作和学习中,推荐记住以下3个即可:

  • 算数优先级 > 比较运算符

    if 2 + 10 > 11:print("真")
    else:print("假")
    
  • 比较运算符 > 逻辑运算符

    if 1>2 and 2<10:print("成立")
    else:print("不成立")
    
  • 逻辑运算符内部: not > and > or

    if not 1 and 1>2 or 3 == 8:print("真")
    else:print("假")
    

小结:加减乘除 > 比较 > not and or 。如果实在记不住,万无一失的方法:加括号。

3.2 运算符练习题

练习1:

v1 = '轩小陌' and 'alex'
# 第一步:将and前后的值转换为布尔值:True and True
# 第二步:判断本次操作取决于谁?由于前面是True,所以本次逻辑判断取决于后面的值
# 第三步:后面的值等于多少最终的结果就是多少 v2 = 'alex'v2 = '' and 'alex'
# 第一步:将and前后的值转换为布尔值:False and True
# 第二步:判断本次操作取决于谁?由于前面是False,所以本次逻辑判断取决于前面的值
# 第三步:前面的值等于多少最终的结果就是多少 v3 = ''V3 = 1 or 8
# 第一步:将or前后的值转换为布尔值:True or True
# 第二步:判断本次操作取决于谁?由于前面是True,所以本次逻辑判断取决于前面的值
# 第三步:前面的值等于多少最终的结果就是多少 v4 = 1V4 = 0 or 8
# 第一步:将or前后的值转换为布尔值:False or True
# 第二步:判断本次操作取决于谁?由于前面是False,所以本次逻辑判断取决于后面的值
# 第三步:后面的值等于多少最终的结果就是多少 v5 = 8

练习2:

v1 = 1 or 2     # v1 = 1
v2 = -1 or 3    # v2 = -1
v3 = 0 or -1    # v3 = -1
v4 = 0 or 100   # v4 = 100
v5 = '' or 10   # v5 = 10
v6 = 'wupeiqi' or ''    # v6 = 'wupeiqi'
# 小结:对于or的判断,先看第一个值,如果第一个值为真,结果就是第一个值,否则结果就是第二个值。
v1 = 4 and 8    # v1 = 8
v2 = 0 and 6    # v2 = 0
v3 = -1 and 88  # v3 = 88
v4 = '' and 7   # v4 = ''
v5 = '武沛齐' and ''   # v5 = ''
v6 = '' and 0   # v6 = ''
v7 = 0 and '中国'     # v7 = 0
# 小结:对于and的判断,先看第一个值,如果第一个值为真,结果是第二个值,否则结果就是第一个值。

练习3:

v1 = 0 or 4 and 3 or 7 or 9 and 60 or 3 or 7 or 63 or 7 or 63 or 63
v2 = 8 or 3 and 4 or 2 and 0 or 9 and 78 or 4 or 0 or 78 or 0 or 78 or 78
v3 = 0 or 2 and 3 and 4 or 6 and 0 or 30 or 4 or 0 or 34 or 0 or 34 or 34# 先计算and,后计算or

练习4:

v4 = not 8 or 3 and 4 or 2False or 4 or 24 or 24
# 先计算not,在计算and,最后计算or

今天知识点总结

  1. while循环语句
  2. break和continue关键字的作用
  3. 三种字符串格式化的方式
  4. 运算符的种类和运算优先级(练习题要吃透)

今日作业

  1. 判断下列逻辑语句的True,False
1 > 1 or 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6
# 1 > 1 or 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6
# False or True or False and True and True or False
# False or True or False or False
# 结果为Truenot 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6
# not True and False or False and True and True or False
# False and  False or False and True and True or False
# False or False or False
# 结果为False
  1. 求出下列逻辑语句的值。
8 or 3 and 4 or 2 and 0 or 9 and 7
# 8 or 4 or 0 or 7
# 8 or 0 or 7
# 结果为80 or 2 and 3 and 4 or 6 and 0 or 3
# 0 or 4 or 0 or 3
# 4 or 0 or 3
# 结果为4
  1. 下列结果是什么?
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
2 > 1 and 3     # 3
3 > 1 and 0     # 03 > 1 and 2 or 2 < 3 and 3 and 4 or 3 > 2
# True and 2 or False and 3 and 4 or True
# 2 or 3 and 4 or True
# 2 or 4 or True
# 2 or True
# 结果为2
  1. 实现用户登录系统,并且要支持连续三次输错之后直接退出,并且在每次输错误时显示剩余错误次数(提示:使⽤字符串格式化)。
print('欢迎使用用户系统')
count = 3  # 定义一个计数器,默认从3开始
while count > 0: # 当计数器为0时,则循环结束count -= 1   # 每循环一次,计数器减1username = input('请输入用户名:')password = input('请输入密码:')if username == 'hjj' and password == 'abc':print('登录成功')break    # 如果登录成功,break跳出循环else:print('用户名或密码错误,您还剩{0}次机会'.format(count))
print('退出系统')
  1. 猜年龄游戏
    要求:允许用户最多尝试3次,3次都没猜对的话,就直接退出,如果猜对了,打印恭喜信息并退出。
print('猜年龄游戏')
count = 3
while count > 0:count -= 1age = int(input('请输入年龄:'))if age == 66:print('恭喜答对了')breakelse:print('猜错了,您还剩{0}次机会'.format(count))
print('游戏结束')
# 实现原理与上题一致
  1. 猜年龄游戏升级版
    要求:允许用户最多尝试3次,每尝试3次后,如果还没猜对,就问用户是否还想继续玩,如果回答Y,就继续让其猜3次,以此往复,如果回答N,就退出程序,如何猜对了,就直接退出。
print('猜年龄游戏升级版')
count = 3
while True:if count == 0: # 当计数器为0时,增加判断节点order = input('次数已用完,是否要继续(Y/N)?')if order == 'Y':count = 3    continue# 如果输入'Y',计数器重置为3,并开始下一轮循环elif order == 'N':break# 如果输入'N',终止循环else:print('输入错误,请重新输入')continue# 如果输入其他,重新输入else:age = int(input('请输入年龄:'))if age == 66:print('恭喜答对了')breakelse:print('猜错了,您还剩{0}次机会'.format(count-1))count -= 1
print('游戏结束')

print(‘猜错了,您还剩{0}次机会’.format(count))
print(‘游戏结束’)

实现原理与上题一致


6. 猜年龄游戏升级版要求:允许用户最多尝试3次,每尝试3次后,如果还没猜对,就问用户是否还想继续玩,如果回答Y,就继续让其猜3次,以此往复,如果回答N,就退出程序,如何猜对了,就直接退出。```python
print('猜年龄游戏升级版')
count = 3
while True:if count == 0: # 当计数器为0时,增加判断节点order = input('次数已用完,是否要继续(Y/N)?')if order == 'Y':count = 3    continue# 如果输入'Y',计数器重置为3,并开始下一轮循环elif order == 'N':break# 如果输入'N',终止循环else:print('输入错误,请重新输入')continue# 如果输入其他,重新输入else:age = int(input('请输入年龄:'))if age == 66:print('恭喜答对了')breakelse:print('猜错了,您还剩{0}次机会'.format(count-1))count -= 1
print('游戏结束')

轩小陌的Python笔记-day03 Python基础相关推荐

  1. 轩小陌的Python笔记-day13 匿名函数、生成器、内置函数、推导式

    day13 内置函数和推导式 今日概要: 匿名函数 生成器 内置函数 附加:推导式,属于数据类型的知识,内部的高级的用法会涉及到[生成器]和[函数]的内容. 1. 匿名函数 传统的函数的定义包括了:函 ...

  2. 轩小陌的Python笔记-day16 模块二总结

    day16 阶段总结 课程目标:对第二模块 "函数和模块" 阶段的知识点进行总结. 课程概要: 知识补充 阶段总结(思维导图) 1. 知识补充 1.1 nolocal关键字 在之前 ...

  3. 轩小陌的Python笔记-day25 MySQL入门

    第四模块 MySQL数据库 从今天开始将进入第四模块的学习,这个模块就是给大家讲解MySQL数据库. 以前,在开发程序时,我们会把很多的数据和信息存储到某个文件夹中的文件中,例如:user.txt . ...

  4. 轩小陌的Python笔记-day08 模块一总结

    day08 阶段总结和考试题 课程目标:对第一模块 "Python基础" 阶段的知识点进行总结,更好地掌握此模块的相关知识. 课程概要: 代码规范 知识补充 阶段总结(思维导图) ...

  5. 轩小陌的Python笔记-day28 索引、函数及存储过程

    day28 索引和函数及存储过程 课程目标:了解 MySQL 中索引.函数.存储过程.函数.触发器.视图等知识点. 课程概要: 索引 函数 存储过程 视图 触发器 1. 索引 在数据库中索引最核心的作 ...

  6. 轩小陌的Python笔记-day26 必备SQL语句、表关系及授权

    day26 必备SQL和表关系及授权 课程目标:掌握开发中最常见的SQL语句和表关系及授权相关知识点. 课程概要: 必备SQL(8个必备) 表关系 授权 1. 必备SQL语句 上一节讲解了最基础SQL ...

  7. 轩小陌的Python笔记-day14 自定义模块、第三方模块、内置模块(部分)

    day14 模块 课程目标:掌握Python中常用模块的使用方法. 今日概要: 自定义模块(包) 第三方模块 内置模块[1/2] 1. 自定义模块 1.1 模块和包 import hashlibdef ...

  8. 轩小陌的Python笔记-day05 数据类型

    day05 数据类型(上) 接下来的3篇的内容都是讲解数据类型的知识点,常见的数据类型: int,整数类型(整型) bool,布尔类型 str,字符串类型 list,列表类型 tuple,元组类型 d ...

  9. 轩小陌的Python笔记-day06 数据类型

    day06 数据类型(中) 常见的数据类型: int,整数类型(整形) bool,布尔类型 str,字符串类型 list,列表类型 tuple,元组类型 dict,字典类型 set,集合类型 floa ...

  10. 轩小陌的Python笔记-day11 函数进阶

    day11 函数进阶 目标:掌握函数相关易错点 & 项目开发必备技能. 今日概要: 参数的补充 函数名到底是什么? 返回值和print,傻傻分不清楚. 函数的作用域 1.参数的补充 在函数基础 ...

最新文章

  1. 用GAN还原语义标注图!还能手动改细节(附论文、代码)
  2. linux桌面效率提高,ElementaryOS:使用这个轻量级 Linux 桌面提高工作效率
  3. 发掘VS2005 SP1 (一)
  4. java.lang.Exception: Socket bind failed: [730048]
  5. eclipse设置jsp文件编码默认为UTF-8
  6. python编程老师岗位需求表_教师岗位需求信息表
  7. yum安装mysql具体步骤_CentOS7.0下使用yum安装MySQL的步骤教程
  8. 数据分析师的工作职责是什么?
  9. ajax加载txt文件,ajax读取txt文件
  10. 西游记中托塔李天王的三个儿子,一个女儿和一个干女儿
  11. CodeForces-937D-Sleepy Game
  12. 博客什么的写也就写了
  13. Python爬虫练习:爬取猫眼电影实时票房
  14. java毕业生设计选课系统计算机源码+系统+mysql+调试部署+lw
  15. python网络爬虫从入门到实践 第5章 (二)
  16. JS事件绑定的几种方式
  17. ZBar源码分析(十一)
  18. HuTool工具生成带图片二维码
  19. multisim仿真 74LS148D芯片
  20. Java项目:springboot蓝天幼儿园管理系统

热门文章

  1. 开展网络口碑营销的前提
  2. 转载:王垠·程序员的心理疾病
  3. 利用接口检查日期是否为法定节假日
  4. java操作数据库步骤_java数据库操作基本流程
  5. linux清理unbuntu无用空间,如何给Ubuntu系统清理垃圾
  6. 【渝粤题库】陕西师范大学201591 中国古代文学(二)作业(高起本)
  7. DIV布局末大作业:美食网站设计——餐饮美食-咖啡(5页) HTML5网页设计成品_学生DW静态食品网页设计_web课程设计网页制作
  8. java mysql vo mybatis 分页_Mybatis Plus 使用VO分页查询
  9. 人工智能 感情 自我意识
  10. 计算机相关知识——前端Base64编码解码的基础使用