Python3学习之路(第一章)
Python入门
一、第一个python程序
创建一个hello.py 的文件内容如下:
1 #!/usr/bin/env python # 定义python解释器 2 # -*- coding:utf-8 -*- # 定义python字符编码,python2中必须定义,python3种默认就是utf-8,可以不定义 3 # author : guoshaolong # 作者,可选 4 5 print('hello world !') # 程序内容
执行hello.py文件 python hello.py
注:在linux中需要给hello.py文件可执行权限chmod +x hello.py
好了,第一个python程序搞定。
二、注释
单行注释:# 被注释内容
多行注释:""" 被注释内容 """
三 、变量
1、声明变量
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # author : guoshaolong 4 5 name = "guoshaolong"
上述代码声明了一个变量,变量名为:name,变量name的值为:"guoshaolong"
变量定义的规则:变量名必须是大小写英文、数字和下划线的组合,且不能用数字开头,不能使用python内置关键字
以下关键字不能声明为变量名
['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
四、输入输出
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 4 # 将用户输入的内容赋值给 name 变量 5 name = input("请输入用户名:") 6 7 # 打印输入的内容 8 print name
输入密码时,如果想要不可见,需要利用getpass 模块中的 getpass方法,即:
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 4 import getpass 5 6 # 将用户输入的内容赋值给 name 变量 7 pwd = getpass.getpass("请输入密码:") 8 9 # 打印输入的内容 10 print pwd
五、流程控制
1、用户登陆验证
1 #!/usr/bin/env python 2 # -*- coding: tuf-8 -*- 3 4 # 提示输入用户名和密码 5 6 # 验证用户名和密码 7 # 如果错误,则输出用户名或密码错误 8 # 如果成功,则输出 欢迎,XXX! 9 10 import getpass 11 12 name = input('请输入用户名:') 13 pwd = getpass.getpass('请输入密码:') 14 15 if name == "guoshaolong" and pwd == "cmd": 16 print "欢迎,guoshaolong!" 17 else: 18 print "用户名和密码错误"
六、while循环
1、基本循环
1 while 条件: 2 3 # 循环体 4 5 # 如果条件为真,那么循环体则执行 6 # 如果条件为假,那么循环体不执行
2、break
break用于退出所有循环
1 while True: 2 print "123" 3 break 4 print "456"
3、continue
continue用于退出当前循环,继续下一次循环
1 while True: 2 print "123" 3 continue 4 print "456"
七、练习题
1、使用while循环输入 1 2 3 4 5 6 8 9 10
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # author : guoshaolong 4 5 # 使用while循环输出1 2 3 4 5 6 8 9 10 6 7 i = 1 8 while i <= 10: 9 if i == 7: 10 i += 1 11 continue # 跳出本次循环,开始下次循环 12 print(i) 13 i += 1
2、求1-100的所有数的和
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # author : guoshaolong 4 5 # 求 1-100的所有数的和 6 7 j = 0 8 i = 1 9 while i < 101: 10 j += i 11 i += 1 12 print(j)
3、输出 1-100 内的所有奇数
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # author : guoshaolong 4 5 # 输出1-100 内错有的奇数 6 i = 1 7 while i < 101: 8 if i % 2 == 1: 9 print(i) 10 i += 1
4、输出 1-100 内的所有偶数
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # author : guoshaolong 4 5 # 输出1-100 内所有的偶数 6 i = 1 7 while i < 101: 8 if i % 2 == 0: 9 print(i) 10 i += 1
5、求1-2+3-4+5 ... 99的所有数的和
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # author : guoshaolong 4 5 # 求1-2+3-4+5... 99的所有数的和 6 j = 0 7 i = 1 8 while i < 100: 9 if i % 2 == 1: 10 j += i 11 else: 12 j -= i 13 i += 1 14 print(j)
6、用户登陆(三次机会重试)
运算符
1、算数运算
2、比较运算
3、赋值运算
4、逻辑运算
5、成员运算
基本数据类型
1、数字
int(整型)
在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807
1 “hello world”
- 创建
a = "shaolong" a = str('shaolong')
- 转换
age = 19 new_age = str(age)
- 拼接
name = 'alex' gender = '女' new_str = name + gender print(new_str)
- 格式化
name = '我叫郭少龙,性别:%s,我今年%s岁。' %('男',19,) print(name)
- in 判断
content = "床前明月光,疑是地上霜。举头望明月,低头思故乡。" if "月光" in content: print('包含敏感字符') else: print(content)
- 移除空白
val = " guoshaolong " print(val) # new_val = val.strip() # 左右 # new_val = val.lstrip()# 左边 # new_val = val.rstrip() # 右边 # print(new_val)
- 分割
user_info = "shaolong|abc|123" # v = user_info.split('|') # v = user_info.split('|',1) # v = user_info.rsplit(' ',1) # print(v)
- 长度
val = "morninggood" v = len(val) print(v)
- 索引
1 val = "morninggood" 2 v = val[0] 3 print(v) 4 5 val = input('>>>') 6 i = 0 7 while i < len(val): 8 print(val[i]) 9 i += 1
- 切片
name = '床前明月光,疑是地上霜。举头望明月,低头思故乡。' print(name[0]) #床 print(name[0:2]) #床前 print(name[5:9]) #光,疑是 print(name[5:]) #光,疑是地上霜。举头望明月,低头思故乡。 print(name[5:-2]) #光,疑是地上霜。举头望明月,低头思故 print(name[-2:]) #乡。
4、列表
1 name_list = ['seven', 'eric'] 2 或 3 name_list = list(['seven', 'eric'])
基本操作:
- 索引
1 val = a[0]
- 切片
1 a = ['a','b','c','d'] 2 v = a[0::2] 3 print(v) 4
- 追加
1 a = ['a','b','c','d'] 2 a.append('e') 3 print(a)
- 插入
1 a = ['a','b','c','d'] 2 a.insert(0,'x') 3 print(a)
- 删除
1 a = ['a','b','c','d','e'] 2 # a.remove('c') 3 del a[0] 4 print(a)
- 长度
1 val = len(a)
- 切片
1 a = ['a','b','c','d'] 2 v = a[0::2] 3 print(v)
- 循环
1 a = ['a','b','c','d','e'] 2 for item in a: 3 print(item) 4 # break 5 # continue
- 更新、修改
1 a = ['a','b','c','d','e'] 2 a[1] = 'x' 3 print(a)
- in 判断
1 a = ['a','b','c','de'] 2 if 'd' in a: 3 pass 4 5 if 'd' in a[0]: 6 pass
5、元组
创建元祖:
1 ages = (11, 22, 33, 44, 55) 2 或 3 ages = tuple((11, 22, 33, 44, 55))
- 索引
1 print('ages[0]')
- 切片
- 循环
- 长度
- 包含
6、字典(无序)
创建字典:
1 person = {"name": "guoshaolong", 'age': 18} 2 或 3 person = dict({"name": "guoshaolong", 'age': 18})
常用操作:
- 索引
1 person = {"name": "guoshaolong", 'age': 18} 2 n = person['name'] 3 print(n)
- 新增(无,增加;有,修改)
1 person = {"name": "guoshaolong", 'age': 18} 2 person['age'] = 19 3 print(person)
- 删除
1 person = {"name": "guoshaolong", 'age': 18} 2 del person['name'] 3 print(person)
- 循环
1 person = {"name": "guoshaolong", 'age': 18} 2 for item in person.keys(): 3 print(item) 4 for item in person.values(): 5 print(item) 6 for key,val in person.items(): 7 print(key,val)
- 长度
1 person = {"name": "guoshaolong", 'age': 18} 2 n = len(person) 3 print(n)
PS:循环,range,continue 和 break
练习题
一、元素分类
有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。
即: {'k1': 大于66的所有值, 'k2': 小于66的所有值}
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # author : guoshaolong 4 5 6 # a.元素分类 7 # 有如下值集合 8 # v1 = [11, 22, 33, 44, 55, 66, 77, 88, 99, 90], 9 # 将所有大于 66 的值保存至字典的第一个key中,将小于66# 的值保存至第二个key的值中。 10 # 即: {'k1': 大于66的所有值, 'k2': 小于66的所有值} 11 # 12 # v2 = {'k1': [], 'k2': []} 13 14 v1 = [11,22,33,44,55,66,77,88,99,90] 15 k1 = [] 16 k2 = [] 17 v2 = {} 18 for item in v1: 19 if item < 66: 20 k2.append(item) 21 if item > 66: 22 k1.append(item) 23 v2['k1'] = k1 24 v2['k2'] = k2 25 print(v2)
功能要求:
- 要求用户输入总资产,例如:2000
- 显示商品列表,让用户根据序号选择商品,加入购物车
- 购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。
- 附加:可充值、某商品移除购物车
1 goods = [ 2 {"name": "电脑", "price": 1999}, 3 {"name": "鼠标", "price": 10}, 4 {"name": "游艇", "price": 20}, 5 {"name": "美女", "price": 998}, 6 ]
五、用户交互,显示省市县三级联动的选择
1 dic = { 2 "河北": { 3 "石家庄": ["鹿泉", "藁城", "元氏"], 4 "邯郸": ["永年", "涉县", "磁县"], 5 }, 6 "河南": { 7 "郑州":["中原区","上街区","金水区"], 8 "开封":["老城区","吉利区","新安县"], 9 }, 10 "山西": { 11 "太原":["小店区","清徐县","阳曲县"], 12 "临汾":["尧都区","洪洞县","古县"], 13 } 14 }
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # author : guoshaolong 4 5 dic = { 6 "河北": { 7 "石家庄": ["鹿泉", "藁城", "元氏"], 8 "邯郸": ["永年", "涉县", "磁县"], 9 }, 10 "河南": { 11 "郑州":["中原区","上街区","金水区"], 12 "开封":["老城区","吉利区","新安县"], 13 }, 14 "山西": { 15 "太原":["小店区","清徐县","阳曲县"], 16 "临汾":["尧都区","洪洞县","古县"], 17 } 18 } 19 a = 0 20 b = 0 21 print('欢迎使用省、市、县 查询系统') 22 for v in dic.keys(): 23 print(v) 24 while a < 3: 25 inp1 = input('请输入要查询的省份:') 26 if inp1 in dic.keys(): 27 for i in dic[inp1]: 28 print(i) 29 while b < 3: 30 inp2 = input('请输入市:') 31 if inp2 in dic[inp1]: 32 for j in dic[inp1][inp2]: 33 print(j) 34 exit() 35 else: 36 print('没有你要查询的市,请重新输入:') 37 b += 1 38 continue 39 else: 40 print('没有你要查询的省,请重新输入:') 41 a += 1