Python 作业二

作业1:某商店T恤的价格为35元/件(2件9折,3件以上8折),裤子的价格为120 元/条(2条以上9折).小明在该店买了3件T恤和2条裤子,请计算并显示小明应该付多少钱?
shirts = int (input("请问要购买几件T恤:"))
shorts = int (input("请问要购买几条裤子:"))

if shirts == 0 or shirts == 1:
    shirts_p = shirts * 35
elif shirts == 2:
    shirts_p = 35 * shirts * 0.9
elif shirts >= 3:
    shirts_p = 35 * shirts * 0.8

if shorts == 0 or shorts == 1:
    shorts_p = shorts * 120
elif shorts >= 2:
    shorts_p = 120 * shorts * 0.9

print(shirts_p + shorts_p)

在这里插入图片描述

作业2:鸡兔同笼,从上面看有35个头,从下面看有94只脚,请问鸡有几只,兔有几只?
def sums():
    for i in range(0,36):
        for j in range(0,36):
            if (i + j == 35) and (i * 2 + j * 4 == 94):
                print(i,j)


sums()

在这里插入图片描述

作业3:猜数字游戏
电脑随机一个范围内的数,用户输入数据判断,
如果数大了,提供”数大了“
成功之后,加上用户是否继续功能
import random

nums = float(input("请输入一个0-100的整数:"))
n = random.randint(0, 100)

while nums <= 100:
    if nums > n:
        nums = float(input("数大了,请重新输入:"))
    if nums < n:
        nums = float(input("数小了,请重新输入:"))
    if nums == n:
        print("恭喜你,答对了")
        break

在这里插入图片描述

作业4:猜拳游戏:石头、剪刀、布的游戏
import random


nums = int(input("请输入你想出的手势(0为石头;1为剪刀;2为布):"))
res = random.randint(0, 2)
if 0<= nums <= 2:
    if (nums == 0 and res == 0) or (nums == 1 and res == 1) or (nums == 2 and res == 2):
        print(f"它出的是{res}")
        print("平手")
    elif (nums == 0 and res == 1) or (nums == 1 and res == 2) or (nums == 2 and res == 0):
        print(f"它出的是{res}")
        print("你赢了")
    elif  (nums == 0 and res == 2) or (nums == 1 and res == 0) or (nums == 2 and res == 1):
        print(f"它出的是{res}")
        print("你输了")
else:
    print("您输入的手势有误")
print("程序运行结束")

在这里插入图片描述

作业5:如果两个素数之差为2,这样的两个素数就叫作"孪生数",找出100以内的所有"孪生数".
numbers = []

