# ---
# jupyter:
#   jupytext:
#     text_representation:
#       extension: .py
#       format_name: light
#       format_version: '1.5'
#       jupytext_version: 1.14.4
#   kernelspec:
#     display_name: Python 3
#     language: python
#     name: python3
# ---

# # 数学函数、字符串和对象
# ## 本章介绍Python函数来执行常见的数学运算
# - 函数是完成一个特殊任务的一组语句，可以理解为一个函数相当于一个小功能，但是在开发中，需要注意一个函数的长度最好不要超过一屏
# - Python中的内置函数是不需要Import导入的
# <img src="../Photo/15.png"></img>

a = -1
print(abs(a))

max(1,2,3,4,5)

min(1,-2,3,4)

max(1,1,2,3,4,4)

pow(4,5)
# 取幂

pow(4,5,2)

# ## 尝试练习Python内置函数

# ## Python中的math模块提供了许多数学函数
# <img src="../Photo/16.png"></img>
# <img src="../Photo/17.png"></img>
#

import math

# %time
a = 10
res = math.fabs(a)
print (res)

x = -12
# 对2x中的x取绝对值
y = math.fabs(2*x)
print(y)

x = eval(input('given a number'))
res = math.fabs(2*x)
print(res)

# %time
a = 10
res = abs(a)
print (res)

b = -2.3
res = math.ceil(b)
#向上取整
print(res)

b = 3.5
res = math.floor(b)
# 向下取整
print(res)

c = 3
d = math.exp(c)
print(d)
#幂函数

e = 2
f = math.log(e,2)
print(f)
#求对数

math.sqrt(4)

math.sin(math.radians(90))
#先从里边运行后运行外边   嵌套式

rad = math.radians(90)
math.sin(rad)

# ## 两个数学常量PI和e，可以通过使用math.pi 和math.e调用

math.pi

# ## EP:
# - 通过math库，写一个程序，使得用户输入三个顶点(x,y)返回三个角度
# - 注意：Python计算角度为弧度制，需要将其转换为角度
# <img src="../Photo/18.png">

a = 1
b = 1
c = math.sqrt(2)
#a = eval(input('bianchang1'))
#b = eval(input('bianchang2'))
#c = eval(input('dibain'))
A = math.acos((math.pow(a,2)-math.pow(b,2)-math.pow(c,2))/(-2*b*c))
B = math.acos((math.pow(b,2)-math.pow(a,2)-math.pow(c,2))/(-2*a*c))
C = math.acos((math.pow(c,2)-math.pow(b,2)-math.pow(a,2))/(-2*b*a))
A = math.degrees(A)
B = math.degrees(B)
C = math.degrees(C)
print(A,B,C)

a = eval(input('bian1'))
b = eval(input('bian2'))
c = eval(input('di'))
A_1 = math.pow(a,2)-math.pow(b,2)-math.pow(c,2)
A_2 = -2*b*c
A = math.acos(A_1/A_2)
B_1 = math.pow(b,2)-math.pow(a,2)-math.pow(c,2)
B_2 = -2*a*c 
B = math.acos(B_1/B_2)
C_1 = math.pow(c,2)-math.pow(b,2)-math.pow(a,2)
C_2 = -2*b*a
C = math.acos(C_1/C_2)
A = math.degrees(A)
B = math.degrees(B)
C = math.degrees(C)
print(A,B,C)

#x1,y1 = eval(input('x1','y1'))
#x2,y2 = eval(input('x1','y1'))
#x3,y3= eval(input('x1','y1'))
x1,y1 = 0,0
x2,y2 = 1,0
x3,y3 = 0,1
a = math.sqrt((x2-x3)**2+(y2-y3)**2)
b = math.sqrt((x3-x1)**2+(y3-y1)**2)
c = math.sqrt((x2-x1)**2+(y2-y1)**2)
A_1 = math.pow(a,2)-math.pow(b,2)-math.pow(c,2)
A_2 = -2*b*c
A = math.acos(A_1/A_2)
B_1 = math.pow(b,2)-math.pow(a,2)-math.pow(c,2)
B_2 = -2*a*c 
B = math.acos(B_1/B_2)
C_1 = math.pow(c,2)-math.pow(b,2)-math.pow(a,2)
C_2 = -2*b*a
C = math.acos(C_1/C_2)
A = math.degrees(A)
B = math.degrees(B)
C = math.degrees(C)
print(A,B,C)

