Python练习(二)

目录

设计一个程序,完成(英雄)商品的购买

有一些四位数,百位数字都是3,十位数字都是6,并且它们既能被2整除,又能被3整除,求这样的四位数中最大的和最小的两数各是几?

编程求一个四位自然数ABCD,它乘以A后变成DCBA

用户输入两个数a、b。如果a能被b整除或a加b大于1000,则输出a;否则输出b。

请输入一个数,判断这个数是偶数还是奇数,如果使用偶数,请判断从1到该数是3的倍数有哪些,如果是奇数,请判断从1到该数是5的倍数有哪些

输入三边的长度,求三角形的面积和周长(海伦公式)

某商店T恤的价格为35元/件(2件9折,3件以上8折),裤子的价格为120 元/条(2条以上9折).小明在该店买了3件T恤和2条裤子,请计算并显示小明应该付多少钱?

鸡兔同笼,从上面看有35个头,从下面看有94只脚,请问鸡有几只,兔有几只?

猜数字游戏(使用random模块完成)

猜拳游戏:石头、剪刀、布的游戏

11. 判断以下哪些不能作为标识符 ( B D F )

12. 输入数,判断这个数是否是质数(要求使用函数 + for循环)

13. 求50~150之间的质数是那些?

14. 打印输出标准水仙花数,输出这些水仙花数

15. 验证:任意一个大于9的整数减去它的各位数字之和所得的差,一定能被9整除.

16. 一个五位数,若在它的后面写上一个7,得到一个六位数A,若在它前面写上一个7,得到一个六位数B,B是A的五倍,求此五位数.

17.有一堆硬币,每次只能拿一个或者两个,求最少多少次可以拿完硬币 [10, 8, 5, 3, 27, 99]

18. 如果两个素数之差为2,这样的两个素数就叫作"孪生数",找出100以内的所有"孪生数".

19. 给定一个列表,求最大值(不能使用系统api),求最小值,求平均值、求和

20. 将list中的重复数据去重,至少使用两种方案

21. 两个列表进行合并操作

22. 使用列表判断一个列表是否在另外一个列表中

23. 列表的反转 列表的排序

24. 如何将0-10随机存入列表中

25. 完成一个登录注册案例(要求使用容器保存数据)

26. 求十进制数字9的二进制编码:

求十进制数字9的二进制编码中的1的数量:

27. 求1~100之间不能被3整除的数之和

28. 给定一个正整数N,找出1到N(含)之间所有质数的总和

