先了解下python解释器的工作方式:
1 默认方式是按行处理,遇到换行时就认为语句(或表达式)结束,就会去执行这个语句(或求值表达式);
2 如果在读入一行的最后遇到反斜杠,解释器就丢掉反斜杠及随后的换行符,把下一行的内容看作是本行内容的继续(续行);
3 如果被读入行中存在尚未配对的括号,同样认为下一行是本行的继续;
4 以换行结尾的一系列字符构成一个物理行,解释器根据上面规则把连续的几个物理行拼接成一个逻辑的程序行(逻辑行),一次处理一个逻辑行。
5 如果读到的行是一个复杂结构的头部,解释器就会继续读完这个结构(根据代码的退格缩进形式),而后一次完成这个结构的处理。如def、if、for、while等。
附原码:
# 列表list和元组tuple中可以包含python中的任何对象
import math
all_in_list = [
1, # 整数integer
1.0, # 浮点数float
'a word', # 字符串string
print(1), # 函数function
True, # 布尔值bool
math.sin(1), # 数学函数
math.e, # 数学常数
[0,1], # 列表list
(1,2), # 元组tuple
{'key':'value'},# 字典dict
{3,4} # 集合set
]
print(all_in_list)
# (下面的print输出全部用'''注释表示)
'''[1, 1.0, 'a word', None, True, 0.8414709848078965,
2.718281828459045, [0, 1], (1, 2), {'key': 'value'}, {3, 4}]'''
# 升序合并两个list并去除重复元素
list1 = [2,3,8,4,9,5,6]
list2 = [5,6,7,17,11,2]
list3 = list(set(list1 + list2))
print(list3)
'''[2, 3, 4, 5, 6, 7, 8, 9, 11, 17]'''
# list倒置
list6 = []
for iter in reversed(list3): # 返回的是迭代器,而不是序列
list6.append(iter)
list7 = sorted(list3,reverse=True)
list8 = list3.reverse
print(list6,' ',list7,' ',list8)
'''
[2, 3, 4, 5, 6, 7, 8, 9, 11, 17]
[17, 11, 9, 8, 7, 6, 5, 4, 3, 2]
[17, 11, 9, 8, 7, 6, 5, 4, 3, 2]
'''
#两个重要的数学常数
import math
print(math.e, math.pi)
'''2.718281828459045 3.141592653589793'''
#三角函数使用的是弧度值
print(math.sin(1)) # 求正弦
print(math.degrees(math.pi/2)) # 弧度值→角度值
print(math.degrees(1))
print(math.radians(90)) # 角度值→弧度值
'''
0.8414709848078965
90.0
57.29577951308232
1.5707963267948966
'''
# 常见数学计算与函数
print(2**10) # 求2^10
print(math.pow(2,10)) # 求2^10
print(math.sqrt(2)) # 求2的平方根
print(math.exp(10)) # 求e^10
print(math.log(1024,2)) # 求以2为底,1024的对数
'''
1024
1024.0
1.4142135623730951
22026.465794806718
10.0
'''
#操作符in、not in判断字符串是否包含指定字符串
str1 = 'href'
str2 = ''
if(str1 in str2):
print(str2,'包含有',str1)
str1 = 'https'
if(str1 not in str2):
print(str2,'不包含有',str1)
'''
'''
# 字符串str.format()函数,类似于C语言的printf()函数
str3 = '{} {}'.format('hello','python')
str4 = '{0},{2}'.format('hi','first','python')
str5 = '{1} {0} {1}'.format('wwu','hi')
str6 = '姓名:{name},年龄:{age}'.format(name = 'zwu',age = 10)
dic = {'name':'jwu','age':2}
str7 = '姓名:{name},年龄:{age}'.format(**dic)
list9 = ['fwu',35]
str8 = '姓名:{0[0]},年龄:{0[1]}'.format(list9)
print(str3,' ',str4,' ',str5,' ',str6,' ',str7,' ',str8,' ')
'''
hello python
hi,python
hi wwu hi
姓名:zwu,年龄:10
姓名:jwu,年龄:2
姓名:fwu,年龄:35
'''
# 进制转换
print('{:b}'.format(16)) # 二进制
print('{:d}'.format(16)) # 十进制
print('{:o}'.format(16)) # 八进制
print('{:x}'.format(16)) # 十六进制
print('{:#x}'.format(16)) # 小写十六进制
print('{:#X}'.format(16)) # 大写十六进制
'''
10000
16
20
10
0x10
0X10
'''
print(0b10000,16,0o20,0x10)
'''16 16 16 16'''
# 字符串分割1(字符串与元组)
s1 = 'http://www.baidu.com'.partition('://')
print(s1)
'''('http', '://', 'www.baidu.com')'''
# 以上返回一个3元的元组,分别是分隔字符串本身,及其前、后内容
# 字符串分割2,使用split()方法(字符串与列表)
stri4 = 'hello,hell,hello,world'
list4 = stri4.split('ll',2)
print(list4)
'''['he', 'o,he', ',hello,world']'''
'''
# 字符串切片3,使用splitlines()方法
#
str.splitlines([keepends])
# 按照行(' ',' ',' ')分隔,返回一个包含各行作为元素的列表
# 如果参数keepends为True,则保留换行符
'''
# 表list元素连接成字符串
listn1 = ['hi','wwu','how are you!']
strn1 = ','.join(listn1)
print(strn1)
'''hi,wwu,how are you!'''
# 字符计数
s2 = 'hello,hell,hello,world'
s3 = 'ell'
print(s2.count(s3,0,len(s2)))
print(s2.count(s3))
'''
3
3'''
# 字符串center()方法
# 返回一个原字符串居中,并使用空格或指定字符填充至指定长度的新字符串
s4 = 'wwu'
s5 = s4.center(10)
s6 = s4.center(10,'-')
print(s5,s6)
''' wwu ---wwu----'''
# 左(右)对齐并填充ljust()、rjust()
s6 = s4.rjust(10,'.')
print(s6)
'''.......wwu'''
#字符串替换replace()方法
# str.replace(old,new[,n])
# 字符串str中的字符串old,用字符串new替换,替换n次
stri1 = 'hello,hell,hello,world'
stri2 = stri1.replace('hell','good',2)
print(stri2)
'''goodo,good,hello,world'''
# lambda表达式,用于描述小的匿名函数
num = (lambda a,b,c: b**2 -4*a*c)(3,4,5)
print(num)
'''-44'''
# a=1, b=2,不用中间变量交换a和b的值
# I 直接交换
a = 3
b = 5
a,b = b, a
print(a,b)
'''5 3'''
# II 加法实现交换
a = a + b
b = a - b
a = a - b
print(a,b)
'''3 5'''
# III 异或实现交换
# 如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。
a = a ^ b
b = a ^ b
a = a ^ b
print(a,b)
'''5 3'''
'''
a = 3 | 0 0 1 1
b = 5 | 1 0 0 1
a ^ 1 0 1 0 = 6
b ^ 0 0 1 1 = 3
a ^ 1 0 0 1 = 5
'''
#九九乘法表
for i in range(1,10):
for j in range(i,10):
print('{}*{}={}'.format(i,j,i*j),end = ' ')
print(' ')
# 四则运算
oplist = ('+','-','*','/')
while True:
line = input("input the expression to calculate,i.e. 3 * 4: ")
if line == "quit":
break
exp = line.split()
if len(exp) !=3:
print("Exp should be 'x op y "
"Try again, or 'quit' to exit")
contine
op = exp[1]
if op not in oplist:
print("Operator is not corect")
continue
x = float(exp[0])
y = float(exp[2])
if op == '+':
z = x + y
elif op == '-':
z = x - y
elif op == '*':
z = x * y
elif op == '/':
if y==0:
print("Error:divider cann't be 0")
continue
z = x / y
print("Result:",z)
'''
input the expression to calculate,i.e. 3 * 4:
4 * 9
Result: 36.0
'''
-End-
网友评论