# python **Repository Path**: Ericczy/python ## Basic Information - **Project Name**: python - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2021-11-28 - **Last Updated**: 2022-07-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # python #### 介绍 ##### 以下是初政宇学习Python编程的工程项目 我是一个Python初学者,我正在学习Python编程,我把每周学习到的代码上传到这里,和大家一起学习进步。 #### 学习计划 1. Python安装 2. Python基础(数据类型、变量、字符串、编码、list、tuple条件判断、循环、dict、set) 3. 函数(定义、调用、参数、递归) 4. 进阶(切片、迭代、列表生成式、生成器、迭代器) 5. 面向对象(类、实例、继承、多态) #### 学习资料 [https://www.liaoxuefeng.com] #### 变量和打印 ```python a = 1 b = 2 c = a + b d = a - b e = a * b f = a / b g = a % b k = a & b print('a = %d'%a) print('b = %d'%b) print('c = %d'%c) print('d = %d'%d) print('e = %d'%e) print('f = %d'%f) print('g = %d'%g) print('k = %d'%k) >> a = 1 b = 2 c = 3 d = -1 e = 2 f = 0 g = 1 k = 0 ``` #### 逻辑运算 ```python a = True b = False c = a and b d = a or b e = not a print(a,b,c,d,e) >> True False False True False ``` #### 打印0~~99 ```python for i in range(0,100): print(i) >> 95 96 97 98 99 ``` #### 打印偶数 ```python for i in range(0,99): if i % 2 == 0: print(i) >> 90 92 94 96 98 ``` #### 被3整除 ```python for i in range(0,99): if i % 3 == 0: print(i) >> 84 87 90 93 96 ``` #### 列表操作 ```python a = [1,2] b = [3,4] c = a + b d = [0,0] d[0] = a[0] + b[0] d[1] = a[1] + b[1] print(a) print(b) print(c) print(d) >> [1, 2] [3, 4] [1, 2, 3, 4] [4, 6] ``` #### 基本语法 ```python print ("Hello, Python!") >> Hello, Python! ``` #### 变量类型 ```python counter = 100 miles = 1000.0 name = "John" print (counter) print (miles) print (name) >> 100 1000.0 John ``` #### 运算符 ```python a = 21 b = 10 c = 0 c = a + b print ("1 - c 的值为:", c) c = a - b print ("2 - c 的值为:", c) c = a * b print ("3 - c 的值为:", c) c = a / b print ("4 - c 的值为:", c) c = a % b print ("5 - c 的值为:", c) >> 1 - c 的值为: 31 2 - c 的值为: 11 3 - c 的值为: 210 4 - c 的值为: 2.1 5 - c 的值为: 1 ``` #### 条件语句 ```python flag = False name = 'luren' if name == 'python': flag = True print ('welcome boss') else: print( name) >> luren ``` #### 循环语句 ```python count = 0 while (count < 9): print ('The count is:', count) count = count + 1 print ("Good bye!") >> The count is: 0 The count is: 1 The count is: 2 The count is: 3 The count is: 4 The count is: 5 The count is: 6 The count is: 7 The count is: 8 Good bye! ``` #### 循环嵌套 ```python i = 2 while(i < 100): j = 2 while(j <= (i/j)): if not(i%j): break j = j + 1 if (j > i/j) : print (i, " 是素数") i = i + 1 print ("Good bye!") >> 2 是素数 3 是素数 5 是素数 7 是素数 11 是素数 13 是素数 17 是素数 19 是素数 23 是素数 29 是素数 31 是素数 37 是素数 41 是素数 43 是素数 47 是素数 53 是素数 59 是素数 61 是素数 67 是素数 71 是素数 73 是素数 79 是素数 83 是素数 89 是素数 97 是素数 Good bye! ``` #### 语句 ```python for letter in 'Python': if letter == 'h': break print ('当前字母 :', letter) >> 当前字母 : P 当前字母 : y 当前字母 : t ``` #### 字符串 ```python var1 = 'Hello World!' var2 = "Python Runoob" print ("var1[0]: ", var1[0]) print ("var2[1:5]: ", var2[1:5]) >> var1[0]: H var2[1:5]: ytho ``` #### 列表 ```python list1 = ['physics', 'chemistry', 1997, 2000] list2 = [1, 2, 3, 4, 5, 6, 7 ] print ("list1[0]: ", list1[0]) print ("list2[1:5]: ", list2[1:5]) >> list1[0]: physics list2[1:5]: [2, 3, 4, 5] ``` #### 元组 ```python tup1 = ('physics', 'chemistry', 1997, 2000) tup2 = (1, 2, 3, 4, 5, 6, 7 ) print ("tup1[0]: ", tup1[0]) print ("tup2[1:5]: ", tup2[1:5]) >> tup1[0]: physics tup2[1:5]: (2, 3, 4, 5) ``` #### 字典 ```python dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'} print ("dict['Name']: ", dict['Name']) print ("dict['Age']: ", dict['Age']) >> dict['Name']: Zara dict['Age']: 7 ``` #### 日期和时间 ```python import time ticks = time.time() print ("当前时间戳为:", ticks) >> 当前时间戳为: 1638616223.2898204 ``` #### 两数之和 给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 ```python def twoSum( nums, target): result = [] for x in range(0,len(nums)): tmp = target - nums[x] if tmp in nums[(x+1):]: j = nums.index(tmp,x+1) break if j > 0: return [x,j] return result nums = [2,7,11] result = twoSum(nums,9) print(result) >> [0, 1] ``` #### 文件读写 ```python import os indir = '.' name = ['aaa','bbb','ccc'] #for x in name: # os.system(r'mkdir %s\%s'%(indir,x)) for x in name: for y in range(0,10): fname = r'%s\%d.txt'%(x,y) with open(fname,'w+') as f: f.write('%s\n'%(y) >> ``` ```python infile = r'C:\Users\Administrator\Desktop\Mycode\test.txt' with open(infile) as f: for line in f.readlines(): print(line) >> 2021-12-02 23:27:46,952 INFO Epoch 1 CV info cv_loss 58.31695144476188 2021-12-02 23:27:46,985 INFO Epoch 1 CV info cv_loss 58.31695144476188 2021-12-02 23:27:46,990 INFO Epoch 1 CV info cv_loss 58.31695144476188 2021-12-04 04:09:50,350 INFO Epoch 0 CV info cv_loss 11.077951106462296 2021-12-04 04:09:50,373 INFO Epoch 0 CV info cv_loss 11.077951106462296 2021-12-04 04:09:50,389 INFO Epoch 0 CV info cv_loss 11.077951106462296 2021-12-04 04:09:50,414 INFO Epoch 0 CV info cv_loss 11.077951106462296 ``` ```python infile = r'C:\Users\Administrator\Desktop\Mycode\test.txt' with open(infile) as f: for line in f.readlines(): sline = line.split(' ') ssline = sline[0].split('-') print('sline = ',sline[0]) print('ssline = ',ssline) print('ssline[0] = %s'%ssline[0]) print('') >> sline = 2021-12-02 ssline = ['2021', '12', '02'] ssline[0] = 2021 sline = 2021-12-02 ssline = ['2021', '12', '02'] ssline[0] = 2021 sline = 2021-12-02 ssline = ['2021', '12', '02'] ssline[0] = 2021 sline = 2021-12-04 ssline = ['2021', '12', '04'] ssline[0] = 2021 sline = 2021-12-04 ssline = ['2021', '12', '04'] ssline[0] = 2021 sline = 2021-12-04 ssline = ['2021', '12', '04'] ssline[0] = 2021 sline = 2021-12-04 ssline = ['2021', '12', '04'] ssline[0] = 2021 ``` #### 正则运算 ```python import re s = 'as112dfsadf你们好吗asdfasdf12342342@#$%^&' m=re.sub('[\u4e00-\u9fa5]','',s)#去除汉字 m2=re.sub('[^\u4e00-\u9fa5]','',s)#保留汉字 m3=re.sub('[^0-9]','',s)#保留数字 print('原始:',s) print('去除汉字:',m) print('保留汉字:',m2) print('保留数字:',m3) >> 原始: as112dfsadf你们好吗asdfasdf12342342@#$%^& 去除汉字: as112dfsadfasdfasdf12342342@#$%^& 保留汉字: 你们好吗 保留数字: 11212342342 ``` #### 练习1:无重复三位数字 ```python for i in range(1,5): for j in range(1,5): for a in range(1,5): if i !=j and j != a and i != a: print(i,j,a) >> 1 2 3 1 2 4 1 3 2 1 3 4 1 4 2 1 4 3 2 1 3 2 1 4 2 3 1 2 3 4 2 4 1 2 4 3 3 1 2 3 1 4 3 2 1 3 2 4 3 4 1 3 4 2 4 1 2 4 1 3 4 2 1 4 2 3 4 3 1 4 3 2 ``` #### 练习2:奖金利润提成 ```python i =150000 result = 0 if i <100000: result = i*0.1 elif i >100000 and i < 200000: result = 100000*0.1 + (i-100000) *0.075 elif i >200000 and i <=400000: result = 100000*0.1 + 200000 *0.075 + (i-200000)*0.05 print(result) >> 13750.0 ``` #### 练习3 ```python for i in range(1,85): if 168 % i == 0: j = 168 / i; if i > j and (i + j) % 2 == 0 and (i - j) % 2 == 0 : m = (i + j) / 2 n = (i - j) / 2 x = n * n - 100 print(x) >> -99.0 21.0 261.0 1581.0 ``` #### 练习4 ```python year = int(input('year:\n')) month = int(input('month:\n')) day = int(input('day:\n')) months = (0,31,59,90,120,151,181,212,243,273,304,334) if 0 < month <= 12: sum = months[month - 1] else: print ('data error') sum += day leap = 0 if (year % 400 == 0) or ((year % 4 == 0) and (year % 100 != 0)): leap = 1 if (leap == 1) and (month > 2): sum += 1 print ('it is the %dth day.' % sum) >> year: ``` #### 练习5 ```python l = [] for i in range(3): x = int(input('integer:\n')) l.append(x) l.sort() print (l) >> integer: 8 integer: 6 integer: 9 [6, 8, 9] ``` #### 练习6 ```python def fib(n): a,b = 1,1 for i in range(n-1): a,b = b,a+b return a # 输出了第10个斐波那契数列 print (fib(10)) >> 55 ``` #### 练习7:复制列表 ```python a = [1, 2, 3] b = a[:] print (b) >> [1, 2, 3] ``` #### 练习8:九九乘法表 ```python for i in range(1, 10): print() for j in range(1, i+1): print ("%d*%d=%d" % (i, j, i*j), end=" " ) >> 1*1=1 2*1=2 2*2=4 3*1=3 3*2=6 3*3=9 4*1=4 4*2=8 4*3=12 4*4=16 5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81 ``` #### 练习9:暂停一秒后打印 ```python import time myD = {1: 'a', 2: 'b'} for key, value in dict.items(myD): print (key, value) time.sleep(1) # 暂停 1 秒 >> 1 a 2 b ``` #### 练习10 ```python import time print (time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))) # 暂停一秒 time.sleep(1) print (time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))) >> 2021-12-10 20:29:35 2021-12-10 20:29:36 ``` #### 练习11 ```python f1 = 1 f2 = 1 for i in range(1,22): print ('%12ld %12ld' % (f1,f2), end=" ") if (i % 3) == 0: print ('') f1 = f1 + f2 f2 = f1 + f2 >> 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040 1346269 2178309 3524578 5702887 9227465 14930352 24157817 39088169 63245986 102334155 165580141 267914296 ``` #### 练习12 ```python h = 0 leap = 1 from math import sqrt from sys import stdout for m in range(101,201): k = int(sqrt(m + 1)) for i in range(2,k + 1): if m % i == 0: leap = 0 break if leap == 1: print ('%-4d' % m) h += 1 if h % 10 == 0: print ('') leap = 1 print ('The total is %d' % h) >> 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 The total is 21 ``` #### 练习13 ```python for n in range(100,1000): i = n // 100 j = n // 10 % 10 k = n % 10 if n == i*i*i + j*j*j + k*k*k: print(n) >> 153 370 371 407 ``` #### 练习14 ```python def reduceNum(n): print ('{} = '.format(n), end=" ") if not isinstance(n, int) or n <= 0 : print ('请输入一个正确的数字 !') exit(0) elif n in [1] : print ('{}'.format(n)) while n not in [1] : # 循环保证递归 for index in range(2, n + 1) : if n % index == 0: n //= index # n 等于 n//index if n == 1: print (index ) else : # index 一定是素数 print ('{} *'.format(index), end=" ") break reduceNum(90) reduceNum(100) >> 90 = 2 * 3 * 3 * 5 100 = 2 * 2 * 5 * 5 ``` #### 练习15 ```python score = int(input('输入分数:\n')) if score >= 90: grade = 'A' elif score >= 60: grade = 'B' else: grade = 'C' print ('%d 属于 %s' % (score,grade)) >> 输入分数: 100 100 属于 A ``` #### 练习16 ```python import datetime if __name__ == '__main__': # 输出今日日期,格式为 dd/mm/yyyy。更多选项可以查看 strftime() 方法 print(datetime.date.today().strftime('%d/%m/%Y')) # 创建日期对象 miyazakiBirthDate = datetime.date(1941, 1, 5) print(miyazakiBirthDate.strftime('%d/%m/%Y')) # 日期算术运算 miyazakiBirthNextDay = miyazakiBirthDate + datetime.timedelta(days=1) print(miyazakiBirthNextDay.strftime('%d/%m/%Y')) # 日期替换 miyazakiFirstBirthday = miyazakiBirthDate.replace(year=miyazakiBirthDate.year + 1) print(miyazakiFirstBirthday.strftime('%d/%m/%Y')) >> 13/12/2021 05/01/1941 06/01/1941 05/01/1942 ``` #### 练习17:使用for循环 ```python import string s = input('请输入一个字符串:\n') letters = 0 space = 0 digit = 0 others = 0 for c in s: if c.isalpha(): letters += 1 elif c.isspace(): space += 1 elif c.isdigit(): digit += 1 else: others += 1 print ('char = %d,space = %d,digit = %d,others = %d' % (letters,space,digit,others)) >> 请输入一个字符串: 13 char = 0,space = 0,digit = 2,others = 0 ``` #### 练习18 ```python Tn = 0 Sn = [] n = int(input('n = ')) a = int(input('a = ')) for count in range(n): Tn = Tn + a a = a * 10 Sn.append(Tn) print (Tn) Sn = (lambda x,y : x + y,Sn) print ("计算和为:",Sn) >> n = 5 a = 5 5 55 555 5555 55555 计算和为: ( at 0x0000000012902AF8>, [5, 55, 555, 5555, 55555]) ``` #### 练习19 ```python from sys import stdout for j in range(2,1001): k = [] n = -1 s = j for i in range(1,j): if j % i == 0: n += 1 s -= i k.append(i) if s == 0: print (j) for i in range(n): stdout.write(str(k[i])) stdout.write(' ') print (k[n]) >> 6 1 2 3 28 1 2 4 7 14 496 1 2 4 8 16 31 62 124 248 ``` #### 练习20 ```python tour = [] height = [] hei = 100.0 # 起始高度 tim = 10 # 次数 for i in range(1, tim + 1): # 从第二次开始,落地时的距离应该是反弹高度乘以2(弹到最高点再落下) if i == 1: tour.append(hei) else: tour.append(2*hei) hei /= 2 height.append(hei) print('总高度:tour = {0}'.format(sum(tour))) print('第10次反弹高度:height = {0}'.format(height[-1])) >> 总高度:tour = 299.609375 第10次反弹高度:height = 0.09765625 ``` #### 练习21 ```python x2 = 1 for day in range(9,0,-1): x1 = (x2 + 1) * 2 x2 = x1 print (x1) >> 1534 ``` #### 练习22 ```python for i in range(ord('x'),ord('z') + 1): for j in range(ord('x'),ord('z') + 1): if i != j: for k in range(ord('x'),ord('z') + 1): if (i != k) and (j != k): if (i != ord('x')) and (k != ord('x')) and (k != ord('z')): print ('order is a -- %s\t b -- %s\tc--%s' % (chr(i),chr(j),chr(k))) >> order is a -- z b -- x c--y ``` #### 练习23 ```python from sys import stdout for i in range(4): for j in range(2 - i + 1): stdout.write(' ') for k in range(2 * i + 1): stdout.write('*') print('') for i in range(3): for j in range(i + 1): stdout.write(' ') for k in range(4 - 2 * i + 1): stdout.write('*') print('') >> * *** ***** ******* ***** *** * ``` #### 练习24 方法1: ```python a = 2.0 b = 1.0 s = 0 for n in range(1,21): s += a / b t = a a = a + b b = t print (s) >> 32.66026079864164 ``` 方法2: ```python a = 2.0 b = 1.0 s = 0.0 for n in range(1,21): s += a / b b,a = a , a + b print (s) >> 32.66026079864164 ``` #### 练习25 方法1: ```python n = 0 s = 0 t = 1 for n in range(1,21): t *= n s += t print ('1! + 2! + 3! + ... + 20! = %d' % s) >> 1! + 2! + 3! + ... + 20! = 2561327494111820313 ``` 方法2: ```pyhton s = 0 l = range(1,21) def op(x): r = 1 for i in range(1,x + 1): r *= i return r s = sum(map(op,l)) print ('1! + 2! + 3! + ... + 20! = %d' % s) >> 1! + 2! + 3! + ... + 20! = 2561327494111820313 ``` #### 练习26 ```python def fact(j): sum = 0 if j == 0: sum = 1 else: sum = j * fact(j - 1) return sum print (fact(5)) >> 120 ``` #### 练习27 ```pyton def output(s,l): if l==0: return print (s[l-1]) output(s,l-1) s = input('Input a string:') l = len(s) output(s,l) >> Input a string:6768 8 6 7 6 ``` #### 练习28 ```python def age(n): if n == 1: c = 10 else: c = age(n - 1) + 2 return c print (age(5)) >> 18 ``` #### 练习29 ```python x = int(input("请输入一个数:\n")) a = x // 10000 b = x % 10000 // 1000 c = x % 1000 // 100 d = x % 100 // 10 e = x % 10 if a != 0: print ("5 位数:",e,d,c,b,a) elif b != 0: print ("4 位数:",e,d,c,b) elif c != 0: print ("3 位数:",e,d,c) elif d != 0: print ("2 位数:",e,d) else: print ("1 位数:",e) >> 请输入一个数: 1 1 位数: 1 ``` #### 练习30 ```python a = int(input("请输入一个数字:\n")) x = str(a) flag = True for i in range(len(x)//2): if x[i] != x[-i - 1]: flag = False break if flag: print ("%d 是一个回文数!" % a) else: print ("%d 不是一个回文数!" % a) >> 请输入一个数字: 88588 88588 是一个回文数! ``` #### 练习31 ```python letter = input("please input:") #while letter != 'Y': if letter == 'S': print ('please input second letter:') letter = input("please input:") if letter == 'a': print ('Saturday') elif letter == 'u': print ('Sunday') else: print ('data error') elif letter == 'F': print ('Friday') elif letter == 'M': print ('Monday') elif letter == 'T': print ('please input second letter') letter = input("please input:") if letter == 'u': print ('Tuesday') elif letter == 'h': print ('Thursday') else: print ('data error') elif letter == 'W': print ('Wednesday') else: print ('data error') >> please input:s data error ``` #### 练习32 ```python a = ['one', 'two', 'three'] for i in a[::-1]: print (i) >> three two one ``` #### 练习33 ```python L = [1,2,3,4,5] s1 = ','.join(str(n) for n in L) print (s1) >> 1,2,3,4,5 ``` #### 练习34 ```python def hello_runoob(): print ('RUNOOB') def hello_runoobs(): for i in range(3): hello_runoob() if __name__ == '__main__': hello_runoobs() >> RUNOOB RUNOOB RUNOOB ``` #### 练习35 ```python class bcolors: HEADER = '\033[95m' OKBLUE = '\033[94m' OKGREEN = '\033[92m' WARNING = '\033[93m' FAIL = '\033[91m' ENDC = '\033[0m' BOLD = '\033[1m' UNDERLINE = '\033[4m' print (bcolors.WARNING + "警告的颜色字体?" + bcolors.ENDC) >> 警告的颜色字体? ``` #### 练习36 ```python lower = int (input("输入区间最小值")) upper = int (input("输入区间最大值")) for num in range (lower,upper + 1): # 素数>1 if num > 1: for i in range(2,num): if (num % i) == 0: break else: print(num) >> 97 97 97 97 97 97 97 97 97 97 97 97 97 97 97 97 97 97 97 97 97 97 97 97 97 97 97 97 99 ``` #### 练习37 ```python if __name__ == "__main__": N= 10 print ('请输入10个数字:\n') l = [] for i in range(N): l.append(int(input('请输入一个数字:\n'))) print for i in range(N): print (l[i]) print for i in range(N - 1): min = i for j in range(i +1,N): if l[min] > l[j]:min = j l[i],l[min] = l[min],l[i] print ('排列之后:') for i in range(N): print (l[i]) >> 请输入10个数字: 请输入一个数字: 4 请输入一个数字: 5 请输入一个数字: 9 请输入一个数字: 3 请输入一个数字: 4 请输入一个数字: 6 请输入一个数字: 5 请输入一个数字: 4 请输入一个数字: 8 请输入一个数字: 1 4 5 9 3 4 6 5 4 8 1 排列之后: 1 3 4 4 4 5 5 6 8 9 ``` #### 练习38 ```python if __name__ =='__main__': a = [] sum = 0.0 for i in range(3): a.append([]) for j in range(3): a[i].append(float(input("input num:\n"))) for i in range(3): sum += a[i][i] print(sum) >> input num: 78 input num: 34 input num: 23 input num: 34 input num: 56 input num: 33 input num: 12 input num: 21 input num: 2 136.0 ``` #### 音频读写和处理 ```python import soundfile as sf fname = r'C:\Users\Administrator\Desktop\test\a.wav' outname = r'C:\Users\Administrator\Desktop\test\b.wav' audio,sr = sf.read(fname) print(sr) print(audio.shape) print(audio) sf.write(outname,audio*100,sr,'PCM_16') >> 16000 (53608,) [ 0. 0. 0. ... 0.00323486 0. -0.00262451] ``` #### 练习40 ```pthon if __name__ == '__main__': a = [9,6,5,4,1] N = len(a) print(a) for i in range(len(a) // 2): a[i],a[N -i -1] = a[N - i - 1],a[i] print(a) >> [9, 6, 5, 4, 1] [1, 4, 5, 6, 9] ``` #### 练习41 ```python def varfunc(): var = 0 print('var = %d' % var) var += 1 if __name__ == '__main__': for i in range(3): varfunc() class Static: StaticVar = 5 def varfunc(self): self.StaticVar += 1 print(self.StaticVar) print(Static.StaticVar) a = Static() for i in range(3): a.varfunc() >> var = 0 var = 0 var = 0 5 6 7 8 ``` #### 练习42 ```python num = 2 def autofunc(): num = 1 print('internal block num = %d'%num) num += 1 for i in range(3): print('The num = %d'%num) num += 1 autofunc() >> The num = 2 internal block num = 1 The num = 3 internal block num = 1 The num = 4 internal block num = 1 ``` #### 练习43 ```python class Num: nNum = 1 def inc(self): self.nNum += 1 print('nNum = %d'%self.nNum) if __name__ == '__main__': nNum = 2 inst = Num() for i in range(3): nNum += 1 print('The num = %d'%nNum) inst.inc() >> The num = 3 nNum = 2 The num = 4 nNum = 3 The num = 5 nNum = 4 ``` #### 练习44 ```python X = [[12,7,3], [4,5,6], [7,8,9]] Y = [[5,8,1], [6,7,3], [4,5,9]] result = [[0,0,0], [0,0,0], [0,0,0]] for i in range(len(X)): for j in range(len(X[0])): result[i][j] = X[i][j] + Y[i][j] for r in result: print(r) >> [17, 15, 4] [10, 12, 9] [11, 13, 18] ``` #### 练习45 ```python tmp = 0 for i in range(1,101): tmp +=i print('The sum is %d'% tmp) >> The sum is 5050 ``` #### 练习46 ```python TRUE = 1 FALSE = 0 def SQ(x): return x * x print('如果输入的数字小于50,程序将停止运行。') again = 1 while again: num = int(input('请输入一个数字:')) print('运算结果为:%d'%(SQ(num))) if SQ(num) >= 50: AGAIN = TRUE else: again = FALSE >> 如果输入的数字小于50,程序将停止运行。 请输入一个数字:12 运算结果为:144 请输入一个数字:14 运算结果为:196 请输入一个数字:1 运算结果为:1 ``` #### 练习47 ```python def exchange(a,b): a,b = b,a return (a,b) if __name__ == '__main__': x = 10 y = 20 print('x = %d,y = %d'%(x,y)) x,y = exchange(x,y) print ('x = %d,y = %d'%(x,y)) >> x = 10,y = 20 x = 20,y = 10 ``` #### 练习48:数字比较 ```python if __name__ =='__main__': i = 10 j = 20 if i>j: print('%d 大于 %d' %(i,j)) elif i == j: print('%d 等于 %d' %(i,j)) elif i < j: print('%d 小于 %d' %(i,j)) else: print('未知') >> 10 小于 20 ``` #### 小明存钱 ```python i = 0 sum = 0 while sum<100: sum = sum+2.5 if i%5 == 0: sum = sum-6 i = i+1 print("第%d天能存够%d元!"%(i,sum)) >> 第79天能存够101元! ``` #### 练习49 ```python MAXIMUM = lambda x,y : (x > y) * x + (x < y) * y MINIMUM = lambda x,y : (x > y) * y + (x < y) * x if __name__ == '__main__': a = 10 b = 20 print('The largar one is %d' %MAXIMUM(a,b)) print('The lower one is %d' %MINIMUM(a,b)) >> The largar one is 20 The lower one is ``` #### 练习50 ```python import random print(random.uniform(10,20)) >> 17.132462490706757 #10 到 20之间的随机数 ``` #### 语音合成 ```python # coding=utf-8 import requests import json import threading import pyaudio import time mutex = threading.Lock() buffer=b'' p = pyaudio.PyAudio() stream = p.open(format=p.get_format_from_width(2), channels=1, rate=24000, output=True) def async_play2(): global stream global buffer while True: time.sleep(0.1) # sleep 100ms if not buffer: # buffer empty? break mutex.acquire() stream.write(buffer) buffer=b'' mutex.release() if __name__=="__main__": params = { "apikey":"asdf", "secrit":"1234545", "appid":"asdf", #"txt":"大家好,我今天学习语音合成", "txt":"庆历四年的春天,滕子京被降职到巴陵郡做太守。隔了一年,政治清明通达,人民安居和顺,各种荒废的事业都兴办起来了。于是重新修建岳阳楼,扩大它原有的规模,把唐代名家和当代人的诗赋刻在它上面。嘱托我写一篇文章来记述这件事情。我观看那巴陵郡的美好景色,全在洞庭湖上。衔接远山,吞没长江,流水浩浩荡荡,无边无际,一天里阴晴多变,气象千变万化。这就是岳阳楼的雄伟景象。前人的记述(已经)很详尽了。那么向北面通到巫峡,向南面直到潇水和湘水,降职的官吏和来往的诗人,大多在这里聚会,(他们)观赏自然景物而触发的感情大概会有所不同吧?像那阴雨连绵,接连几个月不放晴,寒风怒吼,浑浊的浪冲向天空;太阳和星星隐藏起光辉,山岳隐没了形体;商人和旅客(一译:行商和客商)不能通行,船桅倒下,船桨折断;傍晚天色昏暗,虎在长啸,猿在悲啼,(这时)登上这座楼,就会有一种离开国都、怀念家乡,担心人家说坏话、惧怕人家批评指责,满眼都是萧条的景象,感慨到了极点而悲伤的心情。到了春风和煦,阳光明媚的时候,湖面平静,没有惊涛骇浪,天色湖光相连,一片碧绿,广阔无际;沙洲上的鸥鸟,时而飞翔,时而停歇,美丽的鱼游来游去,岸上的香草和小洲上的兰花,草木茂盛,青翠欲滴。有时大片烟雾完全消散,皎洁的月光一泻千里,波动的光闪着金色,静静的月影像沉入水中的玉璧,渔夫的歌声在你唱我和地响起来,这种乐趣(真是)无穷无尽啊!(这时)登上这座楼,就会感到心胸开阔、心情愉快。", "speech":"" } url = "http://speech.fan:43999/tts" html = requests.post(url,json.dumps(params),stream=True) t = threading.Thread(target=async_play2) flag = 1 for chunk in html.iter_content(chunk_size=128): if len(buffer) > 16000*8: time.sleep(0.1) mutex.acquire() buffer += chunk mutex.release() if flag: flag = 0 t.start() t.join() ``` #### 枚举法 ```python for i in range(0,10,1): for a in range(0,10,1): for s in range(0,10,1): for d in range(0,10,1): for v in range(0,10,1): for g in range(0,10,1): if a+s+d+v+g+i==25: print(i,a,s,d,v,g) >> 9 9 1 3 3 0 9 9 1 4 0 2 9 9 1 4 1 1 9 9 1 4 2 0 9 9 1 5 0 1 9 9 1 5 1 0 9 9 1 6 0 0 9 9 2 0 0 5 9 9 2 0 1 4 9 9 2 0 2 3 9 9 2 0 3 2 9 9 2 0 4 1 9 9 2 0 5 0 9 9 2 1 0 4 9 9 2 1 1 3 9 9 2 1 2 2 9 9 2 1 3 1 9 9 2 1 4 0 9 9 2 2 0 3 9 9 2 2 1 2 9 9 2 2 2 1 9 9 2 2 3 0 9 9 2 3 0 2 9 9 2 3 1 1 9 9 2 3 2 0 9 9 2 4 0 1 9 9 2 4 1 0 9 9 2 5 0 0 9 9 3 0 0 4 9 9 3 0 1 3 9 9 3 0 2 2 9 9 3 0 3 1 9 9 3 0 4 0 9 9 3 1 0 3 9 9 3 1 1 2 9 9 3 1 2 1 9 9 3 1 3 0 9 9 3 2 0 2 9 9 3 2 1 1 9 9 3 2 2 0 9 9 3 3 0 1 9 9 3 3 1 0 9 9 3 4 0 0 9 9 4 0 0 3 9 9 4 0 1 2 9 9 4 0 2 1 9 9 4 0 3 0 9 9 4 1 0 2 9 9 4 1 1 1 9 9 4 1 2 0 9 9 4 2 0 1 9 9 4 2 1 0 9 9 4 3 0 0 9 9 5 0 0 2 9 9 5 0 1 1 9 9 5 0 2 0 9 9 5 1 0 1 9 9 5 1 1 0 9 9 5 2 0 0 9 9 6 0 0 1 9 9 6 0 1 0 9 9 6 1 0 0 9 9 7 0 0 0 ``` #### 百钱买百鸡 ```python for x in range(0,21,1): for y in range(0,34,1): for z in range(0,101,1): if x+y+z==100: if 5*x+3*y+z/3==100: print(x,y,z) >> 0 25 75 4 18 78 8 11 81 12 4 84 ``` #### 鸡兔同笼 ```python for i in range(1,36,1): for x in range(1,36,1): if i+x==35: if 2*i+4*x==94: print(i,x) >> 23 12 ```