python基础阶段 经典练习题 拾英札记(3)

Posted on 2017-11-18 20:03  孤竹孙  阅读(248)  评论(0编辑  收藏  举报

对于编程学习来说,动手操练和重复训练很重要.

因为这是一个注重实践的活,最终要下笔落字.

更何况,即使你看了很多博客,听了很多课,你脑中的认识和手指下的-屏幕上的反馈,逻辑上是两个维度-两个载体的,中间需要时间来关联上,所以不能缺少实践.

很多时候,基于重复的操练,原有的困惑会化解,或许灵感收到启发,或许是刷进了潜意识,成为自己的固有认知了.

 

# 11  定义函数,生成纯数字验证码(预设4位数)  

 1 import random
 2 # 定义函数的默认形参,默认是4位数
 3 def code(num=4):
 4     # 用容器的思想,来盛放展位性的变量  容器中转
 5     code_list = []
 6     for x in range(num):
 7         # -->code_list.append(random.randint(0,9)) 我原来错误的输入
 8             # TypeError: sequence item 0: expected str instance, int found
 9         code_list.append(str(random.randint(0,9)))
10         # --> return(''.join(code_list)
11             # return 语句缩进位置有误
12     return(''.join(code_list))
13        
14 print(code())

    # 另外一种方法

1 import random
2 def code(num=4):
3     string = '0123456789'
4     lt = random.sample(string, num)
5     # sample(seq, n)  从列表或者字符串中随机抽取n元素,存放到新列表中,然后返回新列表
6     return ''.join(lt)
7 
8 print(code())

 

#12  模拟计算器(四则运算)

 1 def add(a, b):
 2     return a+b
 3 def sub(a, b):
 4     return a-b
 5 def mul(a, b):
 6     return a*b
 7 def div(a, b):
 8     return a/b
 9 
10 # 用input来交互
11 a = int(input('请输入第一个数:'))
12 b = int(input('请输入第二个数:'))
13 fuhao = input('请选择运算符号(+ - * /):')
14 
15 # 流程控制,调用函数
16 if fuhao == '+':
17     print(add(a, b))
18 elif fuhao == '-':
19     print(sub(a, b))
20 elif fuhao == '*':
21     print(mul(a, b))
22 elif fuhao == '/':
23     print(div(a, b))

    #另外一种方法

 1 # 使用黑终端(命令行)交互
 2 def add(a, b):
 3     return a+b
 4 def sub(a, b):
 5     return a-b
 6 def mul(a, b):
 7     return a*b
 8 def div(a, b):
 9     return a/b
10 
11 import sys
12 # 使用黑终端(命令行)交互: 在win10系统下,按下'window'键+'r'键 -> 输入"cmd" -> 回车键,进入控制台命令窗口 -> 输入cd,空格,输入代码文件路径,空格,输入参数的值.
13 # sys.argv[]是在命令行用来获取参数的,sys.argv[0]表示代码本身文件路径,所以参数从1开始.注意,下面的变量(a b fuhao)即为代码文件的参数哦.
14 # 命令行参数以空格为分隔符 
15 a = int(sys.argv[1])
16 b = int(sys.argv[2])
17 fuhao = sys.argv[3]
18 
19 if fuhao == '+':
20     print(add(a, b))
21 elif fuhao == '-':
22     print(sub(a, b))
23 elif fuhao == '*':
24     print(mul(a, b))
25 elif fuhao == '/':
26     print(div(a, b))
使用黑终端(命令行)交互

 

#13  归属地查询  输入手机号,匹配归属地(根据前七位)

 1 string = '''5582|1860101|010|北京市|北京联通GSM卡
 2 5583|1860100|010|北京市|北京联通GSM卡
 3 5584|1368141|010|北京市|北京移动神州行卡
 4 5585|1860111|010|北京市|北京联通GSM卡
 5 5586|1358198|010|北京市|北京移动动感地带卡
 6 5587|1361139|010|北京市|北京移动预付费卡
 7 5588|1361138|010|北京市|北京移动神州行卡
 8 5591|1360110|010|北京市|北京移动全球通卡
 9 5748|1364110|010|北京市|北京移动神州行卡
10 10186|1581584|020|广东省广州市|广东移动全球通卡
11 15046|1391897|021|上海市|上海移动全球通卡
12 17250|1502207|022|天津市|天津移动全球通卡
13 21137|1345272|023|重庆市万州|重庆移动大众卡
14 22700|1347812|024|辽宁省沈阳市|辽宁移动大众卡
15 24256|1377065|025|江苏省南京市|江苏移动全球通卡
16 26360|1898606|027|湖北省武汉市|湖北电信CDMA卡
17 28709|1860802|028|四川省成都市|四川联通GSM卡
18 30641|1552961|029|陕西省西安市|陕西联通GSM卡
19 31700|1563007|0310|河北省邯郸市|河北联通GSM卡
20 33360|1583396|0311|河北省石家庄市|河北移动全球通卡
21 34825|1508122|0312|河北省保定市|河北移动全球通卡
22 35363|1551235|0313|河北省张家口|河北联通GSM卡
23 37700|1331326|0316|河北省廊坊市|河北电信CDMA卡
24 43500|1350358|0358|山西省吕梁市|山西移动全球通卡
25 43908|1553625|0359|山西省运城市|山西联通GSM卡
26 44521|1335360|0370|河南省商丘市|河南电信CDMA卡
27 50078|1509369|0378|河南省开封市|河南移动全球通卡
28 53603|1583981|0398|河南省三门峡|河南移动全球通卡
29 53916|1335897|0410|辽宁省铁岭市|辽宁电信CDMA卡
30 55248|1554254|0411|辽宁省大连市|辽宁联通GSM卡
31 58618|1374272|0427|辽宁省盘锦市|辽宁移动全球通卡
32 58932|1554183|0429|辽宁省葫芦岛|辽宁联通GSM卡
33 60268|1340475|0431|吉林省长春市|吉林移动大众卡
34 '''
35 
36 # 将字符串按照换行符进行切割
37 string_list = string.splitlines()
38 # 定义一个字典
39 area = {}
40 # 遍历每一行字符串,进行处理
41 for string in string_list:
42     # 将每一行字符串按照 | 切割
43     lt = string.split('|')
44     # 提取号码前7位
45     qianqi = lt[1]
46     # 提取归属地
47     guishu = lt[-1]
48     # 将号码前7位和归属地存放到字典中
49     area[qianqi] = guishu
50     # print(lt)
51     # break
52 
53 # print(area)
54 # 写个小死循环,用来查询手机号码归属地
55 while 1:
56     phone = input('请输入您的手机号码:')
57     # 提取输入手机号码的前7位
58     qiqi = phone[0:7]
59     # 判断键是否在字典中
60     if qiqi in area:
61         print('归属地为:%s' % area[qiqi])
62     else:
63         print('查无此号码')

 

#14 自己封装函数,实现相同于系统内置函数hex、oct、bin的功能 (以hex为例)

 1 def my_hex(n):
 2     lt = []
 3     while n:
 4         
 5         n, yushu = divmod(n, 2)
 6         # 循环结束条件n==0,break
 7         # 请理解divmod()的内涵
 8 
 9         # --> lt.append(yushu) 错误
10         # TypeError: sequence item 0: expected str instance, int found
11         lt.append(str(yushu))
12     # 取余取反
13     lt.reverse()
14     return '0x'+ ''.join(lt)
15 
16 print(my_hex(19))

      #另外一种方法

1 def my_hex(n):
2         #格式化输出...呵呵
3     return '0x' + '%x' % n
4 
5 print(my_hex(18))

 

Copyright © 2024 孤竹孙
Powered by .NET 8.0 on Kubernetes