python的分支与循环
分支结构
选择结构
if 语句的使用
if 条件语句:
print()
elif 条件语句:
print()
else:
print()
举例
username = input('输入用户名:')
password = input('输入密码:')
if username == 'a' and password == '1234':
print('登录成功')
else:
print('登录失败')
print('结束')
分段函数求值
y
=
{
3
x
?
5
,
n
?>1
x
+
2
,
-1≤
n
?<1
5
x
+
3
,
n
?<-1
y = \begin{cases} 3x - 5, & \text{$n$ >1} \\ x + 2,& \text{-1≤$n$ <1} \\ 5 x + 3,& \text{$n$ <-1} \\ \end{cases}
y=??????3x?5,x+2,5x+3,?n?>1-1≤n?<1n?<-1? 用 if…elif…else来分段求值
x = float(input('x = '))
if x > 1:
y = 3 * x - 5
elif x >= -1:
y = x + 2
else:
y = 5 * x + 3
print(f'f(x) = {y}')
循环结构
for-in 循环
如果明确的知道循环执行的次数,推荐使用for-in 循环 举例子:实现1-100求和
x = 0
for i in range(1,101):
x += i
print(x)
range(1,101) 是实现的1~100范围的整数,不能取到101.range 用法很灵活如下:
range(100) :产生0~99范围的整数,不能取到100.range(1,101 :产生1~100范围的整数,不能取到101.range(1,100,2) :产生1~99范围的奇数,2为步长,即为每次数值增加的数range(100,1,-1) :产生99~1范围的数,-1为步长,即为每次数值递减的值
举例: 输入非负整数,计算N!
x = int(input('输入一个非负整数:'))
total = 1
for i in range(x, 1, -1):
total *= i
print(total)
while循环
如果要构造不知道具体循环次数的循环结构,推荐使用while 循环.while 循环通过一个能够产生或转换出bool 值的表达式来控制循环,表达式的值为True 则继续循环;表达式的值为False 则结束循环 举例子:猜数游戏
import random
x = random.randint(1,100)
count = 0
while True:
count += 1
y = int(input('输入你的值:'))
if y < x:
print('猜的数小了')
elif y > x:
print('猜的数大了')
else:
print('猜对了')
break
print(f'你猜了{count}次')
上面的代码中使用while True 构造了一个条件恒成立的循环,也就意味着如果不做特殊处理,循环是不会结束的.为了在用户猜中数字时能够退出循环结构,我们使用了break 关键字,它的作用是提前结束循环.break 只能终止它所在的那个循环
举例子:找两个数的最大公约数
x = int(input('输入一个数:'))
y = int(input('再输入一个数:'))
if x > y:
x, y = y, x
while y % x != 0:
y, x = x, y % x
print(x)
例子
找出100-999中的水仙花数
例子:153=1^3 + 5 ^3 + 3 ^3
for i in range(100, 1000):
a = i // 100
b = i // 10 % 10
c = i % 10
if a ** 3 + b ** 3 + c ** 3 == i:
print(i)
输入两个正整数m和n(m>=n),计算C(m,n)的值
例子:m!/(n!*(m-n)!))
m = int(input('输入m的值:'))
n = int(input('输入n的值:'))
a = 1
b = 1
c = 1
for i in range(m, 1, -1):
a *= i
for i in range(n, 1, -1):
b *= i
for i in range(m - n, 1, -1):
c *= i
print(f'C(m,n)的值为:{a / (b * c)}')
输入一个正整数,判断它是不是质数
x = int(input('输入一个正整数:'))
a = 0
for i in range(2,x):
if x % i == 0:
a = 1
break
if a == 0 and x > 1:
print('{:d} 是质数'.format(x))
else:
print('{:d} 不是质数'.format(x))
输出1-100之间的质数
for i in range(2, 100):
a = 0
for k in range(2, i):
if i % k == 0:
a = 1
break
if a == 0:
print(i, end=' ')
输入一个n,打印出如下形式
例子:输入3 打印出: 1 2 2 3 3 3
n = int(input('输入一个数:'))
for i in range(1, n + 1):
for k in range(1, i + 1):
print(i, end=' ')
print()
输出乘法表
for i in range(1, 10):
for k in range(1, i + 1):
print(f'{i}×{k}={k * i}', end='\t')
print()
找出1-10000之间的完美数(除自身之外所有因子的和等于这个数)
例子:6=1+2+3
for i in range(2, 10001):
t = 1
for k in range(2, int(i ** 0.5) + 1):
if i % k == 0:
t += k
if k != i // k:
t += i // k
if t == i:
print(i)
输入三角形三条边,如果能构成计算周长面积,如果不构成,提示重新输入,直到构成
while True:
a = float(input('a='))
b = float(input('b='))
c = float(input('c='))
if a + b > c and a + c > b and b + c > a:
p = a + b + c
q = 0.5 * p
s = (q * (q - a) * (q - b) * (q - c)) ** 0.5
print(f'三角形周长为:{p}')
print(f'三角形面积为:{s:.2f}')
break
else:
print('不能构成三角形,请重新输入!')
|