学习Python的第二天
补充
不好意思,昨天忘记把课后习题加进去了,在这里补充
-
输入圆的半径,计算圆的周长和面积
-
英制单位转换公制单位,英寸和厘米转换
题目讲解
#第一题 #导入包 import math r = float(input('请输入圆的半径')) #带入公式 perimeter = 2 * r * math.pi area = math.pi * r ** 2 #输入格式 print(f'圆的周长为{perimeter:.4f}') print(f'圆的面积为{area:.4f}') 第二题 x = float(input('请输入长度(英寸)')) #带入转换公式 print(f'{x}英寸 = {2.54 * x}厘米')
分支结构
要么。。。。。
要么。。。。。
选择 其中满足的一个要求执行
if 条件:
else:
# 运行登录系统,输入用户ID,和密码登录系统 #当ID和密码正确则登录成功,反之登录失败 username = input('请输入用户名') password = input('请输入密码') if username == 'admin' and password == 'admin123': print('登录成功,欢迎使用xxx系统') pass else: print('登录失败,用户名或密码错误') pass print('程序结束,再见') #以上代码存在一个问题,输入密码时不是掩码,所以需要导入一个包进行修改,可以暂时不理解包的作用,用就对了 import getpass username = input('请输入用户名') password = getpass.getpass('请输入密码') if username == 'admin' and password == 'admin123': print('登录成功,欢迎使用xxx系统') pass else: print('登录失败,用户名或密码错误') pass print('程序结束,再见')
进一步联系分段函数-多分枝
分段函数求值
分枝再多也只执行一个
格式
if条件:
elif条件:
elif条件:
elif条件:
elif条件:
else:
注意:代码块:保持相同缩进的代码就属于同一个代码块
求分段函数
f ( x ) = { 3 x − 5 , x > 1 x + 2 , − 1 ≤ x ≤ 1 5 x + 3 , x < − 1 f(x) = \begin{cases}3x - 5, &x \gt 1 \\ x + 2, &-1 \le x \le 1 \\5x + 3, & x \lt-1\end{cases} f(x)=⎩⎪⎨⎪⎧3x−5,x+2,5x+3,x>1−1≤x≤1x<−1
x = float(input('x = '))
if x > 1:
y = 3 * x - 5
pass
#多分枝运算
elif -1 <= x <= 1:
y = x + 2
pass
else:
y = 5 * x + 3
pass
print(f'f(x) = {y}')
循环结构
for-in循环
结构
for i in range(0, n)n次循环
for i in range(m, n)m-n次循环
练习如下
for i in range(0,5):
print('hello, word')
print('人生苦短, 我用python')
for i in range(1, 15, 2):#隔2循环一次
print('hello, word')
print('人生苦短, 我用python')
for i in range(1, 28, 5):#隔5循环一次
print('hello, word')
print('人生苦短, 我用python')
for i in range(1, 15, -1):#反向循环
print('hello, word')
print('人生苦短, 我用python')
# 不在循环缩进内的代码不循环
加深练习
累加
count = 0
for i in range(0, 101):#1到100累加,101为开区间
count += i
print(count)
count = 0
for i in range(0, 101, 2):#1到100,奇数相加
count += i
print(count)
count = 0
for i in range(2, 101, 2):#1到100偶数相加
count += i
print(count)
再次练习
1到100三的倍数或5的倍数的数进行累加,加上之前所学的分支结构
count = 0
for i in range(1, 101):
if i % 3 == 0 or i % 5 == 0:
count += i
pass
else:
pass
print(count)
指定一个数进行阶乘
和累加结构基本相同
count = 1
n = int(input('请输入一个非负整数 '))
for i in range(1, n+1):
count *= i
print(f'{n}! = {count}')
求最大公约数
此处用到一个数学公式:欧基原理
x = int(input('x = '))
y = int(input('y = '))
while y % x != 0:
x, y = y % x, x#同时赋值,将y%x赋值给x,将x赋值给y
print(x)
课后作业
-
找出100到999之间的水仙花数(各个位置上的立方和刚好等于这个数本本身)
例如:153 = 1^3 + 5^3 + 3^3list1 = [] for i in range(100, 1000): x1 = ((i - i % 100) / 100) ** 3 x2 = ((i % 100 - i % 10) / 10) ** 3 x3 = (i % 10) ** 3 print(x3, x2, x1) if x1 + x2 + x3 == i: list1.append(i) print(list1)
-
找出1~10000之间的完美数(除自身外所有因子的和等于这个数)
例如:6 = 1 + 2 +3
28 = 1 + 2 + 4 + 7 + 14for i in range(2, 10000): temp = 0 for j in range(1, i-1): if i % j == 0: temp += j if temp == i: print(i)
-
输入m和n(m >= n), 计算C(m, n)的值----->m! / (n! * (m - n)!)
m = int(input('请输入一个正整数m = ')) n = int(input('请输入一个正整数(小于m)n = ')) x1 = 1 x2 = 1 x3 = 1 for i in range(1, m+1): x1 *= i pass for o in range(1, n+1): x2 *= o pass for u in range(1, m-n+1): x3 *= u pass print(x1 / x2 * x3)
-
输入一个正整数,判断他是不是质数(只能被1和自身整除的数)
count = int(input('请输入一个正整数')) for i in (range(2, count - 1)): if count % i == 0: print('该数不是质数') break else: print('该数是质数') break
-
输入三角形三条边的长度,如果能钩秤三角形就计算周长和面积,如果不能构成三角形,提示用户重新输入,直到正确
count = 0 a = float(input('输入第一条边长=')) b = float(input('输入第二条边长=')) c = float(input('输入第三条边长=')) while count == 1: if a + b > c and a + c > b and b + c > a: count = 1 pass else: print('请重新输入边长') p = (a + b + c) / 2 area = (p * (p - a) * (p - b) * (p - c)) ** (1 / 2) print(f'该三角形面积为{area}')
相关解析,明天讲解