<jupyter_start><jupyter_text>数学函数、字符串和对象 本章介绍Python函数来执行常见的数学运算- 函数是完成一个特殊任务的一组语句，可以理解为一个函数相当于一个小功能，但是在开发中，需要注意一个函数的长度最好不要超过一屏- Python中的内置函数是不需要Import导入的<jupyter_code>abs(2)
max('joker')
8 **8
pow(8,8)<jupyter_output><empty_output><jupyter_text>尝试练习Python内置函数<jupyter_code>import math
math.ceil(-6.7)
math.exp(1)
math.log(math.exp(1))
math.sin(math.pi/2)
hudu = math.radians(90)
math.sin(hudu)<jupyter_output><empty_output><jupyter_text>Python中的math模块提供了许多数学函数  两个数学常量PI和e，可以通过使用math.pi 和math.e调用  EP:- 通过math库，写一个程序，使得用户输入三个顶点(x,y)返回三个角度- 注意：Python计算角度为弧度制，需要将其转换为角度<jupyter_code>import math #eval（）用来执行一个字符串表达式，并返回表达式的值。
x1,y1 = eval(input("x1,y1:"))
x2,y2 = eval(input("x2,y3:"))
x3,y3 = eval(input("x2,y3:"))
a = math.sqrt(math.pow(x2-x3,2)+math.pow(y2-y3,2))
b = math.sqrt(math.pow(x1-x3,2)+math.pow(y1-y3,2))
c = math.sqrt(math.pow(x2-x1,2)+math.pow(y2-y1,2))
part_1 = -2 * b * c
part_2 = -2 * a * c
part_3 = -2 * a * b
A = math.acos((math.pow(a,2)-math.pow(b,2)-math.pow(c,2))/part_1)
B = math.acos((math.pow(b,2)-math.pow(a,2)-math.pow(c,2))/part_2)
C = math.acos((math.pow(c,2)-math.pow(b,2)-math.pow(a,2))/part_3)
print(math.degrees(A))
print(math.degrees(B))
print(math.degrees(C))
import random
number1 = random.randint(1,10)
number2 = random.randint(1,10)
number3 = random.randint(1,10)
a = [number1,number2,number3]
a.sort(reverse=True)
print(a)
if (number1 < number2 + number3&number1 < number2 - number3):
    print('中奖')
else:
    print('谢谢惠顾')<jupyter_output><empty_output><jupyter_text>字符串和字符- 在Python中，字符串必须是在单引号或者双引号内，在多段换行的字符串中可以使用“”“- 在使用”“”时，给予其变量则变为字符串，否则当多行注释使用  ASCII码与Unicode码- - -   函数ord、chr- ord 返回ASCII码值- chr 返回字符<jupyter_code>ord('a')
chr(69)<jupyter_output><empty_output><jupyter_text>EP:- 利用ord与chr进行简单邮箱加密<jupyter_code>import random
a = random.randint(0,10)
print(chr(ord('4')-a),
chr(ord('4')-a),
chr(ord('5')-a),
chr(ord('8')-a),
chr(ord('@')-a),
chr(ord('s')-a),
chr(ord('b')-a),
chr(ord('.')-a),
chr(ord('c')-a),
chr(ord('o')-a),
chr(ord('m')-a))<jupyter_output><empty_output><jupyter_text>转义序列 \- a = "He said,"Johon's program is easy to read"- 转掉它原来的意思- 一般情况下只有当语句与默认方法相撞的时候，就需要转义<jupyter_code>a = "He said,\"Johon's program is easy to read"<jupyter_output><empty_output><jupyter_text>1.三引号和单/双引号的区别是:- 三引号内可以使用换行,单/双引号- 三引号如果不加变量的话,代表是注释(可以换行注释)2.单/双引号内是不是可以加入单/双引号的,但是可以加入双/单.3.如果非要头铁,可以使用"\\"(转义字符),表示转掉它原来的意思.  高级print- 参数 end： 以什么方式结束打印- 默认换行打印<jupyter_code>print('jokjer',end="*****ker")
print('ok')
print('a','b',sep="!!!!!!!")
for i in range(1000):
    print('%s/%s\r'%(i,1000),flush=True,end="")
    time.sleep(1)
