Python自动化开发S14 Day1

半城伤御伤魂 提交于 2020-04-29 02:59:16

一、环境准备

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、所需新知识点:列表、字典

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!