目录
python笔记-day01
python运算符
Python常见运算符:算术运算符、赋值运算符、比较运算符、逻辑运算符、成员运算符
算术运算符
算术运算符:包括加+、减-、乘*、除/、整除//、求模(取余)%、幂运算**
a = 20
b = 3
print(a + b)
print(a - b)
print(a * b)
print(a / b)
print(20 / 2)
# python中除法运算得到的结果永远为浮点型
print(a // b)
# 整除得到的结果为除法运算结果向下取整
print(a % b)
# 取余:除法运算在的余数
print(a ** b)
# sqrt()开方方法
# **幂运算能够代替sqrt方法
print(4 ** 0.5)
print(27 ** (1 / 3))
比较运算符
比较运算符:大于>、小于<、大于等于>=、小于等于<=、等等于==、不等于!=
比较运算得到的结果永远是布尔值:True | False
print(20 > 3)
print(20 < 3)
print(20 >= 3)
print(20 == 3)
print(20 != 3)
逻辑运算符
逻辑运算符:逻辑与运算and、逻辑或运算or、逻辑非运算not
# 逻辑与运算
# and字面意思而且并且,and连接的是两个条件,如果两个条件都成立(True),那么整体均为True
# 只要有一方不成立(False),整体均不成立
# 中断:如果and左边为False,直接结束判断
print(True and True)
print(True and False)
print(False and True)
print(False and False)
print('------------------------分隔符------------------------')
# 逻辑或运算
# or字面意思或者;or连接的是两个条件,只有当or两边条件都不成立时,整体结果才不成立
# 中断:如果or左边为True,直接结束判断
print(True or True)
print(True or False)
print(False or True)
print(False or False)
print('------------------------分隔符------------------------')
# 逻辑非运算
# not取反
print(not 18 > 20)
赋值运算符
赋值运算符:除等号外,对一个已经存在的变量进行赋值的,如:=、+=、-=、*=、/=、//=、%=、**=
num = 10
num += 10
# 等价于num = num + 10
print(num)
num %= 3
num **= 100
print(num)
# 复合赋值运算符
a = 10
a *= a + 5
print(a)
运算符的优先级
算术运算符 > 比较运算符 > 逻辑运算符 > 赋值运算符
算术运算符: ** > * / % // > + -
有小括号先算小括号里面的
输入和输出
input()
通过input输入的内容,始终是一个字符串
a = input('请输入一个数字:')
print(a,type(a))
print()
1.print()可以打印内容(变量对应的数据、一个数据、一行代码的结果等)
b = 10
print(b, 10, 20 > 30)
2.print()还可以再打印结果的时候修改多个结果之间的间隔
print()中有一个结束字符串和分隔字符串,结束字符串和间隔字符串仅仅是在打印效果上做出改变,不改变原有数据。
print(20,40,60,80,sep='hhh',end='')
print(30)
getpass
在Python中提供一个内置模块,能够实现和input类似的效果,但是比input更加强大
import getpass
a=getpass.getpass('请输入您的密码:')
print(a,type(a))
简单数据类型转换
常见数据类型
Python中常见数据类型有:整型(int)、浮点型(float)、布尔值(bool)、字符串(str)、列表(list)、元组(tuple)、集合(set)、字典(dict)等
什么数据类型可以转整型
1、浮点型能够转整型
2、布尔值能够转整型。True --> 1 、 False --> 0
3、字符串能够转整型。去掉字符串引号就是一个整数的字符串才能够转整型。
print(int(10.999),int(True),int(False),int('123'))
print(type(int(10.999)),type(int(True)),type(int(False)),type(int('123')))
# print(int('123.456'))错误
什么数据类型可以转浮点型
1、整型能够转浮点型
2、布尔值能够转浮点型。True --> 1.0 、 False --> 0.0
3、字符串能够转浮点型。去掉引号就是数字的字符串能够转浮点型。
print(float(123),float(True),float(False),float('123'),float('123.456'),float('.123'),float('123.'),float('123'))
什么数据类型可以转布尔值
0, 0.0, None, 空列表[], 空字符串'', 空集合set(), 空元组(), 空字典{} 等能够表示空值的能转为False,其他的均为True。
print(bool(0), bool(0.0), bool([]),bool(''))
print(bool(1000),bool('12'))
分支结构
为什么要引入分支结构?
在Python中代码是一条一条语句顺序执行,这种代码结构通常称之为顺序结构,但是仅有顺序结构不足以解决所有问题。我们必须给予程序做选择的功能,因此出现了分支结构(选择结构)。
单分支结构:if语句
案例:用户身份验证
username = input('请输入用户名:')
password = input('请输入密码:')
if username == 'admin' and password == '123456':
print('登录成功')
else:
print('用户名或密码错误')
练习:判断一个年份是否是闰年,打印闰年或平年
year = 2000
if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
print('闰年')
else:
print('平年')
三目运算符
语法:结果1 if 条件 else 结果2
如果条件成立,输出结果1,否则,输出结果2
year = 2000
result = '闰年' if (year % 4 == 0 and year % 100 != 0) or year % 4 == 0 else '平年'
print(result)
多分支结构
score = 70
if score >= 90:
print('等级A')
elif score >= 80:
print('等级B')
elif score >= 70:
print('等级C')
elif score >= 60:
print('等级D')
else:
print('不及格')
练习:将单分支结构判断一个年份是否是闰年构造成多分支结构
x = int(input('请输入年份:'))
if x % 400 == 0:
print('闰年')
elif x % 4 == 0 and x % 100 != 0:
print('闰年')
else:
print('平年')
嵌套分支(分支结构相互嵌套)
案例:判断一个数字是否是偶数,如果这个数字是偶数,再判断其是否是10的倍数
x = int(input('请输入一个数字:'))
if x % 2 == 0:
print('偶数')
if x % 10 == 0:
print('这个数是10的倍数')
else:
print('这个数不是10的倍数')
else:
print('奇数')
练习:输入三条边长,如果能构成三角形就计算三角形的周长
a,b,c=map(float,input('请输入三条边长:').split())
if a + b > c and a + c > b and b + c > a:
print('三角形的周长为',a+b+c)
else:
print('不能组成三角形')
循环结构
假设在实际工作中遇到重复性的机械性的内容,应该怎么办?
可以使用循环以及发现的重复性的规律来解决此类问题。
for循环
"""
for循环语法:
for 变量 in 容器:
代码块
"""
# 第一个容器:range方块
# range():用来产生一个整数序列
# range(start, end, step): range可以从 左闭右开区间[start,end) 中按照 步长step 获取所有的整数
# start不写默认表示0,step不写默认为1,步长是控制下一次该取哪个元素
# range(101):可以产生从 0到100范围内 的所有整数
# range(1,101):可以产生从 1到100范围内 的所有整数
# range(1,101,2):可以产生从 1到100范围内 的所有奇数
# range(100,0,2):可以产生从 100到1范围内 的所有偶数
for i in range(1,11,2):
print(i)
练习:使用for循环输出1到100以内所有的5的倍数
sum = 0
for i in range(100,1,-5):
sum += i
print(sum)
while循环
for循环适合有限次的循环,while循环既适合有限次的循环,又适合循环次数不确定的循环。
"""
while循环语法:
while条件:
代码块
while循环开始执行,判断条件是否成立,条件成立,执行代码块,下一次循环还是先判断条件是否成立
如果条件不成立,循环结束。
"""
案例:数字炸弹游戏
在指定范围中随机获取一个数字,如果用户猜对了,游戏结束;
如果用户猜的数字比较大,提示再小一点;反之提示再大一点
from random import randint
# randint(a,b)从[a,b]中随机获取一个整数
number = randint(1,100)
#print(number)
num = 0
while num != number:
num = int(input('请输入你猜测的数字:'))
if num == number:
print('猜对了,游戏结束')
# flag = False
elif num > number:
print('再小一点')
else:
print('再大一点')
作业
1.输出9*9口诀。 程序分析:分行与列考虑,共9行9列,i控制行,j控制列。
for row in range(1,10):
for col in range(1,row+1):
#格式化字符串字面值(f-字符串):1 * 1 = 1、 9 * 9 = 81
string = f'{col} * {row} = {row * col}'
print(string,sep='',end='\t'),
print('\n')
2.这是经典的"百马百担"问题,有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮1担,问有大,中,小马各几匹?(可以直接使用穷举法)
for bigHorse in range(0,35):
for middleHorse in range(0,51):
if 6 * bigHorse + 4 * middleHorse + (100 - bigHorse - middleHorse) == 200:
print(f'大马有{bigHorse}匹,中马有{middleHorse}匹,小马有{smallHorse}匹')
3.求斐波那契数列列中第n个数的值:1,1,2,3,5,8,13,21,34.... (这儿的n可以是任意正整数,可以通过输入来确定)
N = 4
left = 1
right = 1
mid = 1
for i in range(1, N-1):
mid = left + right
left = right
right = mid
print(f'第{N}个数是{mid}')
4.打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字⽴方和等于该数本身。例如:153是⼀个⽔仙花数,因为 1³ + 5³ + 3³ 等于 153。
for i in range(100,1000):
gw = i % 10
sw = i // 10 % 10
bw = i // 100
if gw ** 3 + sw ** 3 + bw ** 3 == i:
print(f'{i}是水仙花数')
5.使用循环计算1*2*3*4*...*10的结果。
num = 1
for i in range(1,11):
num *= i
print(f'10的阶乘为{num}')