# 1.判断一个数是否是水仙花数, 水仙花数是一个三位数, 三位数的每一位的三次方的和还等于这个数. 那这个数就是一个水仙花数, 例如: 153 = 1**3 + 5**3 + 3**3
# 方法一:将num作为一个字符串 这里要注意最后比较sum和num的时候,要对num进行类型转换
sum = 0
num = input('请输入一个数字:')
for i in num:
# print(i)
sum += int(i) ** 3
# print(sum)
# sum += pow(int(i))
if sum == int(num): # 注意num要转化成int类型的
print(f'{num}是一个水仙花数')
else:
print(f'{num}不是水仙花数')
# 将num作为一个数字 这里要注意int类型没有len方法,而且因为后面判断sum的时候还要使用原来的num,所以最好创建一个临时变量temp
sum = 0
num = int(input('请输入一个数字:'))
temp = num # 因为后面还要使用原来的num,所以创建一个临时变量temp 注意temp要在for循环的外面
for i in range(len(str(num))): # 控制循环的次数 # int 数据类型是不可迭代的,也没有len()方法
sum += (temp % 10) ** 3 # 计算每一位的三次方的和
temp //= 10
if sum == num:
print(f'{num}是一个水仙花数')
else:
print(f'{num}不是水仙花数')
# 2.给出一个纯数字列表. 请对列表进行排序(升级题, 难度系数很高. 最后再做这个).
# 思路:
# 1.完成a和b的数据交换. 例如, a = 10, b = 24 交换之后, a = 24, b = 10
# 2.循环列表. 判断a[i]和a[i+1]之间的大小关系, 如果a[i]比a[i+1]大. 则进行互换. 循环结束的时候. 当前列表中最大的数据就会被移动到最右端.
lst = [12,2,13,3,14,4,15,5,16,6,10,7,9,8]
# 方法1
lst.sort() # 是直接对原列表的操作
print(lst)
# 方法2
for j in range(len(lst)): # 有多少个数就循环多少次
for i in range(len(lst)-1): # 一次循环只移动一个数字到相应的位置
if lst[i] > lst[i+1]:
lst[i], lst[i+1] = lst[i+1], lst[i]
print(lst)
# 用while写(跟方法2一样)
# lst = [88,5,8,6,1,23]
# for a in range(len(lst)): # 记录内部排序的次数
# i = 0
# while i < len(lst) - 1: # 把最大值移动到右端
# if lst[i] > lst[i+1]: # 比较,
# lst[i], lst[i+1] = lst[i+1], lst[i] # 交换
# i = i + 1
# print(lst)
# 冒泡排序 一次循环只移动一个数字到相应的位置 Java经典写法
# for i in range(len(lst)): # i的取值范围是从0到len(lst)-1
# for j in range(len(lst)-i-1):
# if lst[j] > lst[j+1]:
# lst[j], lst[j+1] = lst[j+1], lst[j]
# j += 1
# i += 1
# print(lst)
# 3.想一想, 如果再次执行一次上面的操作. 最终第二大的数据就移动到了右端. 以此类推. 如果反复的进行执行相应的操作. 那这个列表就变成了一个有序列表.
# 3. 税务部门征收所得税. 规定如下:
# 1). 收入在2000以下的. 免征.
# 2). 收入在2000-4000的, 超过2000部分要征收3%的税.
# 3). 收入在4000-6000的, 超过4000部分要征收5%的税.
# 4). 收入在6000-10000的, 超过6000部分要征收8%的税.
# 5). 收入在10000以上的, 超过部分征收20%的税.
#
# 注, 如果一个人的收入是8000, 那么他要交2000到4000的税加上4000到6000的税加上6000到8000的税.收入= 8000-(4000-2000)*3%-(6000-4000)*4%-(8000-6000)*8%
#
# 让用户输入它的工资, 计算最终用户拿到手是多少钱.
tax_4000 = (4000-2000)*0.03
tax_6000 = (6000-4000)*0.05
tax_10000 = (10000-6000)*0.08
salary = int(input('请输入你的工资:'))
if salary > 10000:
tax = (salary - 10000) * 0.20 + tax_10000 + tax_6000 + tax_4000
elif salary > 6000:
tax = (salary - 6000) * 0.8 + tax_6000 + tax_4000
elif salary > 4000:
tax = (salary - 4000) * 0.5 + tax_4000
elif salary > 2000:
tax = (salary - 2000) * 0.3
else:
tax = 0
print(f'最终你拿到手是{salary-tax}元钱')
# 今天主要的作业就是把前面的作业好好练一练. 认真做好复习.
#
# 默写:
# 简述什么是深浅拷贝.
1. = 没有创建新对象, 只是把内存地址进行了复制
2. 浅拷贝 lst.copy() 只拷贝第一层
3. 深拷贝
import copy
copy.deepcopy(lst) 会把对象内部的所有内容进行拷贝
# 删除列表中姓周的人的信息
lst = ['周芷若', '周伯通', '王重阳', '周葫芦娃']
del_lst = []
#遍历老列表,将要删除的元素放到新列表中
for el in lst:
if '周' in el:
del_lst.append(el)
# 遍历新列表,删除老列表中相同的元素
for i in del_lst:
lst.remove(i)
print(lst)
# 判断一个数是否是水仙花数, 水仙花数是一个三位数,
# 三位数的每一位的三次方的和还等于这个数.
# 那这个数就是一个水仙花数, 例如: 153 = 1**3 + 5**3 + 3**3
n = input("请输入你要判断的数:")
sum = int(n[0])**3 + int(n[1])**3 + int(n[2])**3
if int(n) == sum:
print("是水仙花数")
else:
print("不是水仙花")
# 税务部门征收所得税. 规定如下:
# 1). 收入在2000以下的. 免征.
# 2). 收入在2000-4000的, 超过2000部分要征收3%的税.
# 3). 收入在4000-6000的, 超过4000部分要征收5%的税.
# 4). 收入在6000-10000的, 超过6000部分要征收8%的税. 8000
# 5). 收入在10000以上的, 超过部分征收20%的税.
#
# 注, 如果一个人的收入是8000,
# 那么他要交2000到4000的税加上4000到6000的税加上6000到8000的税.
# 收入= 8000-(4000-2000)*3%-(6000-4000)*4%-(8000-6000)*8%
#
# 让用户输入它的工资, 计算最终用户拿到手是多少钱.
salary = int(input("请输入你的工资:"))
if salary <= 2000:
print("你的税是0")
print("工资是%s" % salary)
elif salary <= 4000:
print("你的税是%s" % ((salary - 2000) * 0.03))
print("工资是%s" % (salary - ((salary - 2000) * 0.03)))
elif salary <= 6000:
print("你的税是%s" % ((2000*0.03) + (salary-4000)*0.05))
print("工资是%s" % (salary - ((2000*0.03) + (salary-4000)*0.05)))
elif salary <= 10000:
print("你的税是%s" % ((2000*0.03) + (2000*0.05) + (salary-6000)*0.08))
print("工资是%s" % (salary - ((2000*0.03) + (2000*0.05) + (salary-6000)*0.08)))
else: # 超过10000
print("你的税是%s" % ((2000 * 0.03) + (2000 * 0.05) + (4000 * 0.08) + (salary - 10000) * 0.2))
print("工资是%s" % (salary - ((2000 * 0.03) + (2000 * 0.05) + (4000 * 0.08) + (salary - 10000) * 0.2)))
# 2.给出一个纯数字列表. 请对列表进行排序(升级题, 难度系数很高. 最后再做这个).
# 思路:
# 1.完成a和b的数据交换. 例如, a = 10, b = 24 交换之后, a = 24, b = 10
# 2.循环列表. 判断a[i]和a[i+1]之间的大小关系, 如果a[i]比a[i+1]大.
# 则进行互换. 循环结束的时候. 当前列表中最大的数据就会被移动到最右端.
# 3.想一想, 如果再次执行一次上面的操作. 最终第二大的数据就移动到了右端.
# 以此类推. 如果反复的进行执行相应的操作. 那这个列表就变成了一个有序列表.
# 冒泡排序, 最low的冒泡. 可以进行优化, ACM, 领扣
lst = [1 , 2, 3, 43, 2, 2, 21, 1, 12, 3] # sort()
for j in range(len(lst)): # ??? 有多少个数. 就循环多少次
for i in range(len(lst)-1):
if lst[i] > lst[i+1]:
lst[i], lst[i+1] = lst[i+1], lst[i] # 核心思想 交换
print(lst)
# a = 10
# b = 24
# a, b = b, a
# print(a)
# print(b)
# 其他编程语言
# c = a
# a = b
# b = c
# print(a, b)