Python习题练习整理

1、循环输出九九乘法表

for i in range(1, 10):
    for j in range(1, i + 1):
        print(f'{j} x {i} = {i*j}\t', end='')
    print()
1 x 1 = 1	
1 x 2 = 2	2 x 2 = 4	
1 x 3 = 3	2 x 3 = 6	3 x 3 = 9	
1 x 4 = 4	2 x 4 = 8	3 x 4 = 12	4 x 4 = 16	
1 x 5 = 5	2 x 5 = 10	3 x 5 = 15	4 x 5 = 20	5 x 5 = 25	
1 x 6 = 6	2 x 6 = 12	3 x 6 = 18	4 x 6 = 24	5 x 6 = 30	6 x 6 = 36	
1 x 7 = 7	2 x 7 = 14	3 x 7 = 21	4 x 7 = 28	5 x 7 = 35	6 x 7 = 42	7 x 7 = 49	
1 x 8 = 8	2 x 8 = 16	3 x 8 = 24	4 x 8 = 32	5 x 8 = 40	6 x 8 = 48	7 x 8 = 56	8 x 8 = 64	
1 x 9 = 9	2 x 9 = 18	3 x 9 = 27	4 x 9 = 36	5 x 9 = 45	6 x 9 = 54	7 x 9 = 63	8 x 9 = 72	9 x 9 = 81	

2、打印等腰三角形

def put_triangle(num):
    for i in range(num):
        for j in range(0, num - i):
            # 打印空格
            print(end=" ")
        for k in range(2 * i + 1):
            print("*", end="")
        print()
put_triangle(5)
     *
    ***
   *****
  *******
 *********

3、输出九宫格

def jiugongge_func(size):
    if type(size) == int:
        if size % 2 != 0 and size > 0:
            array = [[0] * size]
            # 创建一个长度为size * size的二维列表
            for i in range(size - 1):
                array += [[0] * size]
            # 设置行列的初始化值
            row = 0
            column = size // 2
            for i in range(1, size * size + 1):
                # 设置第一行中间的值
                array[row][column] = i
                # 如果整除size时,则下一个元素直接往下移动一行,列不变
                if i % size == 0:
                    row += 1
                # 如果在首行,下一个元素的行应在最后一行,列往右移动一列
                elif row == 0:
                    row = size - 1
                    column += 1
                # 如果在最后一列,下一个元素的行应该往前移动一行,列移动至首列
                elif column == size - 1:
                    row -= 1
                    column = 0
                # 普通情况下,行向上移动一行,列向右移动一列
                else:
                    row -= 1
                    column += 1
            for i in range(size):
                for j in range(size):
                    print('%02d' % array[i][j], end=" ")
                print()
        else:
            print('您输入的数据有误,仅支持奇数,请重新输入')
    else:
        print(type(size))
        print('输入数据类型不正确,请重新输入')
jiugongge_func(5)
17 24 01 08 15 
23 05 07 14 16 
04 06 13 20 22 
10 12 19 21 03 
11 18 25 02 09 

4、打印菱形

def put_diamond(num):
    if num % 2 != 0:
        half_num = num // 2 + 1
        # 区分上半部分、下半部分
        for i in range(half_num):
            print(" " * (half_num - i), end="")
            print("*" * (2 * i + 1))
        for i in range(half_num - 1):
            print(" " * (i + 2), end="")
            print("*" * (num - 2 - 2 * i))
    else:
        print('用户输入为偶数,不支持打印')
put_diamond(5)
   *
  ***
 *****
  ***
   *

5、判断成绩等级ABCD

def user_score(num):
    if type(num) == int or type(num) == float:
        if num >= 90:
            print('A')
        elif num >= 80:
            print('B')
        elif num >= 70:
            print('C')
        else:
            print('D')
    else:
        print('输入的数据不符合要求,请重新输入!')
user_score('str')       # 输入的数据不符合要求,请重新输入!
user_score(85)          # B
user_score(92.5)          # A

6、判断素数/输出质数

def is_prime_func(start_num, end_num):
    new_list = []
    for i in range(start_num, end_num + 1):
        # 设置标志位:质数为True
        is_prime = True
        for j in range(2, int(i ** 0.5) + 1):
            if i % j == 0:
                is_prime = False
        if is_prime:
            # 使用列表将质数保存起来
            new_list.append(i)
    print(new_list)
is_prime_func(101, 200)			
# [101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199]