os.system('sys OK')
for i in range(100):
    print('[%s%%]%s\r'%(i+1,(i+1)//5 * '#'),flush=True,end="")
    time.sleep(0.1)
os.system('sys OK')
import time
import os
str(print)<jupyter_output><empty_output><jupyter_text>函数str- 将类型强制转换成字符串类型- 其他一些以后会学到(list,set,tuple...)  字符串连接操作- 直接使用 “+” - join() 函数 str字符串  EP：- 将 “Welcome” “to” "Python" 拼接- 将int型 100 与 “joker is a bad man” 拼接- 从控制台读取字符串> 输入一个名字返回夸奖此人<jupyter_code>"!".join(('a','b'))
'a'+'!'+'b'<jupyter_output><empty_output><jupyter_text>实例研究：最小数量硬币- 开发一个程序，让用户输入总金额，这是一个用美元和美分表示的浮点值，返回一个由美元、两角五分的硬币、一角的硬币、五分硬币、以及美分个数 - Python弱项，对于浮点型的处理并不是很好，但是处理数据的时候使用的是Numpy类型  id与type- id 查看内存地址，在判断语句中将会使用- type 查看元素类型<jupyter_code>a = 10
id(a)<jupyter_output><empty_output><jupyter_text>其他格式化语句见书  Homework- 1<jupyter_code>import math
r = eval(input('请输入到中心的距离:'))
b = 2 * r 
c = math.sin(math.pi/5)
s = b * c
d = 4 * math.tan(math.pi/5)
Area =(5 * s * s)/d
print(Area)<jupyter_output><empty_output><jupyter_text>- 2<jupyter_code>x1,y1 = eval(input('x1,y1:'))
x2,y2 = eval(input('x2,y2:'))
r = 637.101
a = math.radians(x1)
b = math.radians(y1)
c = math.radians(x2)
d = math.radians(y2)
e = math.sin(a) * math.sin(c) + math.cos(a) * math.cos(c) * math.cos(b - d)
distance =r * math.acos(e)
print(distance)<jupyter_output><empty_output><jupyter_text>- 3<jupyter_code>s = eval(input('请输入边长:'))
b = 5 * s * s
c = 4 * math.tan(math.pi/5)
Area =(5 * s * s)/c
print(Area)<jupyter_output>请输入边长:5.5
52.044441367816255<jupyter_text>- 4<jupyter_code>import math
s = eval(input('请输入边长:'))
a = eval(input('请输入边长数:'))
b = 5 * s * s
c = 4 * math.tan(math.pi/5)
Area =(a * s * s)/c
print(Area)<jupyter_output>请输入边长:6.5
请输入边长数:5
72.69017017488386<jupyter_text>- 5<jupyter_code>s = eval(input('请输入数字:'))
print(chr(s))<jupyter_output>请输入数字:69
E<jupyter_text>- 6 - 7<jupyter_code>a = input("四位整数：")
print(a[::-1])<jupyter_output>四位整数：2569
9652<jupyter_text>- 8 进阶：> 加密一串文本，并将解密后的文件写入本地保存<jupyter_code>import random
a = input("输入机密文本")
c = ""
d = random.randint(0,10)
for i in a:
    b = chr(ord(i)-d+1)
    c += b
print(c)<jupyter_output>输入机密文本555
///
{'fraction_non_alphanumeric': 0.2084858927417618, 'fraction_numerical': 0.045013999569244026, 'mean_word_length': 6.752921535893155, 'pattern_counts': {'":': 0, '<': 62, '<?xml version=': 0, '>': 62, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '16', 'dir': 'jupyter-structured-clean-dedup', 'id': '568072', 'license': 'Apache-2.0', 'n_tokens_mistral': 2763, 'n_tokens_neox': 2854, 'n_words': 291, 'path': '7.17.ipynb', 'repo_name': 'zb789/mysql', 'size': '4643'}