摘要:返回布尔或如果是,它返回,否则它返回的计算值。输入错误次,用户已锁定,请联系管理员没有这个用户格式化并写入文件
1. python介绍
发展史等等....
减少开发成本
2. python与其他语言对比C语言:代码-->机器码
其他高级语言:代码-->字节码-->机器码
3. python种类cpython:常用的python就是cpython,python代码-->字节码-->机器码(一行一行读取执行)
其他python:python代码-->字节码-->机器码
pypy:python代码-->字节码-->机器码(全部转换完再执行)pypy效率会比cpython要高,pypy是cpython的一个分支,关于pypy可参考知乎一篇文章:PyPy 为什么会比 CPython 还要快?
解释规则
windows:
python解释器+文件:c:python3.5python.exe d:s17day01helloworld.py
python解释器内执行:c:python3.5python.exe
linux or mac:
python解释器+文件:/usr/bin/python /data/s17/day01/helloworld.py
python解释器内执行:/usr/bin/python
注: 在linux or mac系统上默认安装的是python2.x版本,如在linux or mac系统使用python,需注意下python版本。
潜规则
.py 结尾(当然你也可以采用其他的结尾也是可以的,不怕team成员杀了你也可以写。其实主要还是为了规范,python服务器上用的比较多,看见.py也就会知道这是python程序)
编码
编码发展:ASCII-->Unicode(万国码)-->UTF-8
编码种类与区别
编码 | 支持语言 | 字节位数 | 缺点 | 备注 |
---|---|---|---|---|
ASCII | 英语 | 8位 | 只支持英文 | * |
万国码 | 所有 | 至少16位 | 字节位数较大 | * |
UTF-8 | 所有 | 8+ | * | 对万国码压缩 |
GBK | 中文、英文 | 16位 | 支持语言少 | * |
python编码相关:
文件编码
文件编码创建文件时定义即可,或者在IDE中定义
解释器编码
解释器编码需要在代码中标注,python3.x 版本不标注也是可以的(解释器默认编码为ASCII),但为了统一规范,在文件第二行标注 `# -*- coding:utf-8 -*-`5. IDE
PyCharm
使用
a.创建一个项目,指定代码路径与python解释器路径 b.创建一个文件夹 c.创建一个python script 文件 d.在py文件中右键, run xx.py
文件编码
在pycharm中首先要设置文件编码,将文件默认文件编码设置为utf-8
文件模板
修改python scripts文件模板,将python环境信息与编码信息定义在模板中
改变大小
配置编辑器中文字大小,设置可以用鼠标滑轮控制文字大小
单行注释: #
多行注释: ``` ```
7. .pyc文件当一个python文件导入另一个模块时候,会生成一个 .pyc文件,那么这个文件就是导入的那个文件的字节码。
8. 变量python变量规则:
字母
数字(变量不能以数字开头)
下划线
不能以python内置关键字为变量
python中变量建议使用下划线分割(驼峰式也不会报错)
9. 输入、输出输入: a = input("请输入xxxx")
输出: print (a)
10. 条件语句例1:
if 条件: ... else: ...
应用
#!/usr/bin/env python # -*- coding: utf-8 -*- # Author:Chuncheng.Fanusername = input("请输入用户名:") password = input("请输入密码:") if username == "fcc" and password == "123": print("欢迎登陆!") else: print("用户名或密码错误!")
例2:
if 条件: ... elif 条件: ... else: ...
应用:
#!/usr/bin/env python # -*- coding: utf-8 -*- # Author:Chuncheng.Fan11. 循环语句sex = input("请输入你的性别:") if sex == "男": print("傻x,自己性别都忘了!") elif sex == "女": print("...你在想想,你忘了你已经做了手术了吗...") else: print("人妖.......")
while
while 条件: continue # 开始下一次循环 break # 跳出所有循环
例:
#!/usr/bin/env python # -*- coding: utf-8 -*- # Author:Chuncheng.Fan12. 练习i = 0 while i < 3: username = input("请输入用户名:") password = input("请输入密码:") if username == "fcc" and password == "123": print("欢迎登陆!") break else: print("用户名或密码错误") i += 1
使用while循环输入 1 2 3 4 5 6 8 9 10
#!/usr/bin/env python # -*- coding: utf-8 -*- # Author:Chuncheng.Fani = 1 while True: if i == 7: i += 1 continue print(i) i += 1 if i == 11: break
求1-100的所有数的和
#!/usr/bin/env python # -*- coding: utf-8 -*- # Author:Chuncheng.Fanvalue = 0 i = 1 while i < 101: value = value + i i += 1 print(value)
输出 1-100 内的所有奇数
#!/usr/bin/env python # -*- coding: utf-8 -*- # Author:Chuncheng.Fani = 1 while i < 101: if i % 2 == 1: print(i) i += 1
输出 1-100 内的所有偶数
#!/usr/bin/env python # -*- coding: utf-8 -*- # Author:Chuncheng.Fani = 1 while i < 101: if i % 2 == 0: print(i) i += 1
求1-2+3-4+5 ... 99的所有数的和
#!/usr/bin/env python # -*- coding: utf-8 -*- # Author:Chuncheng.Fanvalue = 0 i = 1 while i < 100: if i % 2 == 1: value = value + i i += 1 elif i % 2 == 0: value = value - i i +=1 print(value)
用户登陆(三次机会重试)
#!/usr/bin/env python # -*- coding: utf-8 -*- # Author:Chuncheng.Fan13. 运算符 13.1 算数运算i = 0 while i < 3: username = input("请输入用户名:") password = input("请输入密码:") if username == "fcc" and password == "123": print("欢迎登陆!") break else: print("用户名或密码错误") i += 1
运算符 | 描述 | 实例 |
---|---|---|
+ | 加 - 两个对象相加 | a+b 输出结果30 |
- | 减 - 得到负数或是一个数减去另一个数 | a-b 输出结果-10 |
* | 乘 - 两个数相乘或是返回一个被重复若干次的字符串 | a*b 输出结果200 |
/ | 除 - x以y | b/a输出结果2 |
% | 取模 - 返回除法的余数 | b%a输出结果0 |
** | 幂 - 返回x的y次幂 | a**b为10的20次方,输出结果100000000 |
// | 取整除 - 返回商的整数部分 | 9//2输出结果4,9.0//2.0 输出结果4.0 |
运算符 | 描述 | 实例 |
---|---|---|
== | 等于 - 比较对象是否相等 | (a==b)返回False |
!= | 不等于 - 比较两个对象是否不相等 | (a!=b)返回True |
<> | 不等于 - 比较两个对象是否不相等 | (a<>b)返回True,这个运算符类似!= |
> | 大于 - 返回x是否大于y | (a>b)返回False |
< | 小于 - 返回 | b%a输出结果0 |
>= | 幂 - 返回x的y次幂 | a**b为10的20次方,输出结果100000000 |
<= | 取整除 - 返回商的整数部分 | 9//2输出结果4,9.0//2.0 输出结果4.0 |
运算符 | 描述 | 实例 |
---|---|---|
= | 简单的赋值运算符 | c=a+b 将 a+b的运算结果赋值为c |
+= | 加法赋值运算符 | c+=a 等效于c=c+a |
-= | 减法赋值运算符 | c-=a 等效于c=c-a |
*= | 乘法赋值运算符 | c=a 等效于c=ca |
/= | 除法赋值运算符 | c/=a 等效于c=c/a |
%= | 取模赋值运算符 | c%=a 等效于c=c%a |
**= | 幂赋值运算符 | c**=a 等效于c=c**a |
//= | 取整除赋值运算符 | c//=a 等效于c=c//a |
运算符 | 描述 | 实例 |
---|---|---|
and | 布尔“与”-如果x为False,x and y 返回False,否则它返回y的计算值。 | (a abd b) 返回True |
or | 布尔“或”-如果x是True,它返回True,否则它返回y的计算值。 | (a or b)返回True |
not | 布尔“非”-如果x为True,返回False,如果x为False,它返回True。 | not(a and b)返回False |
运算符 | 描述 | 实例 |
---|---|---|
in | 如果在指定的序列中找到值返回True,否则返回False。 | x在y序列,如果x在y序列中返回True。 |
not in | 如果在指定的序列中没有找到值返回True,否则返回False。 | x不在y序列中,如果x不在y序列中返回False。 |
int(整型)
在32位机器上,整数的位数为32位,取值范围为-231~231-1,即-2147483648~2147483647
在64位系统上,整数的位数为64位,取值范围为-263~263-1,即-9223372036854775808~9223372036854775807
14.2 布尔值真或假
1 或 0
字符串常用功能:
移除空白
分割
长度
索引
切片
14.4 列表name_list = ["alex", "seven", "eric"] 或 name_list = list(["alex", "seven", "eric"])
基本操作:
索引
切片
追加
删除
长度
切片
循环
包含
14.5 元祖创建元祖:
ages = (11, 22, 33, 44, 55) 或 ages = tuple((11, 22, 33, 44, 55))
基本操作:
索引
切片
循环
长度
包含
14.6 字典(无序)创建字典:
person = {"name": "mr.wu", "age": 18} 或 person = dict({"name": "mr.wu", "age": 18})
常用操作:
索引
新增
删除
键、值、键值对
循环
长度
14.7 其他 14.7.1 for循环用户按照顺序循环可迭代对象中的内容,
PS:break、continue
li = [11,22,33,44] for item in li: print item14.7.2 enumrate
为可迭代的对象添加序号
li = [11,22,33] for k,v in enumerate(li, 1): print(k,v)14.7.3 range和xrange
指定范围,生成指定的数字
print range(1, 10) # 结果:[1, 2, 3, 4, 5, 6, 7, 8, 9] print range(1, 10, 2) # 结果:[1, 3, 5, 7, 9] print range(30, 0, -2) # 结果:[30, 28, 26, 24, 22, 20, 18, 16, 14, 12, 10, 8, 6, 4, 2]15. 练习题
元素分类
有如下值集合
v1 = [11,22,33,44,55,66,77,88,99,90],
将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。
即:
{"k1": 大于66的所有值, "k2": 小于66的所有值} v2 = {"k1": [],"k2":[] }
答案:
#!/usr/bin/env python # -*- coding: utf-8 -*- # Author:Chuncheng.Fanv1 = [11,22,33,44,55,66,77,88,99,90] v2 = {"k1":[],"k2":[]} for item in v1: if item > 66: v2["k1"].append(item) elif item < 66: v2["k2"].append(item) print(v2)
功能要求:
= 2000
要求用户输入总资产,例如:2000
显示商品列表,让用户根据序号选择商品,加入购物车
购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。
goods = [ {"name": "电脑", "price": 1999}, {"name": "鼠标", "price": 10}, {"name": "游艇", "price": 20}, {"name": "美女", "price": 998}, ] num = input(">>>") # 1 num = int(num) goods[num]["price"]
用户交互,显示省市县三级联动的选择
dic = { "河北": { "石家庄": ["鹿泉", "藁城", "元氏"], "邯郸": ["永年", "涉县", "磁县"], } "河南": { ... } "山西": { ... } } for v in dic.keys(): print(v) inp = input(">>>") dic[inp]16. 作业
基于文件存储的用户登录程序(3次登录失败,锁定用户)
答案:
#!/usr/bin/env python # -*- coding: utf-8 -*- # Author:Chuncheng.Fanf1 = open("db","r") data = f1.read() f1.close() # 1.格式化数据 user_info_list = [] user_str_list = data.split(" ") for item in user_str_list: temp = item.split("|") v = { "name": temp[0], "pwd": temp[1], "times": int(temp[2]) } user_info_list.append(v) print(user_info_list) # 2.判断用户输入 count = 0 while count < 3: username = input("请输入用户名:") status = 0 for user_login_info in user_info_list: if username == user_login_info["name"]: if user_login_info["times"] >= 3: print("输入错误3次,用户已锁定,请联系管理员 ~") exit() else: count = 0 status = 1 pwd = input("请输入密码:") if pwd == user_login_info["pwd"]: print("用户 %s 登录成功!" %username) user_login_info["times"] = 0 count = 3 break else: if 0 == 2 - user_login_info["times"]: pass else: print("用户名或密码错误,请重新输入。") user_login_info["times"] += 1 if user_login_info["times"] >= 3: print("输入错误3次,用户已锁定,请联系管理员 ~") count = 3 break if status == 0: print("没有这个用户") count += 1 # 3.格式化并写入文件 new_db = "" for user_login_info in user_info_list: user_info_str = user_login_info["name"] + "|" + user_login_info["pwd"] + "|" + str(user_login_info["times"]) new_db = new_db + user_info_str + " " f2 = open("db","w") f2.write(new_db.strip()) f2.close()
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/44360.html
摘要:所以,应该直接了当的安装,其中也会自动安装上,作为其运行的。这只是一开始,之后还有里各种找不到外部安装的的情况。终于,意识到这些方法都是错误的思路。这才知道原来是无法识别。 为什么要用IPython/Jupyter? python里面调试确实有点烦恼,尤其是在vim里,想要尝试一些简单的编码问题,实在是有点麻烦,不想到命令行模式一行一行执行,也不想再新建一个文件测试一个简单的功能。 而...
摘要:所以,应该直接了当的安装,其中也会自动安装上,作为其运行的。这只是一开始,之后还有里各种找不到外部安装的的情况。终于,意识到这些方法都是错误的思路。这才知道原来是无法识别。 为什么要用IPython/Jupyter? python里面调试确实有点烦恼,尤其是在vim里,想要尝试一些简单的编码问题,实在是有点麻烦,不想到命令行模式一行一行执行,也不想再新建一个文件测试一个简单的功能。 而...
摘要:并于年月在许可证下发布。控制器是将模型和视图隔离,并成为二者之间的联系纽带。该层处理与表现相关的决定如何在页面或其他类型文档中进行显示。会话用户登录与权限检查,快速开发用户会话功能。 1.介绍Django 1.1 Django的来源 Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的框架模式,即模型M,视图V和控制器C。它最初是被开发来用于管理劳伦斯出版集...
阅读 2620·2021-09-28 09:36
阅读 2231·2021-09-07 09:58
阅读 1496·2019-08-26 13:53
阅读 1276·2019-08-23 17:53
阅读 3026·2019-08-23 15:34
阅读 1852·2019-08-23 15:34
阅读 2866·2019-08-23 12:04
阅读 3718·2019-08-23 10:56