python练习题

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整除,求这样的四位数中最大的和最小的两数各是几?

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

在这里插入图片描述

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

num = 1000
while num < 10000:
    g = num % 10
    s = (num // 10) % 10
    b = (num // 100) % 10
    q = num // 1000
    if num * q == (g*1000+s*100+b*10+q):
        print(num)
    num += 1

在这里插入图片描述

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的倍数有哪些

num = int(input("请输入一个数:"))
if num % 2 == 0:
    for i in range(1, num + 1):
        if i % 3 == 0:
            print(i)
else:
    for i in range(1, num + 1):
        if i % 5 == 0:
            print(i)

在这里插入图片描述

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

a = float(input('输入三角形第一边长: '))
b = float(input('输入三角形第二边长: '))
c = float(input('输入三角形第三边长: '))
C = a + b + c
s = (a + b + c) / 2
area = (s*(s-a)*(s-b)*(s-c)) ** 0.5
print(f'三角形的周长为:{C}')
print('三角形面积为 %0.2f' %area)

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

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

for i in range(1, 36):
    for j in range(1, 36):
        if i + j == 35 and i * 2 + j * 4 == 94:
            print(f'鸡有{i}只,兔子有{j}只')

在这里插入图片描述

9、猜数字游戏(使用random模块完成)
电脑随机一个范围内的数,用户输入数据判断,
如果数大了,提供”数大了“
成功之后,加上用户是否继续功能

import random
num = random.randint(0, 99)

while True:
    number = int(input('请输入一个数:'))
    if num > number:
        print("小了")
    elif num < number:
        print("大了")
    else:
        print("你真棒!")
        break

在这里插入图片描述

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

player = int(input('请出拳: 0--石头; 1--剪刀; 2--布:'))
import random

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、输入数,判断这个数是否是质数(要求使用函数 + for循环)

def zhishu(a):
    check = 0
    for i in range(2, number):
        if number % i == 0:
            check = 1
    if check == 0:
        print(number, '是质数')
    else:
        print(number, '不是质数')


number = int(input('请输入数字:'))
zhishu(number)

在这里插入图片描述

12、求50~150之间的质数是那些?

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


print('50-150的所有质数有:')
for x in range(50, 151):
    if isPrime(x):
        print(x, end='  ')

在这里插入图片描述

13、打印输出标准水仙花数,输出这些水仙花数

# 打印输出标准水仙花数,输出这些水仙花数
num_list=[]
for i in range(100,1000):
    b = i // 100
    s = i // 10 %10
    g = i % 10
    if b**3+s**3+g**3 == i:
        num_list.append(i)

print(num_list)

在这里插入图片描述

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

def check(num):
    count = 0
    back_num = num
    while num != 0:
        temp = num % 10
        num //= 10
        count += temp

    if (back_num - count) % 9 == 0:
        return True
    else:
        return False


numbers = int(input("请输入一个大于9的整数:"))
print(check(numbers))

在这里插入图片描述

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

def search():
    for i in range(10000, 100000):
        A = i * 10 + 7
        B = 7 * 100000 + i
        if B % A == 0 and B // A == 5:
            print(i)


search()

在这里插入图片描述

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

coin = [10, 8, 5, 3, 27, 99]
x = 0
for i in coin:
    if i % 2 == 0:
        x += i // 2
    else:
        x += i // 2 + 1
print(f"最少{x}次可以拿完硬币")

在这里插入图片描述

17、如果两个素数之差为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

在这里插入图片描述

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

l = [10, 70, 80, 50, 20, 90, 20, 30, 40, 50, 60, 70, 80, 90, 100]
for i in l:
    l = list(set(l))
print(f'列表l去重后的元素为:{l}')
 
# 方法二:
ly = []
for i in l:
    if i not in l:
        l.append(i)
print('列表l去重后的元素为:', l)

在这里插入图片描述

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

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

在这里插入图片描述

20、两个列表进行合并操作

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

在这里插入图片描述

21、 使用列表判断一个列表是否在另外一个列表中

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

在这里插入图片描述

22、列表的反转 列表的排序

l1 = [1, 6, 56, 25, 35, 84]
for i in l1:
    nl1 = list(reversed(l1))
print("反转后为:%s" % nl1)
 
l2 = [1, 5, 6, 4, 8, -1, 89]
l2.sort()
print("排序后为:%s" % l2)

在这里插入图片描述

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

  1. 求1~100之间不能被3整除的数之和
sum = 0
for number in range(1, 101):
    if number % 3 != 0:
        continue
    sum += number
print(sum)

在这里插入图片描述

  1. 给定一个正整数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()}')

在这里插入图片描述

  1. 给定一个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)}')

在这里插入图片描述

  1. 合并两个有序数组,合并后还是有序列表
    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)}')			

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值