x1,y1 = eval(input('请输入第一个坐标'))
x2,y2 = eval(input('请输入第二个坐标'))
x3,y3 = eval(input('请输入第三个坐标'))
a = math.sqrt((x2-x3)**2+(y2-y3)**2)
b = math.sqrt((x3-x1)**2+(y3-y1)**2)
c = math.sqrt((x2-x1)**2+(y2-y1)**2)
A_1 = math.pow(a,2)-math.pow(b,2)-math.pow(c,2)
A_2 = -2*b*c
A = math.acos(A_1/A_2)
B_1 = math.pow(b,2)-math.pow(a,2)-math.pow(c,2)
B_2 = -2*a*c 
B = math.acos(B_1/B_2)
C_1 = math.pow(c,2)-math.pow(b,2)-math.pow(a,2)
C_2 = -2*b*a
C = math.acos(C_1/C_2)
A = math.degrees(A)
B = math.degrees(B)
C = math.degrees(C)
print(A,B,C)

# ## 字符串和字符
# - 在Python中，字符串必须是在单引号或者双引号内，在多段换行的字符串中可以使用“”“
# - 在使用”“”时，给予其变量则变为字符串，否则当多行注释使用

a = 'yr'
print(type(a))
# 单引号和双引号代表字符串

a = """joker
is
a
good
man
"""
print(type(a))
#  三引号可以进行换行，可以加单、双引号；同时三引号可以当文本使用
#  当不给予变量时，三引号当注释作用

"""joker
is
a
good
man
"""
# 当注释

# ## ASCII码与Unicode码
# - <img src="../Photo/19.png"></img>
# - <img src="../Photo/20.png"></img>
# - <img src="../Photo/21.png"></img>

# ## 函数ord、chr
# - ord 返回ASCII码值
# - chr 返回字符

ord('a')

chr(97)

# ## EP:
# - 利用ord与chr进行简单邮箱加密

chr(49)+chr(50)+chr(51)+chr(52)+chr(53)+chr(54)+chr(55)+chr(56)+chr(57)+chr(64)+chr(113)+chr(113)+chr(46)+chr(99)+chr(111)+chr(109)

chr(ord('a') - 35)

a = chr(ord('a')+10)
b = chr(ord('b')+3)
print(a+b)


# ## 转义序列 \
# - a = "He said,"Johon's program is easy to read"
# - 转掉它原来的意思
# - 一般情况下只有当语句与默认方法相撞的时候，就需要转义

a = "he said ,\"johon's program is easy to read"
a

# 1.三引号和单、双引号的区别是：
#
# -三引号内可以使用换行，单、双引号
#
# -三引号如果不加变量的话，代表是注释（可以换行注释）
#
# 2.单、双引号内是不可以加入单、双引号的，但可以加入双、单引号
#
# 3.如果非要头铁，可以使用“\”（转移字符），表示转掉它原来的意思

# ## 高级print
# - 参数 end： 以什么方式结束打印
# - 默认换行打印

print('joker')
print('hahaha')

print('joker',end='---')
print('hahaha')

print('joker','is','hahaha',sep='***')


# +
import sys,time

for i in range(5):
    sys.stdout.write('{0}/5\r'.format(i+1))
    sys.stdout.flush( )
    time.sleep(1)


# +
import sys,time

for i in range(100):
    print('{}/{}\r'.format(i,100),flush=True,end=' ')
    time.sleep(1)
# -

# ## 函数str
# - 将类型强制转换成字符串类型
# - 其他一些以后会学到(list,set,tuple...)

# ## 字符串连接操作
# - 直接使用 “+” 
# - join() 函数 

# ## EP：
# - 将 “Welcome” “to” "Python" 拼接
# - 将int型 100 与 “joker is a bad man” 拼接
# - 从控制台读取字符串
# > 输入一个名字返回夸奖此人

a = 'welcome'
b = 'to'
c = 'python'
print(a + b + c)

x = ('joker is a bad man')
x1 = str(100)
print(x+x1)

