python+AI第二课
使用format
format 格式化输出
' '.format()是使用{}取代替传统的%
格式: <模板字符串>.format(<逗号分隔的参数>)
{}类似于生活中"槽"的概念
# -*- coding: utf-8 -*-
# @Time : 2019/11/5 9:18
# @Author : WenTing Men
# @Email : wentingmen@163.com
# @File : demo4.py
# @Software: PyCharm
name = '鲁班七号'
grade = 15
print('当前使用英雄为{},等级为{}级'.format(name, grade))
f-字符串
python3.6及以上版本中定义的一种参数化字符串方式,主要目的是让字符串格式化更加便捷,用{}标识变量, 但是不是使用{}进行占位。而是直接写入变量名
print(f'当前使用英雄为{name},等级为{grade}级')
练习:在控制台依次提示用户输入:姓名、公司、职位、电话、邮箱
按照以下格式输出:
公司名称
姓名 (职位)
电话:电话
邮箱:邮箱
name = input("请输入姓名:")
company = input("请输入公司:")
title = input("请输入职位:")
phone = input("请输入电话:")
email = input("请输入邮箱:")
print('*'*40)
print()
print(f'公司名称{company_name}')
print()
print(f'{name}({position})')
print(f'电话:{num}')
print(f'邮箱:{mail}')
print('*'*40)
标识符和保留字
标识符
标识符就是程序员自己命名的变量名,原则上标识符的命名要有见明知意的效果
- 标示符可以由字母、下划线 和 数字 组成
- 不能以数字开头
- 不能与关键字重名
保留字 - 关键字就是在 Python 内部已经使用的标识符
- 关键字具有特殊的功能和含义
- 开发者不允许定义和关键字相同的名字的标示符
#查看 Python 中的关键字
import keyword
keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
变量的命名规则
在定义变量时,为了保证代码格式,= 的左右应该各保留一个空格
在 Python 中,如果变量名需要由二个或多个单词组成时,可以按照以下方式命名
每个单词都使用小写字母单词与单词之间使用 _下划线 连接
驼峰命名法
当变量名是由二个或多个单词组成时,还可以利用驼峰命名法来命名
- 小驼峰式命名法
第一个单词以小写字母开始,后续单词的首字母大写
例如:firstName、lastName - 大驼峰式命名法
每一个单词的首字母都采用大写字母
例如:FirstName、LastName、CamelCase
运算符
- 算数运算符
运算符 | 描述 | 实例 |
---|---|---|
+ | 加 | -10 + 20 = 30 |
- | 减 | 10 - 20 = -10 |
* | 乘 | 10 * 20 = 200 |
/ | 除 | 10 / 20 = 0.5 |
// | 取整除 | 返回除法的整数部分(商) 9 // 2 输出结果 4 |
% | 取余数 | 返回除法的余数 9 % 2 = 1 |
** | 幂 | 又称次方、乘方,2 ** 3 = 8 |
a = 10
b = 5
print(a + b)
# 15
print(a - b)
# 5
print(a * b)
# 50
print(a / b)
# 2.0
print(a ** b)
# 100000
print(a // b)
# 2
print(a % b)
# 0
- 算数运算符
运算符 | 描述 |
---|---|
== | 检查两个操作数的值是否 相等,如果是,则条件成立,返回 True |
!= | 检查两个操作数的值是否 不相等,如果是,则条件成立,返回 True |
> | 检查左操作数的值是否 大于 右操作数的值,如果是,则条件成立,返回 True |
< | 检查左操作数的值是否 小于 右操作数的值,如果是,则条件成立,返回 True |
>= | 检查左操作数的值是否 大于或等于 右操作数的值,如果是,则条件成立,返回 True |
<= | 检查左操作数的值是否 小于或等于 右操作数的值,如果是,则条件成立,返回 True |
a = 10
b = 20
a == b
# False
a != b
# True
a > b
# False
a < b
# True
a >= b
# False
a <= b
# True
- 逻辑运算符
运算符 | 逻辑表达式 | 描述 |
---|---|---|
and | x and y | 只有 x 和 y 的值都为 True,才会返回 True否则只要 x 或者 y 有一个值为 False,就返回 False |
or | x or y | 只要 x 或者 y 有一个值为 True,就返回 True只有 x 和 y 的值都为 False,才会返回 False |
not | not x | 如果 x 为 True,返回 False如果 x 为 False,返回 True |
a = True
b = False
a and b
# False
a or b
# True
not a
# False
not -1
# False
not 0
# True
- 赋值运算符
赋值运算符中间不能使用空格
运算符 | 描述 | 实例 |
---|---|---|
= | 简单的赋值运算符 | 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 |
**= | 幂赋值运算符 | c = a 等效于 c = c a |
a = 10
b = 20
c = 0
c = a + b
print(c)
# 30
c += 10
print(c)
# 40
c -= a
print(c)
# 30
c *= a
print(c)
# 300
c /= a
print(c)
# 30.0
c %= a
print(c)
# 0.0
c = a ** 5
print(c)
# 100000
c //= b
print(c)
# 5000
print(b)
# 20
- 运算符的优先级
运算符 | 描述 |
---|---|
** | 幂 (最高优先级) |
* / % // | 乘、除、取余数、取整除 |
+ - | 加法、减法 |
<= < > >= | 比较运算符 |
== != | 等于运算符 |
= %= /= //= -= += = *= | 赋值运算符 |
not or and | 逻辑运算符 |
条件语句
Python 条件语句跟其他语言基本一致的,都是通过一条或多条语句的执行结果( True 或者 False )来决定执行的代码块。
Python 程序语言指定任何非 0 和非空(None)值为 True,0 或者 None为 False。
- if 语句
if 判断条件:
执行语句……
else:
执行语句……
练习:
results = 59
if results >= 60:
print ('及格')
else :
print ('不及格')
练习:
lenght = float(input('输入刀子的长度'))
if lenght < 10 :
print("您可以乘车")
else:
print('您携带危险物品,您不可以乘车')
- if 语句多个条件同时判断
Python中没有switch语句,所以不像其他语言可以使用switch去判断多个条件,只能用elif代替
if 判断条件1:
事情1……
elif 判断条件2:
事情2……
elif 判断条件3:
事情3……
else:
事情4……
练习:
score = int(input('请输入您的成绩'))
if score >= 90 and score <= 100:
print('您的成绩为优秀')
elif score >= 75 and score < 90:
print('您的成绩为良好')
elif score >= 60 and score < 75:
print('您的成绩为及格')
elif score >= 0 and score < 60:
print('您的成绩为不及格')
else:
print('您输入的成绩不合法')
注意:elif必须和if一起使用,否则会出错,else可以选择性使用,当以上条件都不满足时执行
- if的嵌套
if 条件1:
满足条件1执行的事情
if 条件2:
满足条件2执行的事情
外层的if判断也可以是if else,内层的if判断也可以是if else
练习:
ticket = int(input('请出示您的车票')) # 0代表没车票,1代表有车票
if ticket == 1:
print("请过安检")
lenght = float(input('输入刀子的长度'))
if lenght < 10:
print('安检通过')
print('终于可以见到他了,美滋滋~~~')
else:
print('没有通过安检')
print('您携带危险物品,您不可以乘车')
else:
print('您没有购买车票,不能乘车')
练习:猜拳游戏
键盘输入 剪刀(0)石头(1)布(2),电脑随机生成[0, 2],并判断输赢
不使用字典的情况下
方法1
from random import randint
player = int(input("剪刀石头布,请出拳:"))
computer = randint(0, 2)
if (player == 0 and computer == 2) or (player == 1 and computer == 0) or (player == 2 and computer == 1):
print("恭喜玩家胜利")
elif player == computer:
print("平手")
else:
print("电脑胜利")
方法2
from random import randint
player = int(input("剪刀石头布,请出拳:"))
computer = randint(0, 2)
if player == 0:
if computer == 2:
print("恭喜玩家胜利")
elif computer == 1:
print("电脑胜利")
elif player == 1:
if computer == 0:
print("恭喜玩家胜利")
elif computer == 2:
print("电脑胜利")
elif player == 2:
if computer == 1:
print("恭喜玩家胜利")
elif computer == 0:
print("电脑胜利")
else:
print("平手")
循环语句
image一般编程语言都有循环语句,循环语句允许我们执行一个语句或语句组多次。
循环控制语句 | 描述 |
---|---|
break | 在语句块执行过程中终止循环,并且跳出整个循环 |
continue | 在语句块执行过程中终止当前循环,跳出该次循环,执行下一次循环 |
pass | pass 是空语句,是为占位 |
- while循环的格式
while 循环条件:
循环体
例子:1.求1-100之间的累加和
i = 1
sum_i = 0
while i <= 100:
print(f'当前执行的循环是第{i}次')
sum_i += i
i += 1
print(sum_i)
2.求1-100之间的偶数累加和
i = 1
sum_i = 0
while i <= 100:
if i % 2 == 0:
sum_i += i
i += 1
print(sum_i)
3.累加和大于1000的时候输出值
i = 1
sum_i = 0
while i <= 100:
sum_i += i
if sum_i > 1000:
break
i += 1
print(sum_i)
while循环嵌套
在控制台中输出下面图形
*
* *
* * *
* * * *
* * * * *
i = 1
while i < 6 :
print("* "*i)
i += 1
或者
i = 1
while i < 6 :
j = 1
while j <= i:
print("* ", end='')
j += 1
print(end='\n')
i += 1
while循环-课上练习
#九九乘法表
i = 1
while i <= 9:
j = 1
while j <= i:
print("%dX%d=%-2d"%(i,j,i*j),end = ' ')
j += 1
print()
i += 1
#猜拳
from random import randint
i = 1
while i == 1:
player = int(input("剪刀[0]石头[1]布[2],请出拳:"))
computer = randint(0, 2)
if player != 0 and player != 1 and player != 2:
print("输入错误,请重新输出")
elif (player == 0 and computer == 2) or (player == 1 and computer == 0) or (player == 2 and computer == 1):
print("恭喜玩家胜利")
i = 2
elif player == computer:
print("平手")
else:
print("电脑胜利")
for循环
语法格式
image
for iterating_var in sequence:
statements(s)
取出字符串
for zifuchuan in '李磊韩梅梅':
print(zifuchuan)
for循环的计数
range()
for value in range(1,6):
print(value)
使用for循环编写九九乘法表
#九九乘法表
for i in range(1, 10):
for j in range(1, 10):
print(j, "X", i, "=", i*j, "\t", end="")#默认结尾是换行的,变成换行的只需要end=“”即可
if i == j:
print("")
回顾猜数字练习
#猜数字
import random
min_num = int(input("请给定要猜的最大数字:"))
max_num = int(input("请给定要猜的最小数字:"))
#随机数生成一个数字,让用户猜这个数字
generate_num = random.randint(min_num, max_num)
count = 0
while True:
count +=1
guess_number = int(input("输入您猜的数字:"))
if guess_number < generate_num:
print("您猜小了")
elif guess_number > generate_num:
print("您猜大了")
else:
if count ==1:
print("你也太厉害了吧,1次就猜对了,这是高手")
elif count > 1 and count < 6:
print("恭喜只用了:", count, "次就猜对了数字")
else:
print("你也太菜了", count, "次就才猜得出来,洗洗睡吧")
作业:
1.我想买车,买什么车决定于我在银行有多少存款
如果我的存款超过500万,我就买路虎
否则,如果我的存款超过100万,我就买宝马
否则, 如果我的存款超过50万,我就买迈腾
否则, 如果我的存款超过10万,我就买福特
否则, 如果我的存款10万以下 ,我买比亚迪
money = int(input('查看我的存款:'))
if money >= 500:
print("我可以买路虎啦!")
elif money >= 100 and money < 500:
print("我可以买宝马啦!")
elif money >= 50 and money < 100:
print("我还可以买迈腾!")
elif money >= 10 and money < 50:
print("我只能买福特了.")
else:
print("我就能买的起比亚迪了.")
2.输入小明的考试成绩,显示所获奖励
成绩==100分,爸爸给他买辆车
成绩>=90分,妈妈给他买MP4
90分>成绩>=60分,妈妈给他买本参考书
成绩<60分,什么都不买
score = int(input('小明的考试成绩:'))
if score == 100:
print("小明考了满分,爸爸给买辆车。")
elif score >= 90 and score < 100:
print("成绩还不错,妈妈给买MP4")
elif score >= 60 and score < 90:
print("需要努力,妈妈给买参考书")
else:
print("成绩不好,什么都不买")
3.输入n的值,求出n的阶乘。
n = int(input("请输入数字n:"))
factorial = 1
for i in range(1, n+1):
factorial *= i
print(factorial)
或者使用math库
import math
n = int(input("请输入数字n:"))
print(math.factorial(n))
4.折纸上月球
大家都看过科幻片《火星救援The Martian》吧,电影里航天员们在太空中碰到各种情况都是靠计算机模拟、计算来解决问题的。
我们在地球上也可以靠高大上的Python语言来解决问题。现在问题来了:我们都知道,月亮在一个椭圆形的轨道上绕地球公转,因此两者的距离是不断变化的,它们的最小距离是363300公里。现在我们都想去月球旅游(地球玩腻了,想换个口味),但是坐火箭上天一次就带辣么几个人,我们等不及。好消息,好消息,厂家现在开发出逆天神技——折纸上月球!
只需一张很大的A4纸,厚度为0.088毫米,折一次就0.176毫米,折两次就0.352毫米……多折几次就很高了。
穿上冲锋衣,拿上登山杖,带上自拍杆,我们爬着就可以上月球发朋友圈了。我就想问一句:要上月球,我们到底需要折多少次?
n=0
d=0.088
while d <= 363300*1000*1000:
d = 2 * d
n = n + 1
print(n)
答案
count = 0
n = 0.088
while 1:
if(n>=363300*1000*1000):
break
n=n*2
count=count+1
print(count)
5.篮球弹跳高度的计算
书呆子就是书呆子,打个篮球脑子也不闲着。这种人说好听的叫‘geek’,说不好听的就是叫‘nerd’。
这不,书呆子看着篮球在想:如果篮球从某一高度落下,每次落地后反弹回原来高度的一半再落下。
那么球在第10次落地时,共经过多少米呢? 第10次反弹多高? (你问我这个题是不是瞎编的?当然是了,你什么时候见过书呆子打篮球?)
输入:输入一个整数h,单位是米,表示球的初始高度。
输出:输出包含两行:
第1行:到球第10次落地时,一共经过的距离。
第2行:第10次弹跳的高度。
例如输入:20 对应输出:第一行:59.921875 第二行:0.01953125
h = int(input("请输入球的初始高度:"))
s = h
for i in range(1,11):
h = h * 0.5
s = s + h*2
print("一共经过{}\n第十次高度为{}\n".format(s,h))