一、环境准备
1、下载Python 3.6.8
下载地址:https://www.python.org/ftp/python/3.6.8/python-3.6.8-amd64.exe
2、安装Python(仅对重点步骤说明,未提到的部分Next即可。)
PS:动画安装过程参考
3、开发工具PyCharm
a) 软件下载
https://download.jetbrains.8686c.com/python/pycharm-professional-2018.3.5.exe
b) 安装软件(仅对重点步骤说明,未提到的部分Next即可。)
c) 中文汉化
- 汉化包http://dlsw.91donkey.com/software/source/pycharm/pycharm2018-hhb.zip
- 进入C:\Program Files\JetBrains\PyCharm 2018.3.5\lib目录
- 用7zip或WinRAR工具打开resources_en.jar文件
- 进入messages目录
- 将汉化文件覆盖原文件
- 将resources_en.jar文件名改为resources_cn.jar
d) 注册
- 修改hosts文件绑定域名C:\Windows\System32\drivers\etc\hosts
0.0.0.0 account.jetbrains.com
- 打开PyCharm软件
二、创建项目及优化软件设置
1、新建项目
2、修改默认字符集编码为utf-8
- 文件 - 设置 - 编辑器 - 文件编码
3、设置Python默认模板头部信息
- 文件 - 设置 - 编辑器 - 文件和代码模板 - Python Script
4、修改字体大小(根据实际情况修改)
- 文件 - 设置 - 编辑器 - Font
5、解决PyCharm卡顿的问题
- 显示编辑器内存占用
设置 - 外观和行为 - 外观 - 显示内存指示的选项勾上,在右下角就显示了当前PyCharm已占用内存情况。
- 修改默认的vm memory
帮助 - 查找操作 - 输入vm - 打开"编辑自定义VM选项"
- 首次打开可能会提示文件不存在,点击创建即可。
- 编辑pycharm64.exe.vmoptions文件,将 -Xms改为1024m, -Xmx改为2048m,保存文件,关闭程序,重新打开pycharm,在右下角发现vm memory显示的内存上限已扩充到了2048m。(参数解释:-Xms 堆内存的最小大小,-Xmx 堆内存的最大大小)
6、显示工具栏
视图 - 工具栏
7、修改文件默认换行符
三、小试牛刀
1、Hello World!
#!/usr/bin/env python
print("Hello World!")
2、变量
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @Time: '2019/3/27 11:36'
name = "devil"
name2 = name
print("name,name2")
name = "jack"
print(name,name2)
四、注释
单行注释:# 被注释的内容
多行注释(三个双引号或三个单引号):""" 被注释的内容 """
五、用户输入
#!/usr/bin/env python
# -*- coding: utf-8 -*-
name = input("What's your name: ")
print("Hello" + name)
格式化输出:方式一(字符串的拼接,在内存里开辟多块空间,效率低下,非必要不建议使用)
name = input("name: ")
age = input("age: ")
job = input("job: ")
msg = '''
------ info of ''' + name + ''' ------
Name:''' + name + '''
Age: ''' + age + '''
Job: ''' + job
print(msg)
格式化输出:方式二
name = input("name: ")
age = input("age: ")
job = input("job: ")
msg = '''
------ info of $s ------
Name: $s
Age: %s
Job: %s
''' % (name,name,age,job)
print(msg)
格式化输出:方式三
name = input("name: ")
age = input("age: ")
job = input("job: ")
msg = '''
------ info of {_name} ------
Name: {_name}
Age: {_age}
Job: {_job}
'''.format(_name=name,_age=age,_job=job)
print(msg)
格式化输出:方式四(不够清晰,不建议使用)
name = input("name: ")
age = input("age: ")
job = input("job: ")
msg = '''
------ info of {0} ------
Name: {0}
Age: {1}
Job: {2}
'''.format(name,age,job)
print(msg)
利用getpass模块中的getpass方法,实现输入密码时密文不可见的效果。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import getpass
# 将用户输入的内容赋值给pwd变量
pwd = getpass.getpass("请输入密码: ")
# 打印输入的内容
print(pwd)
注:此模块在pycharm中无法使用
六、表达式if...else
- 用户登录验证
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import getpass
name = input("请输入用户名: ")
pwd = getpass.getpass("请输入密码: ")
if name == "devil" and pwd == "abc123":
print("Welcome user {_name} login...".format(_name=name))
else:
print("Invalid username or password!")
- 猜年龄游戏
#!/usr/bin/env python
# -*- coding: utf-8 -*-
my_age = 28
user_input = int(input("input your guess num: "))
if user_input == my_age:
print("yes, your got it!")
elif user_input > my_age:
print("think smaller!")
else:
print("think bigger!")
七、表达式while loop
- 死循环
#!/usr/bin/env python
# -*- coding: utf-8 -*-
while True:
print("无限循环... ",count)
count = count + 1 # count +=1
- 循环100次退出
#!/usr/bin/env python
# -*- coding: utf-8 -*-
count = 0
while True:
print("循环... ",count)
count +=1
if count == 100:
print("已循环100次,自动退出循环.")
break
- 如何实现让用户不断的猜年龄,但只给最多3次机会,再猜不对就退出程序。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
my_age = 28
count = 0
while count < 3:
user_input = int(input("input your guess num: "))
if user_input == my_age:
print("yes, your got it!")
break
elif user_input > my_age:
print("think smaller!")
else:
print("think bigger!")
count +=1 # 每次loop 计数器+1
else:
print("猜了这么多次都不对,你个笨蛋.")
八、表达式for loop
- 循环10次
#!/usr/bin/env python
# -*- coding: utf-8 -*-
for i in range(10):
print("loop ",i)
run result:
loop 0
loop 1
loop 2
loop 3
loop 4
loop 5
loop 6
loop 7
loop 8
loop 9
- 每隔2个数打印
#!/usr/bin/env python
# -*- coding: utf-8 -*-
for i in range(0,10,2):
print("loop ",i)
run result:
loop 0
loop 2
loop 4
loop 6
loop 8
- 还是上面猜数的游戏,当循环到3次的时候询问是否继续
#!/usr/bin/env python
# -*- coding: utf-8 -*-
my_age = 28
count = 0
while count < 3:
user_input = int(input("input your guess num: "))
if user_input == my_age:
print("yes, your got it!")
break
elif user_input > my_age:
print("think smaller!")
else:
print("think bigger!")
count +=1 # 每次loop 计数器+1
if count == 3:
countine_confirm = input("do you want to keep guessing...?")
if countine_confirm != "n" and countine_confirm != "no":
count = 0
九、break、continue和return的用法和区别
1、break:直接结束一个循环,跳出循环体。break以后的循环体中的语句不会继续执行,循环体外面的会执行。
2、continue:中止本次循环,继续下次循环。continue以后的循环体中的语句不会继续执行,下次循环继续执行,循环体外面的会执行。
3、return:return的功能是结束一个方法。一旦在循环体内执行return,将会结束该方法,循环自然也随之结束。与continue和break不同的是,return直接结束整个方法,不管整个ruturn处于多少层循环之内。
参照文章:https://blog.csdn.net/zyw0101/article/details/84649397
十、Python2.x 与 Python3.x 的区别
1、字符编码
Python2默认为ASCII编码,而Python3默认为Unicode编码
2、print函数
- Python2中print为class
print 'Python', python_version()
print 'Hello, World!'
print('Hello, World!')
print "text", ; print 'print more text on the same line'
run result:
Python 2.7.15
Hello, World!
Hello, World!
text print more text on the same line
- Python3中print为一个函数,必须用括号括起来。
print('Python', python_version())
print('Hello, World!')
print("some text,", end="")
print(' print more text on the same line')
run result:
Python 3.6.8
Hello, World!
some text, print more text on the same line
3、通过input()解释用户的输入
- Python2的input得到的是int类型,raw_input得到的是str类型。
注:python2.x中要避免使用input()
>>> num = input("enter a number: ")
enter a number: 123
>>> type(num)
<type 'int'>
###### 分隔符 ######
>>> num = raw_input("enter a number: ")
enter a number: 123
>>> type(num)
<type 'str'>
###### 分隔符 ######
>>> name = input("enter your name: ")
enter your name: devil
Traceback (most recent call last):
File "<pyshell#18>", line 1, in <module>
name = input("enter your name: ")
File "<string>", line 1, in <module>
NameError: name 'devil' is not defined
- Python3中input得到的是str类型
>>> num = input("enter a number: ")
enter a number: 123
>>> type(num)
<class 'str'>
4、整除
- Python2中带上小数点/表示真除,%表示取余,//结果取整
print 'Python', python_version()
print '3 / 2 =', 3 / 2
print '3 // 2 =', 3 // 2
print '3 / 2.0 =', 3 / 2.0
print '3 // 2.0 =', 3 // 2.0
run result:
Python 2.7.15
3 / 2 = 1
3 // 2 = 1
3 / 2.0 = 1.5
3 // 2.0 = 1.0
- Python3中/表示真除,%表示取余,//结果取整
print('Python', python_version())
print('3 / 2 =', 3 / 2)
print('3 // 2 =', 3 // 2)
print('3 / 2.0 =', 3 / 2.0)
print('3 // 2.0 =', 3 // 2.0)
run result:
Python 3.6.8
3 / 2 = 1.5
3 // 2 = 1
3 / 2.0 = 1.5
3 // 2.0 = 1.0
十一、作业
- 作业一:博客
博客地址:https://www.cnblogs.com/91donkey/
- 作业二:编写登录接口
1、输入用户名密码
2、认证成功后显示环境信息
3、输错三次后锁定
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @Time: '2019/3/29 10:37'
f = open("d:\\user.txt",'r')
authfile = f.read()
count = 0
while count < 3:
username = input("请输入用户名: ")
try:
f = open("d:\\lock.txt", 'r')
lock_user = (f.readline()).strip()
if username == lock_user:
print("输入的账户因多次尝试登录,已被锁定......请与管理员进行联系!")
break
f.close()
except:
print("",end="")
password = input("请输入密码: ")
if username == authfile.split()[0] and password == authfile.split()[1]:
print("登录成功,欢迎 %s 回来..." % username)
break
else:
if count == 2:
print("尝试登录错误次数过多,账户被锁定,请稍后重试...")
f = open("d:\\lock.txt", 'a')
f.write(username+"\n")
f.close()
else:
print("Invalid username or password!")
count +=1
f.close()
优化空间:当user.txt和lock.txt中存在多条记录的时候该如何判断。
- 作业三
1、三级菜单
2、可依次选择进入各子菜单
3、所需新知识点:列表、字典
来源:oschina
链接:https://my.oschina.net/u/4402159/blog/3598344