python入门牛刀小试03

本文解析了几个经典算法案例,包括百钱买百鸡问题的求解、生成随机验证码的交互程序、递归打印九九乘法表的方法以及统计字符串中不同字符类型的计数。

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

# 1、百钱买百鸡的问题算是一套非常经典的不定方程的问题,题目很简单:
# 公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱,
# 用100文钱买一百只(x)鸡, 其中公鸡,母鸡,小鸡都必须要有,问公鸡,母鸡,小鸡要买多少只刚好凑足100文钱。
def chicken():
    for x in range(1,20): #公鸡不能超过20只:5 * 20 = 100
        for y in range(1,33):
            if 5*x+3*y+(100-x-y)/3 == 100:
                print("公鸡%s,母鸡%s,小鸡%s"%(x,y,100-x-y))
chicken()
# 2、制作4位字符组成随机验证码4位字符组成,不区分大小写
# 流程:
# - 用户执行程序
# - 给用户显示需要输入的验证码
# - 用户输入的值
# 用户输入的值和显示的值相同时实现正确信息;
# 否则继续生成随机验证码继续等待用户输入
# 生成随机验证码代码示例:
# # (print(chr(97)):输出结果为a)
import random
def fun_code():
    while True:
        code = ""
        for i in range(4):
            code += random.choice("asdfghjklZXCVBqerty0123456789sxcaSCDASax")
        print(code)
        in_code = input("请输入验证码:")
        if in_code.lower() == code.lower():
            print("验证成功")
            break
        else:
            print("验证失败")
fun_code()

#3、使用递归的方式打印九九乘法表
#方法一
def mul9x9(x):
    # 计算打印每一行的内容 x控制的是行
    # 下面这个循环控制的是列
    for i in range(1, x + 1):
        print('%d x %d = %d' % (x, i, x * i), end='\t')
    print()
    # 结束条件是9行
    if x == 9:
        return
    else:
        return mul9x9(x + 1)
mul9x9(1)

#方法二
def get_result(num):
    if num == 1:
        print("1 * 1 = 1")
    else:
        get_result(num - 1)
        for i in range(1, num + 1):
            print("%d * %d = %d" % (i, num, i * num), end="\t")
        print()

get_result(10)
# 4、输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
# 方法一
string = input("请输入一行字符串:")
dic = {}
for i in string:
    if i in dic:
        dic[i]+=1
    else:
        dic[i]=1
print(dic)
# 方法二
string = input("请输入一行字符串:")
flag = 0
for i in string:
    if string.count(i,flag) == string.count(i):
        print(i,string.count(i,flag))
        flag+=1
#方法三
print("请输入一行字符:")
str01 = input()
digit_mum = 0
string_num = 0
space_num = 0
other_num = 0
for s in str01:
    if s.isdigit():
        digit_mum += 1
    elif s.isalpha():
        string_num += 1
    elif s.isspace():
        space_num += 1
    else:
        other_num += 1
print("其中英文字母%d个、空格%d个、数字%d个、其它字符%d个" % (string_num, space_num, digit_mum, other_num))
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值