name = input('Name')
print(name,'真美')

# ## 实例研究：最小数量硬币
# - 开发一个程序，让用户输入总金额，这是一个用美元和美分表示的浮点值，返回一个由美元、两角五分的硬币、一角的硬币、五分硬币、以及美分个数
# <img src="../Photo/22.png"></img>

# - Python弱项，对于浮点型的处理并不是很好，但是处理数据的时候使用的是Numpy类型
# <img src="../Photo/23.png"></img>

# ## id与type
# - id 查看内存地址，在判断语句中将会使用
# - type 查看元素类型

# ## 其他格式化语句见书

# # Homework
# - 1
# <img src="../Photo/24.png"><img>
# <img src="../Photo/25.png"><img>

import math

r = eval(input('请输入中心距离'))
s = 2 * r * (math.sin(math.pi/5))
A1 = 5 * s * s
A2 = 4 * math.tan(math.pi/5)
Area = A1/A2
print(Area)

# - 2
# <img src="../Photo/26.png"><img>

x1,y1 = eval(input('请输入经度'))
x2,y2 = eval(input('请输入纬度'))
d1 = math.sin(math.radians(x1)) * math.sin(math.radians(x2))
d2 = math.cos(math.radians(x1)) * math.cos(math.radians(x2)) * math.cos(math.radians(y1-y2))
d3 = math.acos(d1 + d2)
d = 6371.0 * d3
print(d,"km")

# - 3
# <img src="../Photo/27.png"><img>

s = eval(input('请输入边长'))
A1 = 5 * s ** 2
A2 = 4 * math.tan(math.pi/5)
Area = A1/A2
print('The area of the pentagon is',Area)

# - 4
# <img src="../Photo/28.png"><img>

n = eval(input('请输入正多边形边数'))
s = eval(input('请输入边长'))
A1 = n * s ** 2
A2 = 4 * math.tan(math.pi/n)
Area = A1/A2
print('The area of the pentagon is',Area)

# - 5
# <img src="../Photo/29.png"><img>
# <img src="../Photo/30.png"><img>

a = eval(input('请输入整数'))
chr(a)

# - 6
# <img src="../Photo/31.png"><img>

name = input('employee name')#名字
hours = eval(input('hours'))# 时间/小时
rate = eval(input('rate'))# 每小时的报酬
fed = eval(input('fed'))# 联邦预扣税率
state = eval(input('state'))# 州预扣税率
gross = hours * rate # 总工资（未扣税）
fed_1 = fed * gross # 扣除联邦预扣税费
state_1 = state * gross #扣除州预扣税费
net = eval('gross-fed_1-state_1')# 总体-应扣税费
tot = fed_1+state_1 # 应扣税费总和
print(name)
print(hours)
print(rate)
print(fed)
print(state)
print(gross)
print('Deductions:')
print('Federal Withholding(20.0%):',fed_1)
print('State Withholding(9.0%):',state_1)
print('Total Deduction:',tot)
print(net)

name = input('employee name')#名字
hours = eval(input('hours'))# 时间/小时
rate = eval(input('rate'))# 每小时的报酬
fed = eval(input('fed'))# 联邦预扣税率
state = eval(input('state'))# 州预扣税率
gross = hours * rate # 总工资（未扣税）
fed_1 = fed * gross # 扣除联邦预扣税费
state_1 = state * gross #扣除州预扣税费
tot = fed_1+state_1 # 应扣税费总和
net = gross - tot
print(name)
print(hours)
print(rate)
print(fed)
print(state)
print(gross)
print('Deductions:')
print('Federal Withholding(20.0%):',fed_1)
print('State Withholding(9.0%):',state_1)
print('Total Deduction:',tot)
print(net)

# - 7
# <img src="../Photo/32.png"><img>

# +
a = 3125
b = a % 312
c = a // 10 % 31
d = a // 100 % 3
e = a // 1000
print(b,c,d,e)


# -

# - 8 进阶：
# > 加密一串文本，并将解密后的文件写入本地保存

x = chr(ord('性')+4)+chr(ord('女')*4)+chr(ord('男')+10)
print(x)







StarcoderdataJupyterScriptsDedupFiltered