python第五章上机练习简单代码

角谷猜想

以一个正整数n为例,如果n为偶数,就将它变为n/2,如果除后变为奇数,则将它乘3加1(即3n+1)。不断重复这样的运算,经过有限步后,必然会得到1。
本实例要求编写guess函数代码,计算用户输入的数据按照以上规律经多少次运算后可变为1。

def guess(number):
    i=0;   #统计变幻的次数
    original_number=number #记录最初的number
    while number != 1:
        if number % 2 == 0:
          number =number / 2
          i += 1
        else:
          number = number * 3 + 1
          i += 1
    print(f"{original_number}经过{i}次变换后回到1")
num=int(input("请输入一个大于1的正整数:"))
guess(num)

饮品自动售卖机

# 饮品信息
def all_goods():
    goods = {"可口可乐": 2.5, "百事可乐": 2.5, "冰红茶": 3, "脉动": 3.5, "果缤纷": 3,
             "绿茶": 3, "茉莉花茶": 3, "尖叫": 2.5}
    return goods


# 展示饮品信息(名称:价格)
def show_goods():
    print("=" * 25)
    for x, y in all_goods().items():
        print(x, ":", str(y) + "元")
    print("=" * 25)

# 计算总额
def total(goods_choice):
    count = 0
    for name, num in goods_choice.items():
        total_money = all_goods()[name] * num
        # 总金额
        count += total_money
    print("需要支付金额:", count, "元")


def main():
    goods_choice = {}
    print("饮 品 自 动 售 货 机")
    show_goods()
    # 循环选购的商品
    print("输入q完成购买")
    while True:
        goods_name = input("请输入购物的商品:")
        if goods_name == 'q':
            break
        if goods_name in [g_name for g_name in  all_goods().keys()]:
            goods_num = input("请输入购物数量:")
            if goods_num.isdigit():
                goods_choice[goods_name] = float(goods_num)
            else:
                print('商品数量不合法')
        else:
            print('请输入正确的商品名称')
    total(goods_choice)

main()

科赫曲线 雪花图形

利用递归函数,实现科赫曲线,并完成雪花图形的绘制。
import turtle
def koch(size,n):#⼤⼩为size的n阶科赫曲线的绘制
    if n == 0:
        turtle.fd(size)
    else:
        for angle in [0, 60, -120, 60]:
            turtle.left(angle)
            koch(size / 3, n - 1)
def main():
    turtle.setup(600, 600)
    turtle.penup()
    turtle.goto(-200, 100)
    turtle.pendown()
    turtle.pensize(2)
    turtle.speed(10000)
    level = 5
    koch(400, level)
    turtle.right(120)
    koch(400, level)
    turtle.right(120)
    koch(400, level)
    turtle.hideturtle()
    turtle.done()

main()

兔子序列

兔子一般在出生两个月之后就有了繁殖能力,每对兔子每月可以繁殖一对小兔子,假如所有的兔子都不会死,试问一年以后一共有多少对兔子?
本实例要求编写递归函数,利用递归实现根据月份计算兔子总数量的功能。

def fibonacci(month):
    if month == 0 or month == 1:
        return 1
    else:
        return fibonacci(month-1) + fibonacci(month-2)
# 测试经过12个月份后的兔子对数
result = fibonacci(11)
print(result)

判断用户输入的整数是否为回文数

回文数是一个正向和逆向都相同的整数,如123454321,9889。

x = input('请输入任意位数的数字:')
if x == x[::-1]:
    print('%s是个回文数' % x)
else:
    print('%s不是回文数' % x)

求平均值

编写一个函数,求任意多个整数的平均值。(使用参数的打包和解包方法)

print("-----求平均值,可输入任意多个整数-------")
lst = []  # 定义一个空列表
str = input("请输入数值,用空格隔开:")
lst1 = str.split(" ")  # lst1用来存储输入的字符串,用空格分割
i = 0
while i <= len(lst1)+1:
    lst.append(int(lst1.pop()))     # 将lst1的数据转换为整型并赋值给lst
    i += 1
# print(lst)
def sum(list):
    # "对列表的数值求和"
    s = 0
    for x in list:
        s += x
    return s
def average(list):
	 # "对列表数据求平均值"
	avg = 0
	avg = sum(list)/(len(list)*1.0) #调用sum函数求和
	return avg
print("avg = %f"% average(lst))

编写一个匿名函数,输出两个数的和

print((lambda num1, num2: num1 + num2)(75, 63))

ps:说实话,这些代码是之前写的 现在早就考完python 所以如果有问题的话 自己纠错 不要问我 谢谢

你可能感兴趣的:(python,开发语言)