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~100之间不能被3整除的数之和
sum = 0
for number in range(1, 101):
if number % 3 != 0:
continue
sum += number
print(sum)
- 给定一个正整数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()}')
- 给定一个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)}')
- 合并两个有序数组,合并后还是有序列表
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)}')