python学习笔记day03
一.example01
- round(参数1, 参数2):保留小数位数.
- 参数1:传入的数据(可以是公式), 参数2:保留小数位数,四舍五入
- 实际位数比要求保留位数少时,按实际位数输出
- 华氏温度转为摄氏温度
C = (F - 32) / 1.8
用round()保留小数位数
F = float(input('华氏温度:'))
C = round((F - 32) / 1.8, 2)
print(f'摄氏温度:{C}')
- 摄氏温度转华氏温度
用格式化输出方式保留小数位数
C = float(input('摄氏温度:'))
F = C * 1.8 + 32
print(f'摄氏温度:{F:.2f}')
- 给定任意半径,计算圆面积和周长
自行选择保留小数位数的方式, pi = 3.14
pi = 3.14
r = float(input('圆半径:'))
l = 2 * pi * r
s = pi * r ** 2
print(f'周长:{round(l, 2)}, 面积:{round(s, 2)}')
二.数值和布尔值
python数值:整型(int), 浮点数(float)
python布尔值:True, False
布尔值中True:任意非零数, 非空列表, 非空字符串, 非空元组, 非空集合, 非空字典
布尔值中False: 0, None, ‘’, [], (), {}
- 整型(int)
# 什么样的数据能转换成整型?
"""
1.字符串转整型.(去掉引号是一个整数的字符串才能够转整型)
2.浮点型转整型.(|绝对值|向小取整)
3.布尔值转整型.(True = 1, False = 0)
"""
# print(int('2.3')) # 去掉引号是浮点数
# print(int('abc123')) # 去掉引号不是整数
print(int('123')) # 123
print(int(-2.3)) # -2
print(int(True)) # 1
- 浮点数(float)
"""
1.字符串转浮点型.(去掉引号是数值)
2.整型转浮点型.(补0)
3.布尔值转浮点型.(True = 1.0, False = 0.0)
"""
print(float('123')) # 123.0
print(float('12.3')) # 12.3
print(float('12.')) # 12.0
print(float('.3')) # 0.3
print(float(123)) # 123.0
print(float(False)) # 0.0
- 布尔值(bool)
# 所有数据类型都能够转成布尔值
# False:0, None, '', [], (), {}, (空值或无元素)
# True: 非0数值, 所有有元素的数据类型
print(bool(0)) # False
print(bool(None)) # False
print(bool('')) # False
print(bool([])) # False
print(bool(())) # False
print(bool({})) # False
print(bool(1)) # True
print(bool(-1)) # True
print(bool('0')) # True
print(bool('a')) # True
print(bool(['a'])) # True
print(bool(('a', 'b'))) # True
三.分支结构
python中分支结构关键字: if, elif, else
分支结构:哪个分支后边的条件成立,就执行哪个分支下方(缩进内)的代码块
- 单分支结构
"""
单分支结构语法
if 条件:
代码块1
else:
代码块2
"""
-
判断一个年份是否是闰年
-
条件1:能够被4整除,但不能被100整除
-
条件2:能够被400整除
-
year = int(input('年份:'))
if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
print('闰年')
else:
print('平年')
- 输入两个整数a和b,若a-b结果为奇数,输出结果,否则输出信息a-b的结果为偶数
- 使用not解决
a = int(input('第1个整数:'))
b = int(input('第二个整数:'))
if not (a - b) % 2:
print(f'{a} - {b}结果为偶数')
else:
print(a-b)
- 多分支结构
"""
多分支结构语法
if 条件1:
代码块1
elif 条件2:
代码块2
elif 条件3:
代码块3
......
else:
代码块N
"""
- 判断一个年份是否是闰年
- 条件1:能够被4整除,但不能被100整除
- 条件2:能够被400整除
year = int(input('年份:'))
if not year % 4 and year % 100:
print('闰年')
elif not year % 400:
print('闰年')
else:
print('平年')
- 嵌套分支
- 判断一个数是否是偶数,如果是偶数,再判断这个数是否是10的倍数
num = int(input('整数:'))
if not num % 2:
if not num % 10:
print('10的倍数')
else:
print('偶数')
else:
print('奇数')
- 三目运算符
"""
三目运算符语法
变量 = 结果1 if 条件 else 结果2
"""
- 判断一个数是否为偶数
num = int(input('输入整数:'))
if not num % 2:
if not num % 10:
print('10的倍数')
else:
print('偶数')
else:
print('奇数')
四.分支结构练习
- 根据年龄打印成年或未成年
- 使用三目运算符
age = int(input('年龄:'))
result = '未成年' if age < 18 else '成年'
print(result)
- 判断一个数是否为水仙花数
- 水仙花数(三位数):个位³ + 十位³ + 百位³ = 三位数本身
num = int(input('三位整数:'))
# 取数
a = num // 100
b = num % 100 // 10
c = num % 10
if a ** 3 + b ** 3 + c ** 3 == num:
print('水仙花数')
else:
print('不是水仙花数')
- 拓展:使用字符串取数判断是否为水仙花数
num = input('三位整数:')
if int(num[0]) ** 3 + int(num[1]) ** 3 + int(num[2]) ** 3 == int(num):
print('水仙花数')
else:
print('不是水仙花数')
- 输入三条边长,如果能构成三角形就计算周长
- 两边之和大于第三边
a = float(input('第1个数:'))
b = float(input('第2个数:'))
c = float(input('第3个数:'))
if a + b > c and a + c > b and b + c > a:
print(f'{round(a + b + c, 2)}')
else:
print('不能构成三角形')
五.循环结构
循环关键字: for-in, while
循环次数确定,使用for-in循环,反之使用while循环
- for-in循环
"""
for循环语法:
for 变量 in 序列:
代码块
序列:字符串, 列表, 元组, 集合, 字典, range()等
"""
range():序列,左闭右开,step(步长)默认为1
range(N):N为非0自然数,[0,N)
range(M, N):N一定>M,[M,N)
range(M, N, step):手动设置step, step<0时, M>N,倒序, [M, N)
step步长,表示间隔|step|(绝对值)-1取数,例如:step =2时,取数1, 3, 5, 7…
- 计算1-100的和
sum1 = 0
for i in range(1, 101):
sum1 += i
print(sum1)
- while循环
"""
语法:
while 条件:
代码块
"""
- 猜数字游戏
- 1-100之间的猜数
import random
# 生成随机数
result = random.randint(1, 100)
# print(result)
num = int(input('猜数(输入1-100之间整数):'))
count = 1
while True:
if num > result:
num = int(input('小一点:'))
count += 1
elif num < result:
num = int(input('大一点:'))
count += 1
else:
print(f'猜对了,共猜了{count}次')
break
六.作业练习
- while循环输出0-100内所有3的倍数
n = 0
while 0 <= n <= 100:
if not n % 3:
print(n, end='\t')
n += 1
# 空输出换行
print()
- 用循环计算n的阶乘
sum2 = 1
n = int(input('输入n(正整数):'))
for i in range(1, n+1):
sum2 *= i
print(sum2)
- 求斐波那契数列中第n个数的值
- 1, 1, 2, 3, 5, 8, 13, 21, 34, 55…
x, y = 0, 1
n = int(input('第几个数:'))
for i in range(n):
x, y = y, x + y
print(x)
七.拓展
- 求任意两个数的最小公倍数
- 两数相乘除以最大公约数
m = int(input('第1个数:'))
n = int(input('第2个数:'))
for i in range(min(m, n), int(min(m, n) ** 0.5) - 1, -1):
if not(m % i or n % i):
print(m * n // i)
break
else:
print(m * n)