29.计算PI(公式如下:PI=4(1-1/3+1/5-1/7+1/9-1.......)

30. 给定一个10个元素的列表,请完成排序(注意,不要使用系统api)

31.求 a+aa+aaa+.......+aaaaaaaaa=?其中a为1至9之中的一个数,项数也要可以指定。

32. 合并两个有序数组,合并后还是有序列表

33.给定一个非负整数数组A,将该数组中的所有偶数都放在奇数元素之前

34.将10进制数据转换为二进制,并且统计其中的0和1的数量

35.给定一个数组,已知数组中的元素都是成对出现,现在数组中只有一个元素没有成对,请找出这个元素。[1,3,1,2,2,8,8]

1. 设计一个程序,完成(英雄)商品的购买

展示商品信息(折扣)->输入商品价格->输入购买数量->提示付款

输入付款金额->打印购买小票(扩展)

print("\n\t\t英雄商城购买英雄")
print("英雄信息")
print("~ *"*14)
print("\n")
print("\t英雄联盟:盲僧(史诗)")
print("\t英雄属性:生命值(428)/能量值200(+0)/移动速度425/攻击力/55.8(+3.2)")
print("\t\t攻击速度0.651(+3.1%)/护甲值24(+1.25)/攻击距离125\n")
print("\t英雄座右铭:一人之行可灭世,众人之勤可救世!")
print("\t英雄价格:3000")
print("\t折扣价格:9.5\n")
print("~ *"*14)
a = int(input("请输入商品价格:"))
b = int(input("请输入购买数量:"))
c = int(input("(温馨提示)请付款:"))
m = a*b*0.95
n = c-m
while n < 0:
    print("您的金额不够")
    break
else:
    print("购买成功")
    print("\n\t\t英雄商城购买英雄")
    print("英雄购买票据")
    print("~ *"*14)
    print("\n")
    print("\t英雄联盟:盲僧(史诗)")
    print("\t英雄价格:3000")
    print("\t折扣价格:9.5\n")
    print("\t购买数量:{}".format(b))
    print("\t应付付款:{}".format(m))
    print("\t实际付款:{}".format(c))
    print("\t找零:{}".format(n))

2. 有一些四位数,百位数字都是3,十位数字都是6,并且它们既能被2整除,又能被3整除,求这样的四位数中最大的和最小的两数各是几?

num = []
for i in range(1000, 10000):
    if i % 2 == 0 and i % 3 == 0 and (i // 100) % 10 == 3 and (i // 10) % 10 == 6:
        num.append(i)
print(min(num), max(num))

3. 编程求一个四位自然数ABCD,它乘以A后变成DCBA

print('符合要求的自然数有:')
for A in range(1, 10):
    for B in range(0, 10):
        for C in range(0, 10):
            for D in range(0, 10):
                x = A * 1000 + B * 100 + C * 10 + D
                y = D * 1000 + C * 100 + B * 10 + A
                if x * A == y:
                    print(x)
                    

4. 用户输入两个数a、b。如果a能被b整除或a加b大于1000,则输出a;否则输出b。

a = int(input('请输入第一个数:'))
b = int(input('请输入第二个数:'))
if a % b == 0 or a + b > 1000:
    print(a)
else:
    print(b)

5. 请输入一个数,判断这个数是偶数还是奇数,如果使用偶数,请判断从1到该数是3的倍数有哪些,如果是奇数,请判断从1到该数是5的倍数有哪些

x = int(input('请输入一个数:'))
if x % 2 == 0:
    print(f'{x}为偶数,从1到{x}是3的倍数的有:')
    for i in range(1, x + 1):
        if i % 3 == 0:
            print(i)
else:
    print(f'{x}为奇数,从1到{x}是5的倍数的有:')
    for i in range(1, x + 1):
        if i % 5 == 0:
            print(i)
            

6. 输入三边的长度,求三角形的面积和周长(海伦公式)

x = int(input('请输入第一条边:'))
y = int(input('请输入第一条边:'))
z = int(input('请输入第一条边:'))
if x + y > z or x + z > y or z + y > x:
    C = x + y + z
    p = C / 2
    S = (p * (p - x) * (p - y) * (p - z)) ** 0.5
    print(f'这个三角形的周长为:{C}')
    print(f'这个三角形的面积为:{S}')
else:
    print('这三边无法构成三角形!!!')
    

7. 某商店T恤的价格为35元/件(2件9折,3件以上8折),裤子的价格为120 元/条(2条以上9折).小明在该店买了3件T恤和2条裤子,请计算并显示小明应该付多少钱?

shirt = 35
kz = 120
x = int(input('请输入买T恤的件数:'))
y = int(input('请输入买裤子的件数:'))
if x == 2:
    shirt = shirt * 0.9
if x > 3:
    shirt = shirt * 0.8
if y > 2:
    kz = kz * 0.9
print(f'小明应付{x * shirt + y * kz}元')

8. 鸡兔同笼,从上面看有35个头,从下面看有94只脚,请问鸡有几只,兔有几只?

for chicken in range(0, 36):
    rabbit = 35 - chicken
    if chicken * 2 + rabbit * 4 == 94:
        print(f'鸡有{chicken}只,小兔子有{rabbit}只')
        

9. 猜数字游戏(使用random模块完成)

电脑随机一个范围内的数,用户输入数据判断,

如果数大了,提供”数大了“

成功之后,加上用户是否继续功能

import random
num = random.randint(0, 100)
game = int(input('请输入您猜的数字:'))
while True:
    if num == game:
        print('恭喜您,猜对啦!!!')
        break
    elif game > num:
        print('猜大了,请小点!')
        game = int(input('请输入您猜的数字:'))
    else:
        print('数字小了,请猜大点!!!')
        game = int(input('请输入你猜的数字:'))
        

10. 猜拳游戏:石头、剪刀、布的游戏

import random
player = int(input('请出拳: 0--石头; 1--剪刀; 2--布:'))
computer = random.randint(0, 2)
if ((player == 0) and (computer == 1)) or ((player == 1) and (computer == 2)) or ((player == 2) and (computer == 1)):
    print("您赢啦,真厉害,哈哈哈哈")
elif player == computer:
    print("平局,别走哈,再来一局")
else:
    print("别灰心,电脑获胜!")

11. 判断以下哪些不能作为标识符 ( B D F )

A、a

B、¥a

C、_12

D、$a@12

E、false

F、False

分析:标识符定义标准:

  • 不能以数字开头
  • python3.x版本的标识符支持汉字
  • 不建议使用内置对象作为标识符
  • 不能用关键字作标识符
  • 区分大小写

12. 输入数,判断这个数是否是质数(要求使用函数 + for循环)

def xy(num):
    for i in range(2, num + 1):
        if num % i == 0:
            break
    if num == i:
        print('这个数是质数!')
    else:
        print('这个数不是质数!')


num = int(input('请输入一个数,判断这个数是不是质数:'))
print(xy(num))

13. 求50~150之间的质数是那些?

def xy(n):
    for i in range(2, n // 2 + 1):
        if n % i == 0:
            return False
    return True


for i in range(50, 151):
    if xy(i):
        print(f"{i}是质数")

14. 打印输出标准水仙花数,输出这些水仙花数

for i in range(100, 1000):
    a = int(i / 100)
    b = int(i % 100 / 10)
    c = int(i % 100 % 10)
    if i == a ** 3 + b ** 3 + c ** 3:
        print(f"水仙花数有:{i}")
        

15. 验证:任意一个大于9的整数减去它的各位数字之和所得的差,一定能被9整除.

def ck(num):
    a = 0
    num = 0
    while num != 0:
        a += num % 10
        num //= 10
    if (num-a) % 9 == 0:
        return True
    return False


num = int(input('请输入一个大于9的整数:'))
if ck(num):
    print('符合')
else:
    print('不符合')
    

16. 一个五位数,若在它的后面写上一个7,得到一个六位数A,若在它前面写上一个7,得到一个六位数B,B是A的五倍,求此五位数.

def xy():
    for i in range(10000, 100000):
        A = (i * 10) + 7
        B = i + 700000
        if B / A == 5:
            print(i)


xy()

17.有一堆硬币,每次只能拿一个或者两个,求最少多少次可以拿完硬币 [10, 8, 5, 3, 27, 99]

s = [10, 8, 5, 3, 27, 99]
num = 0
for i in s:
    x = i % 2
    if x == 0:
        num = i // 2 + num
    else:
        num = i // 2 + num + 1
print(f'需要取{num}次')

18. 如果两个素数之差为2,这样的两个素数就叫作"孪生数",找出100以内的所有"孪生数".

l = []
for num in range(2, 101):
    flag = True
    for i in range(2, num):
        if num % i == 0:
            flag = False
            break
    if flag:
        l.append(num)
    else:
        pass
print("1~100以内的素数有:")
print(l)
i = 1
while i < len(l):
    if l[i] - l[i - 1] == 2:
        print("{}和{}是孪生数".format(l[i], l[i - 1]), end=" ")
        if i == 6 or i == 10:
            print(" ")
    i += 1

19. 给定一个列表,求最大值(不能使用系统api),求最小值,求平均值、求和

lx = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
print(f'最大值为:{max(lx)}')
print(f'最小值为:{min(lx)}')
print(f'和为:{sum(lx)}')
print(f'平均值为:{sum(lx) / len(lx)}')

20. 将list中的重复数据去重,至少使用两种方案

lx = [10, 70, 80, 50, 20, 90, 20, 30, 40, 50, 60, 70, 80, 90, 100]
for i in lx:
    lx1 = list(set(lx))
print(f'列表lx去重后的元素为{lx1}')

# 方法二:
ly = []
for i in lx:
    if i not in ly:
        ly.append(i)
print('列表lx去重后的元素为:', ly)

21. 两个列表进行合并操作

lx = [1, 2, 3, 4, 5]
ly = [6, 7, 8, 9, 20]
print('合并后的列表为:%s' % (lx + ly))

22. 使用列表判断一个列表是否在另外一个列表中

lx = [1, 2, 3, 4, 5]
ly = [1, 2, 3, 4, 5, 6, 7, 8, 9, 20]
for i in lx:
    if i not in ly:
        print('lx不在列表ly中')
        break
    else:
        print('lx在列表ly中')
        break
        

23. 列表的反转 列表的排序

lx = [1, 6, 56, 25, 35, 84]
for i in lx:
    nlx = list(reversed(lx))
print("反转后为:%s" % nlx)

ly = [1, 5, 6, 4, 8, -1, 89]
ly.sort()
print("排序后为:%s" % ly)

24. 如何将0-10随机存入列表中

import random
lx = []
for i in range(10):
    lx.append(random.randint(0, 10))
print('添加后的元素为:%s' % lx)

25. 完成一个登录注册案例(要求使用容器保存数据)

username = str(input("请输入您的用户名:"))
password = str(input("请输入您的密码:"))
if username == "易烊千玺" and password == "123456":
    print("登陆成功~ 易烊千玺,您好!欢迎回来")

26. 求十进制数字9的二进制编码:

求十进制数字9的二进制编码中的1的数量:

27. 求1~100之间不能被3整除的数之和

sum = 0
for number in range(1, 101):
    if number % 3 != 0:
        continue
    sum += number
print(sum)

28. 给定一个正整数N,找出1到N(含)之间所有质数的总和

def xy(x):
    if x == 1:
        return False
    for i in range(2, x // 2 + 1):
        if x % i == 0:
            return False
    return True


n = int(input('请输入一个正整数N:'))
y = 0
for x in range(1, n + 1):
    if xy(x):
        y += x
print(f'1到N(含)之间所有质数的总和为:{y}')

29.计算PI(公式如下:PI=4(1-1/3+1/5-1/7+1/9-1.......)

def PI():
    n = 0
    sum_PI = 0
    for i in range(1, 1000, 2):
        sum_PI += ((-1) ** n) * (1 / i)
        n += 1
    PI = 4 * sum_PI
    return PI


print(f'PI = {PI()}')

30. 给定一个10个元素的列表,请完成排序(注意,不要使用系统api)

def s(ls=[]):
    for i in range(len(ls)):
        index_min = i
        for j in range(i + 1, len(ls)):
            if ls[index_min] > ls[j]:
                index_min = j
        ls[index_min], ls[i] = ls[i], ls[index_min]
    return ls


ls = [93, 14, 12, 67, 74, 87, 3, 8, 2, 28]
print(f'原列表为:{ls}')
print(f'选择排序法排序后的列表为:{s(ls)}')

31.求 a+aa+aaa+.......+aaaaaaaaa=?其中a为1至9之中的一个数,项数也要可以指定。

def one_sum(a, n):
    sum_a = 0
    for i in range(1, n + 1):
        num = int(f'{a}' * i)
        sum_a += num
    return sum_a


a = int(input('请输入一个在区间[1,9]的正整数:'))
n = int(input('请输入指定的项数:'))
print(f'所求多项式的和为:{one_sum(a, n)}')

32. 合并两个有序数组,合并后还是有序列表

def s(ls=[]):
    for i in range(len(ls)):
        index_min = i
        for j in range(i + 1, len(ls)):
            if ls[index_min] > ls[j]:
                index_min = j
        ls[index_min], ls[i] = ls[i], ls[index_min]
    return ls


ls_1 = [1, 3, 5, 7, 9]
ls_2 = [2, 4, 6, 8, 10]
print(f'原有序列表1为:{ls_1}')
print(f'原有序列表2为:{ls_2}')
ls_1.extend(ls_2)
print(f'合并后的有序列表为:{s(ls_1)}')

33.给定一个非负整数数组A,将该数组中的所有偶数都放在奇数元素之前

def e(ls=[]):
    for i in range(len(ls)):
        if ls[i] % 2 != 0:
            for j in range(i + 1, len(ls)):
                if ls[j] % 2 == 0:
                    ls[i], ls[j] = ls[j], ls[i]
                    break
    return ls


ls = [1, 4, 7, 8, 10, 13, 17, 18, 29]
print(f'原列表为:{ls}')
print(f'将偶数置于奇数前,列表变为:{e(ls)}')

34.将10进制数据转换为二进制,并且统计其中的0和1的数量

def t(num):
    binary_num = bin(num)
    ls = list(str(binary_num))[2:]
    count_0 = 0
    count_1 = 0
    for i in ls:
        if int(i) == 0:
            count_0 += 1
        else:
            count_1 += 1
    return count_0, count_1


num = int(input('请输入一个整数:'))
print(f'将{num}转换为二进制为:{bin(num)[2:]}')
print(f'其中0的数量为:{t(num)[0]}个')
print(f'其中1的数量为:{t(num)[1]}个')

35.给定一个数组,已知数组中的元素都是成对出现,现在数组中只有一个元素没有成对,请找出这个元素。[1,3,1,2,2,8,8]

def n(ls):
    temp = 0
    for i in ls:
        temp ^= i
    return temp


ls = [1, 3, 1, 2, 2, 8, 8]
print(f'{ls}中不成对的元素为:{n(ls)}')

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值