Python_day4

流程控制—分支结构—十二生肖

# 在书写代码时,一定严格遵守python的语法要求 缩进

if True:
    pass # pass 在代码库中专门用于 占位
    print(111) #在编写python脚本时,相同代码块要保持相同的缩进


'''
让用户输入一个四位数的年份,来计算这个年份所对应的生肖年
十二生肖
鼠、牛、虎、兔、龙、蛇、马、羊、猴、鸡、狗、猪
0   1  2  3  4  5   6  7  8  9  10  11

获取用户输入 input(),print() 打印输出

'''

# 获取用户输入的年份
year = int(input('请输入四位数的年份:'))
if year % 12 == 0:
    print('鼠年')
elif year % 12 == 1:
    print('牛年')
elif year % 12 == 2:
    print('虎年')
elif year % 12 == 3:
    print('兔年')
elif year % 12 == 4:
    print('龙年')
elif year % 12 == 5:
    print('蛇年')
elif year % 12 == 6:
    print('马年')
elif year % 12 == 7:
    print('🐏年')
elif year % 12 == 8:
    print('猴年')
elif year % 12 == 9:
    print('鸡年')
elif year % 12 == 10:
    print('狗年')
else:
    print('猪年')



# 代码优化

# 获取年份
year = int(input("请输入四位数的年份:"))
n = year % 12
# 定义十二生肖 列表
varlist = ['鼠','牛','虎','兔','龙','蛇','马','羊','猴','鸡','狗','猪']
print(varlist(n))

流程控制—循环结构


# 定义变量
num = 1

# while 循环: 判断当前的条件是否成立
while num <= 10:
    # 执行代码
    print(num) # 输出 变量 内容
    num += 1 # 更改变量,目的主要为来继续进行下一步,并且朝着循环结束的方向发展
print(num)

# for循环 通常用来遍历一个容器类型的数据
vars = '12345'
# 使用 for...in... 循环,遍历容器类型数据,那么中间的 i 变量就是当时容器类型中的每一个元素
for i in vars:
    priint(i)

for i in range(1,10):
    print(i)

# break 语句 结束,跳出
# continue  语句  跳过
# pass  语句  占位

# range() 是一个函数,返回一个迭代对象
print(range(1,10),type(range(1,10)))

num = 100
while num <= 100:
    # 怕毛短当前的num,是否为1
    if num % 2 == 0:
         continue  #跳出本次循环,继续执行下一次
    else:
     print(num)

# 判断当前的num是否==7
    
if num == 7:
#  break  # t跳出循环,后面不执行,结束循环


练习—打印矩阵

# 矩形打印

# 输出十行十列

# 第一种
num = 1
while num <= 100:
    print('&',end="")
    # 判断是否需要换行
    if num % 10 == 0:
        print()
    num += 1

# 第二种
num = 0
while num < 100:
    print('&',end="")
    # 判断是否需要换行
    if num % 10 == 9:
        print()
    num += 1


# 隔列换色
num = 1
while num <= 100:
    if num % 2 == 0:
    # 判断当前的是奇数还是偶数
        print('&',end="")
    else:
        print(' $ ',end="")
    # 判断是否需要换行
    if num % 10 == 0:
        print()
    num += 1

九九乘法表

# 99乘法表
'''
9行

'''

for x in range(1,10):
    print(x)
    # 第二次循环,内循环
    # 内循环负责当前行的列数
    for y in range(1,x+1):
        print(f'{x}*{y}={x*y}',end=" ")

    '''
    1
1*1=1 2
2*1=2 2*2=4 3
3*1=3 3*2=6 3*3=9 4
4*1=4 4*2=8 4*3=12 4*4=16 5
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 6
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 7
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 8
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 9
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81 
    '''

# 外循环控制当前的行,倒着输出
for i in range(9,0,-1):
    print(i)
    # 内循环负责当前行的列数
    for y in range(1, i + 1):
        print(f'{x}*{y}={i*y}', end=" ")

斐波那契数列

# 斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13,特别指出:第0项是0,第1项是第一个1。从第三项开始,每一项都等于前两项之和。


# 递归方法
def fib_recur(n):
    if n <= 1:
        return n
    else:
        return fib_recur(n - 1) + fib_recur(n - 2)


def ex(c):
    return int(c)


X = input().strip().split()
N = list(map(lambda a: int(a), X))[0]

for i in range(1, N):
    print(fib_recur(i), end=' ')


# 递推方法
def fib_loop(n):
    a, b = 0, 1
    for i in range(n + 1):
        a, b = b, a + b
    return a


for i in range(20):
    print(fib_loop(i), end=' ')

百钱买百鸡

# 《算经》中有一道很有趣的数学题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?

for rooster in range(101):
    for hen in range(101):
        for chick in range(101):
            if rooster + hen + chick == 100 and rooster*5 + hen*3 + chick/3 == 100:
                print(f'公鸡{rooster}只,母鸡{hen}只,鸡雏{chick}只。 ')

# 优化程序
'''
1. 三种鸡的数量一共是100只,鸡雏的数量可以用100减去公鸡和母鸡的数量,这样就可以省掉一个变量,继而省掉一层循环,大大地提高了效率。

2. 受价格的限制,每种鸡的购买数量有一个更低的上限。比如公鸡一只要5钱,那么100钱最多只能买20只公鸡,根本达不到100只。我们上面设置的上限过于粗略,存在浪费。

'''
for rooster in range(21):
    for hen in range(34):
        if rooster*5 + hen*3 + (100-rooster-hen)/3 == 100:
            print(f'公鸡{rooster}只,母鸡{hen}只,鸡雏{100-rooster-hen}只。 ')
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值