Python循环分支结构例题
一、输入一个正整数,判断它是不是质数(只能被1和自身整除的数)
count = int(input('请输入一个正整数:'))
is_prime = True
for i in range(2, count):
if count % i == 0:
is_prime = False
break
if is_prime:
print(f'{count}是质数')
else:
print(f'{count}不是质数')
升级训练 :判断1~100内的质素
for num in range(2,100):
is_prime = True
for i in range(2,num):
if num %i==0:
is_prime = False
break
if is_prime:
print(num,end=' ')
二、输入三角形三条边的长度,如果能构成三角形就计算周长和面积,如果不能构成三角形,提示用户重新输入,直到正确。
import math
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 :
perimeter = a+b+c
half =perimeter/2
area =math.sqrt(half*(half-a)*(half-b)*(half-c))
print(f'周长为{perimeter}')
print(f'面积为{area}')
break
else:
print('不能构成给三角形请重新输入')
三、九九乘法表(循环嵌套案例)
n控制输出规模
n = int(input('n='))
for i in range(1,n+1):
for j in range(1,i+1):
f=i*j
print(f'{i}x{j}={f}',end=' ')
print()
四、找出100-999之间的水仙花数
水仙花数(各位数字的立方和刚好等于这个数本身) 如:153=13+53+3^3
for num in range(100,1000):
bw=num //100
sw=num//10%10
gw=num%10
if bw**3+sw**3+gw**3==num:
print(num)
五、输入一串数字让它反向输出
在不使用字符串相关知识的前提下写出程序 如:123456 —>654321
1234 输出 4321
n = int(input('n='))
total = 0
while n > 0:
total = total * 10 + n % 10
n //= 10
print(total)
六、找出1-10000之间的完美数
完美数(除自身外所有因子的和等于这个数) 如: 6=1+2+3 28=1+2+4+7+14
import time
start = time.time()
for i in range(2, 10001):
temp = 1
for j in range(2, int(i ** 0.5)+1):
if i % j == 0:
temp += j
if i != i // j:
temp += i // j
if temp == i:
print(i)
end = time.time()
print(f'执行时间: {end - start:.3f}秒')
七、输入m和n(m>=n),计算C(m,n)的值—m!/(n!*(m-n)!
输入m和n(m>=n),计算C(m,n)的值—m!/(n!*(m-n)!)
也可加if 先判断m和n的大小
from math import factorial as f
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 j in range(1, n + 1):
x2 *= j
pass
for q in range(1, m - n + 1):
x3 *= q
pass
print(x1 / x2 / x3)
print(f(m) / f(n) / f(m - n))
八、猜数字游戏
计算机产生一个1-100的随机数,人输入自己猜的数字 计算机给出对应的提示“大一点”,“小一点”或恭喜你猜对了“,直到猜中为止。 如果猜的次数超过7次,计算机温馨提示”智商余额明显不足“。
import random
answer = random.randrange(1, 101)
while True:
a = True
for _ in range(1, 8):
num = int(input("请输入猜的数字:"))
if num > answer:
print('大了一点')
a = False
elif num < answer:
print('小了一点')
a = False
else:
print('猜对了')
a = True
break
if a :
break
else:
print('智商余额明显不足')
二分法输入数字确定区间 第一次输入50 如果太大则输入25,太小则输入75 一次确定最终确定值
九、输入十个大于0的整数,1到100之间,找到平均值,最大值,最小值
输入十个大于0的整数,1到100之间,找到平均值,最大值,最小值
total = 0
x = 0
y = 101
for _ in range(1, 11):
a = int(input('请输入10个0~100之间的整数'))
total = total + a
if a >= x:
x = a
elif a <= y:
y = a
average = total / 10
print(f'平均数为{average}最大值为{x}最小值为{y}')
请各位大佬批评指正及优化
|