每天学点python-字符串和常用数据结构(2)

本文为Python学习系列,重点在于实践操作,包括跑马灯文字显示、验证码生成、文件后缀获取、列表元素查找、日期计算以及杨辉三角的打印等六个编程练习,旨在提升Python编程技能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以下内容学习自:https://github.com/jackfrued/Python-100-Days

练习

练习1:在屏幕上显示跑马灯文字

# -*- coding: utf-8 -*-
"""
Created on Fri Aug  9 16:34:29 2019

@author: fengzi
"""

import os
import time

def main():
    content = "好好学习天天向上…………"
    while True:
        #清理屏幕上的输出
        os.system("cls") # os.system("clear")
        print(content)
        # 休眠200毫秒
        time.sleep(1)
        content = content[1:] + content[0]
        
if __name__ == "__main__":
    main()

在这里插入图片描述
练习2:设计一个函数产生指定长度的验证码,验证码由大小写字母和数字构成。

import random


def generate_code(code_len=4):
    
    """
    生成指定长度的验证码
    
    :param code_len: 验证码的长度(默认4个字符)

    :return: 由大小写英文字母和数字构成的随机验证码
    """
    all_chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
    last_pos = len(all_chars) - 1
    code = ''
    for _ in range(code_len):
        index = random.randint(0, last_pos)
        code += all_chars[index]
    return code
  • 此程序运行不出结果,回头补上。

练习3:设计一个函数返回给定文件名的后缀名。

# -*- coding: utf-8 -*-
"""
Created on Tue Aug 13 16:15:37 2019

@author: fengzi
"""
def get_suffix(filename, has_dot = False):
    """
    获取文件名的后缀名

    :param filename: 文件名
    :param has_dot: 返回的后缀名是否需要带点
    :return: 文件的后缀名
    """
    pos = filename.rfind('.')
    if 0 < pos < len(filename) - 1:
        index = pos if has_dot else pos + 1
        return filename[index:]
    else:
        return ''

练习4:设计一个函数返回传入的列表中最大和第二大的元素的值。

# -*- coding: utf-8 -*-
"""
Created on Tue Aug 13 16:20:55 2019

@author: fengzi
"""

def max2(x):
    m1, m2 = (x[0], x[1]) if x[0] > x[1] else (x[1], x[0])
    for index in range(2, len(x)):
        if x[index] > m1:
            m2 = m1
            m1 = x[index]
        elif x[index] > m2:
            m2 = x[index]
    return m1, m2

练习5:计算指定的年月日是这一年的第几天

# -*- coding: utf-8 -*-
"""
Created on Tue Aug 13 17:07:00 2019

@author: fengzi
"""
"""
    判断指定的年份是不是闰年

    :param year: 年份
    :return: 闰年返回True平年返回False
"""
def is_leap_year(year):
    return year % 4 == 0 and year % 100 != 0 or year % 400 == 0

"""
    计算传入的日期是这一年的第几天

    :param year: 年
    :param month: 月
    :param date: 日
    :return: 第几天
"""

def which_day(year, month, date):
    days_of_month = [
        [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
        [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
    ][is_leap_year(year)]
    total = 0
    for index in range(month - 1):
        total += days_of_month[index]
    return total + date

def main():
    print(which_day(1980, 11, 28))
    print(which_day(1981, 12, 31))
    print(which_day(2018, 1, 1))
    print(which_day(2016, 3, 1))
    print(which_day(2019, 8, 13))
    
if __name__ == "__main__":
    main()

在这里插入图片描述
练习6:打印杨辉三角。

# -*- coding: utf-8 -*-
"""
Created on Tue Aug 13 17:20:19 2019

@author: fengzi
"""

def main():
    num = int(input('Number of rows: '))
    yh = [[]] * num
    for row in range(len(yh)):
        yh[row] = [None] * (row + 1)
        for col in range(len(yh[row])):
            if col == 0 or col == row:
                yh[row][col] = 1
            else:
                yh[row][col] = yh[row - 1][col] + yh[row - 1][col - 1]
            print(yh[row][col], end='\t')
        print()


if __name__ == '__main__':
    main()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值