【Python算法】算法练习(一)

❤️博客主页 iknow181
系列专栏 Python、JavaSE、JavaWeb、CCNP
欢迎大家点赞收藏⭐评论✍


在这里插入图片描述

目录

1、输出n以内的质数

2、求n以内最大的m个质数的和,并打印这些质数以及它们的和

方法一

方法二

3、将字符串里的大小写互转

4、使用蒙特卡洛方法计算圆周率

5、给定行、列数之后生成二维数组,如下所示:

方法一:用列表

方法二:直接加

6、制作一个简单的两位整数加减法试卷生成模板


1、输出n以内的质数

n = int(input('请输入n:'))
for i in range(2, n):
    for j in range(2, i):
        if i % j == 0:
            break
    else:
        print(i,end=' ')

2、求n以内最大的m个质数的和,并打印这些质数以及它们的和

方法一

n = int(input('请输入n:'))
m = int(input('请输入m:'))
sum1 = 0
list1 = []
for i in range(2,n):
    for j in range(2,i):
        if i % j == 0:
            break
    else:
        list1.append(i)
count = len(list1)
star = count - m
if m < count:
    while star < count:
        print(list1[star])
        sum1 += list1[star]
        star += 1
    print(sum1)
else:
    print(f'{m}太多了,{n}以内最多有{count}个质数,请重新输入!')

方法二

n = int(input('请输入n:'))
m = int(input('请输入m:'))
print(f'{n}以内最大的{m}个质数:', end=" ")
sum1 = 0
count = 0
num = n
while count < m:
    for j in range(2, num):
        if num % j == 0:
            break
    else:
        print(num, end=' ')
        sum1 += num
        count += 1
    num -= 1
print(f'\n这些质数和是:{sum1}')

3、将字符串里的大小写互转

ord()可将英文字母转换成ASC码的数字,小写和大写的英文字母之间相差32
chr()可将ASC码的数字转换成英文字母
例如:输入字符串"HEllO WorLD",将这个字符串中每个字母的大小写互转

str1 = input('请输入:')
print(f'输入:{str1}')
print(f'输出:', end=' ')
for i in range(len(str1)):
    if str1[i] >= 'A' and str1[i] <= 'Z':
        print(chr(ord(str1[i]) + 32), end=' ')
    elif str1[i] >= 'a' and str1[i] <= 'z':
        print(chr(ord(str1[i]) - 32), end=' ')
    else:
        print(str1[i],end=' ')

4、使用蒙特卡洛方法计算圆周率

计算过程如下:
在边长为2的正方形里,绘制一个半径为1的圆,然后模拟向正方形里随机放置豆子的过程,豆子不
能重叠,假设投进圆里的次数为:n,总的投掷次数为N
圆周率(pi)约等于4*n/N(正方形的面积为4,圆的面积为pi*r^2,两者相除,即可得到前面的
公式)

建模思想!

import random
while True:
    N = int(input('您要投多少次:'))
    n = 0
    count = 0
    while count < N:
        x = random.uniform(-1, 1)
        y = random.uniform(-1, 1)
        d = ((x ** 2) + (y ** 2)) ** (1 / 2)
        if d >= 0 and d <= 1:
            n += 1
        count += 1
    pi = 4 * n / N
    print(f'圆周率pi的值大约为:{pi}')
    con = input("continue(y/n):")
    if con.lower() == 'n':
        break

5、给定行、列数之后生成二维数组,如下所示:

01 02 03 04 05
06 07 08 09 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25

方法一:用列表

n = int(input('请输入行:'))
m = int(input('请输入列:'))
nm = n * m  # 最大数
length = len(str(nm))  # 看最大是几位数
star = 1  # 初始值
for i in range(n):
    for j in range(m):
        length1 = len(str(star))  # 当前数字的位数
        length2 = length - length1  # 当前数字前补零的个数
        starlist = [str(star)]
        count = 0
        while count < length2:
            starlist.insert(0, '0')
            count += 1
        starstr = ''.join(starlist)
        print(starstr, end=' ')
        star += 1
    print()

方法二:直接加

n = int(input('请输入行:'))
m = int(input('请输入列:'))
nm = n * m  # 最大数
star = 1  # 初始值
for i in range(n):
    for j in range(m):
        print('0' * (len(str(nm)) - len(str(star))) + str(star), end=' ')
        print(str(star).zfill(len(str(nm))), end=' ')
        star += 1
    print()

6、制作一个简单的两位整数加减法试卷生成模板

​​每次生成10道题,要求学生回答完毕后,给出得分,并标明哪些题目回答错误。同时询问学生是否继续进行测试,回答no即退出,回答yes即继续测试。

例如考试题目:
1. 10 + 20 =
2. 30 - 15 =
3. 45 + 70 =
....
10. 50 - 22 =
正确答案:
1. 10 + 20 = 20
2. 30 - 15 = 15
3. 45 + 70 = 115
....
10. 50 - 22 = 28
您的得分:90
您做错的题目是:
第1道
是否继续测试(yes/no)
import random
while True:
    print('考试题目:')
    worrylist = []  # 错题编号
    testlist = []  # 题目列表
    scores = 100  # 满分100分
    for i in range(10):
        a = random.randint(10,99)
        b = random.randint(10,99)
        c = random.choice('+-')
        problem = f'{i + 1}. {a} {c} {b} = '  # 题目
        problem1 = f'{a}{c}{b}'  # 式子
        d1 = int(input(problem))  # 输入的答案
        d2 = eval(problem1)  # 正确答案
        testlist.append(f'{problem}{d2}')
        if d1 != d2:
            worrylist.append(i + 1)
            scores -= 10
    print('正确答案:')
    for j in testlist:
        print(j)
    print(f'您的得分:{scores}')
    print('您做错的题目是:')
    for k in worrylist:
        print(f'第{k}道')
    con = input('是否继续测试(yes/no):')
    if con.lower() == 'no':
        break

在这里插入图片描述

你可能感兴趣的:(python,算法)