for i in range(1, 101):
    for j in range(2, (i//2)+1):
        if (i % j) == 0:
            break
    else:
        numbers.append(i)

def func():
    for a in numbers:
        for b in numbers:
            if a - b == 2:
                print(a, b)

func()

在这里插入图片描述

作业6:求50~150之间的质数是那些?
for i in range(50, 151):
    for j in range(2, (i//2)+1):
        if (i % j) == 0:
            break
    else:
        print(i)

在这里插入图片描述

作业7:打印输出标准水仙花数,输出这些水仙花数
for i in range(100,1000):
    a = str(i)
    nums = list(a)
    if (int(nums[0])**3 + int(nums[1])**3 + int(nums[2])**3) == i:
        print(i)

在这里插入图片描述

作业8:验证:任意一个大于9的整数减去它的各位数字之和所得的差,一定能被9整除.
# 假设只取1000以下的数来验证
abm = int(input("请输入一个大于9的整数(10-1000):"))
if 10 <= abm < 100:
    a = str(abm)
    nums = list(a)
    c = abm - (int(nums[0]) + int(nums[1]))
    if c % 9 == 0:
        print("验证成功")
    else:
        print("验证失败")

elif 100 <= abm < 1000:
    a = str(abm)
    nums = list(a)
    c = abm - (int(nums[0]) + int(nums[1])+int(nums[2]))
    if c % 9 == 0:
        print("验证成功")
    else:
        print("验证失败")
else:
    print("您输入的数有误或超出指定范围")

在这里插入图片描述

作业9:一个五位数,若在它的后面写上一个7,得到一个六位数A,若在它前面写上一个7,得到一个六位数B,B是A的五倍,求此五位数.
for i in range(10000, 100000):
    a = (i * 10) + 7
    b = int("7"+str(i))
    if (b/a) == 5:
        print(i)

在这里插入图片描述

作业10:有一种最简真分数,它们的分子与分母的乘积都是140,把所有这样的真分数从小到大打印出来
for i in range(1, 141):
    for j in range(1, 141):
        if i*j == 140 and i < j:
            print(f"{i}/{j}")

在这里插入图片描述

作业11:某数被80除所得的商,不但是7的倍数,而且用2, 3, 4, 5, 6去除余数都是1,求这 个自然数

以1000以内的数为例:

for i in range(81, 1000):
    a = i // 80
    b = i % 80
    if a % 7 == 0 and b % 2 == 1 and b % 3 == 1 and b % 4 == 1 and b % 5 == 1 and b % 6 == 1:
        print(i)

在这里插入图片描述

作业12:编程求出满足以下条件的三位数:它除以11所得的商等于它各位数字之和
for i in range(100, 1000):
    a = i // 11
    b = str(i)
    c = list(b)
    if a == int(c[0]) + int(c[1]) + int(c[2]):
        print(i)

在这里插入图片描述

作业13:有一堆硬币,每次只能拿一个或者两个,求最少多少次可以拿完硬币
[10, 8, 5, 3, 27, 99]
heap_ls = [10, 8, 5, 3, 27, 99]
nums = 0

for i in heap_ls:
    if i & 1 == 0:
        nums += i/2
    else:
        nums += i//2 + 1

print(nums)

在这里插入图片描述

作业14:求1~100之间不能被3整除的数之和
res = 0
for i in range(1, 101):
    if i % 3 != 0:
        res += i

print(res)

在这里插入图片描述

作业15:给定一个正整数N,找出1到N(含)之间所有质数的总和
n = int(input("请输入一个正整数:"))
res = 0
for i in range(1, n+1):
    for j in range(2, i//2 + 1):
        if i % j == 0:
            break
    else:
        res += i
print(res)

在这里插入图片描述

作业16:给定一个列表,求最大值(不能使用系统api),求最小值,求平均值、求和
sums = [3, 2, 5, -1, 12, 10, 7, 9, 15, 6]

for i in range(len(sums) - 1):
    for j in range(len(sums) - 1 - i):
        if sums[j] > sums[j + 1]:
            sums[j], sums[j + 1] = sums[j + 1], sums[j]

max_num = sums[9]
min_num = sums[0]

sue_num = 0
for i in sums:
    sue_num += i

average_num = sue_num / 10

print(f"该列表的最大值为{max_num}")
print(f"该列表的最小值为{min_num}")
print(f"该列表的和为{sue_num}")
print(f"该列表的平均值为{average_num}")

在这里插入图片描述

作业17:将list中的重复数据去重,至少使用两种方案

方法一:

sums = [3, 2, 5, -1, 2, 10, 7, 3, 15, 6, 10]

sums = list(set(sums))

print(sums)

在这里插入图片描述
方法二:

nums1 = [3, 2, 5, -1, 2, 10, 7, 3, 15, 6, 10]
nums2 = []

for i in nums1:
    if i not in nums2:
        nums2.append(i)

print(nums2)

在这里插入图片描述

作业18:两个列表进行合并操作
nums1 = [3, 2, 5, -1, 2, 10, 7, 3, 15]
nums2 = [2, 5, 8, 7]

nums1.extend(nums2)
print(nums1)

在这里插入图片描述

作业19: 使用列表判断一个列表是否在另外一个列表中
nums1 = [3, 2, 5, -1, 5, 2, 10, 7, 8, 15]
nums2 = [2, 5, 8, 5, 7]
nums3 = []

for i in nums1:
    if i in nums2:
        nums2.remove(i)

if nums2 == nums3:
    print("nums2列表在nums1列表中")
else:
    print("nums2列表不在nums1列表中")

在这里插入图片描述

作业20:列表的反转 列表的排序

反转

nums1 = [3, 2, 5, -1, 5, 2, 10, 7, 8, 15]

nums1.reverse()
print(nums1)

在这里插入图片描述
排序:

nums1 = [3, 2, 5, -1, 5, 2, 10, 7, 8, 15]

nums1.sort()
print(nums1)

在这里插入图片描述

作业21:如何将0-10随机存入列表中
nums = []

for i in range(0, 11):
    nums.append(i)

print(nums)

在这里插入图片描述

作业22:
不死兔子问题,小明妈妈给买了一对刚刚出生的兔子,已知,一对刚刚出生的兔子需要成长四个月,才能成为成年的兔子,成年的兔子每一个会生一对小兔子,问,第n月,共有多少对兔子。
# 斐波那契数列
# 123456月
# 1   1   2   3  5   8
def nums(n):
    if n == 1 or n == 2:
        return 1
    return nums(n - 1) + nums(n - 2)


print(nums(7))

在这里插入图片描述

作业23:汉诺塔
// An highlighted block
var foo = 'bar';
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值