资讯专栏INFORMATION COLUMN

【Python3】初识Python、基本数据类型

neroneroffy / 1213人阅读

摘要:返回布尔或如果是,它返回,否则它返回的计算值。输入错误次,用户已锁定,请联系管理员没有这个用户格式化并写入文件

1. python介绍

发展史等等....

减少开发成本

2. python与其他语言对比

C语言:代码-->机器码

其他高级语言:代码-->字节码-->机器码

3. python种类

cpython:常用的python就是cpython,python代码-->字节码-->机器码(一行一行读取执行)
其他python:python代码-->字节码-->机器码
pypy:python代码-->字节码-->机器码(全部转换完再执行)pypy效率会比cpython要高,pypy是cpython的一个分支,关于pypy可参考知乎一篇文章:PyPy 为什么会比 CPython 还要快?

4. python基础 4.1 解释器:

解释规则
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环境信息与编码信息定义在模板中

改变大小
配置编辑器中文字大小,设置可以用鼠标滑轮控制文字大小

6. 注释

单行注释: #

多行注释: ``` ```

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.Fan 

username = 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.Fan 

sex = input("请输入你的性别:")

if sex == "男":
    print("傻x,自己性别都忘了!")
elif sex == "女":
    print("...你在想想,你忘了你已经做了手术了吗...")
else:
    print("人妖.......")
11. 循环语句

while

while 条件:
    continue # 开始下一次循环
    break # 跳出所有循环

例:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Author:Chuncheng.Fan 

i = 0
while i < 3:
    username = input("请输入用户名:")
    password = input("请输入密码:")
    if username == "fcc" and password == "123":
        print("欢迎登陆!")
        break
    else:
        print("用户名或密码错误")
        i += 1
12. 练习

使用while循环输入 1 2 3 4 5 6 8 9 10

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Author:Chuncheng.Fan 

i = 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.Fan 

value = 0
i = 1
while i < 101:
    value = value + i
    i += 1
print(value)

输出 1-100 内的所有奇数

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Author:Chuncheng.Fan 

i = 1

while i < 101:
    if i % 2 == 1:
        print(i)
    i += 1

输出 1-100 内的所有偶数

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Author:Chuncheng.Fan 

i = 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.Fan 

value = 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.Fan 

i = 0

while i < 3:
    username = input("请输入用户名:")
    password = input("请输入密码:")
    if username == "fcc" and password == "123":
        print("欢迎登陆!")
        break
    else:
        print("用户名或密码错误")
        i += 1
13. 运算符 13.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
13.2 比较运算
运算符 描述 实例
== 等于 - 比较对象是否相等 (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
13.3 赋值运算
运算符 描述 实例
= 简单的赋值运算符 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
13.4 逻辑运算
运算符 描述 实例
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
13.5
运算符 描述 实例
in 如果在指定的序列中找到值返回True,否则返回False。 x在y序列,如果x在y序列中返回True。
not in 如果在指定的序列中没有找到值返回True,否则返回False。 x不在y序列中,如果x不在y序列中返回False。
14. python数据类型 14.1 数字

int(整型)

在32位机器上,整数的位数为32位,取值范围为-231~231-1,即-2147483648~2147483647

在64位系统上,整数的位数为64位,取值范围为-263~263-1,即-9223372036854775808~9223372036854775807

14.2 布尔值

真或假
1 或 0

14.3 字符串

字符串常用功能:

移除空白

分割

长度

索引

切片

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 item
14.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.Fan 

v1 = [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.Fan 

f1 = 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

相关文章

  • Jupyter Notebook之初识及入门

    摘要:所以,应该直接了当的安装,其中也会自动安装上,作为其运行的。这只是一开始,之后还有里各种找不到外部安装的的情况。终于,意识到这些方法都是错误的思路。这才知道原来是无法识别。 为什么要用IPython/Jupyter? python里面调试确实有点烦恼,尤其是在vim里,想要尝试一些简单的编码问题,实在是有点麻烦,不想到命令行模式一行一行执行,也不想再新建一个文件测试一个简单的功能。 而...

    plus2047 评论0 收藏0
  • Jupyter Notebook之初识及入门

    摘要:所以,应该直接了当的安装,其中也会自动安装上,作为其运行的。这只是一开始,之后还有里各种找不到外部安装的的情况。终于,意识到这些方法都是错误的思路。这才知道原来是无法识别。 为什么要用IPython/Jupyter? python里面调试确实有点烦恼,尤其是在vim里,想要尝试一些简单的编码问题,实在是有点麻烦,不想到命令行模式一行一行执行,也不想再新建一个文件测试一个简单的功能。 而...

    fredshare 评论0 收藏0
  • Django-01、初识Django和搭建Django helloworld

    摘要:并于年月在许可证下发布。控制器是将模型和视图隔离,并成为二者之间的联系纽带。该层处理与表现相关的决定如何在页面或其他类型文档中进行显示。会话用户登录与权限检查,快速开发用户会话功能。 1.介绍Django 1.1 Django的来源 Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的框架模式,即模型M,视图V和控制器C。它最初是被开发来用于管理劳伦斯出版集...

    aristark 评论0 收藏0

发表评论

0条评论

neroneroffy

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<