7、水仙花数:三位数(各位数字的立方和等于该数本身)

# 将int型数据转换成字符串切片计算
def sxh_num_proc(start_num, end_num):
    if len(str(start_num)) == 3 and len(str(end_num)) == 3:
        new_list = []
        for i in range(start_num, end_num + 1):
            i = str(i)
            new_num = (int(i[0]))**3 + (int(i[1]))**3 + (int(i[2]))**3
            if int(i) == new_num:
                new_list.append(i)
        print(new_list)
    else:
        print('输入数据格式不正确,请重新输入!')
sxh_num_proc(100, 999)          # ['153', '370', '371', '407']
sxh_num_proc(100, 1000)         # 输入数据格式不正确,请重新输入!
sxh_num_proc(99, 1000)          # 输入数据格式不正确,请重新输入!
# 通过获取三位数的百位、十位、各位数据计算结果
def sxh_num_proc(start_num, end_num):
    if len(str(start_num)) == 3 and len(str(end_num)) == 3:
        new_list = []
        for i in range(start_num, end_num + 1):
            # 获取百位的值
            bai_num = i // 100
            # 获取十位的值
            shi_num = (i - bai_num * 100) // 10
            # 获取个位的值
            ge_num = i % 10
            new_num = ge_num ** 3 + shi_num ** 3 + bai_num ** 3
            if i == new_num:
                new_list.append(i)
        print(new_list)
    else:
        print('输入数据格式不正确,请重新输入!')
sxh_num_proc(100, 999)          # ['153', '370', '371', '407']
sxh_num_proc(100, 1000)         # 输入数据格式不正确,请重新输入!
sxh_num_proc(99, 1000)          # 输入数据格式不正确,请重新输入!

8、一行字符串统计其英文字母、空格、数字、其他字符的个数

def count_character(string):
    digit_num = 0
    alpha_num = 0
    space_num = 0
    other_num = 0
    for str in string:
        # isdigit函数判断是否是数据类型
        if str.isdigit():
            digit_num += 1
        # isalpha函数判断是否是字母类型
        elif str.isalpha():
            alpha_num += 1
        # isspace判断是否是空格
        elif str.isspace():
            space_num += 1
        else:
            other_num += 1
    print("数字类型的个数为:{0}".format(digit_num))
    print("字母类型的个数为:{0}".format(alpha_num))
    print("空格个数为:{0}".format(space_num))
    print("其他字符的个数为:{0}".format(other_num))

count_character("Do not forget me. I will not remember anthing else. 123456789")
# 数字类型的个数为:9
# 字母类型的个数为:40
# 空格个数为:10
# 其他字符的个数为:2

9、判断是否闰年

def is_leap(year):
    if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
        return True
    else:
        return False
print(is_leap(2008))        # True
print(is_leap(2007))        # False

10、阶乘

def fn(n):
    result = 1
    for i in range(2, n + 1):
        result *= i
    return result
print(fn(5))        # 120

11、立方和

def fn(n):
    result = 1
    for i in range(2, n + 1):
        result += i**3
    return result
print(fn(5))		# 225

12、函数返回一个包含n个不重复的0-100之间整数的元组

import random
def fn(n):
    i, tmp_list = 0, []
    while True:
        num = random.randint(0, 100)
        # 如果随机数不包含在列表中,则保存
        if num not in tmp_list:
            tmp_list.append(num)
            i += 1
        if i == n:
            break
    # 将列表转成元组返回
    return tuple(tmp_list)
n = int(input("请输入整数n:"))
print(fn(n))

13、函数返回一个包含n个不重复的大写字母的元组

def fn(n):
    i, tmp_list = 0, []
    while True:
        num = random.randint(65, 65 + 25)
        # 如果随机数不包含在列表中,则保存
        if chr(num) not in tmp_list:
            tmp_list.append(chr(num))
            i += 1
        if i == n:
            break
    # 将列表转成元组返回
    return tuple(tmp_list)
# n = int(input("请输入整数n:"))
print(fn(12))

14、对列表直接排序

# 查找最小的放在首位,后续依次存放
def list_sort(list):
    len_list = len(list)
    for i in range(len_list):
        for j in range(i + 1, len_list):
            if list[i] > list[j]:
                list[i], list[j] = list[j], list[i]
list_test = [3, 14, -20, -2, 50]
list_sort(list_test)
print(list_test)			# [-20, -2, 3, 14, 50]
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值