Python自动化开发S14 Day1 - Python基础1

1、环境准备

一、下载Python 3.6.8

下载地址:https://www.python.org/ftp/python/3.6.8/python-3.6.8-amd64.exepython

二、安装Python(仅对重点步骤说明,未提到的部分Next便可。)

 

PS:动画安装过程参考shell

三、开发工具PyCharm

a) 软件下载编辑器

https://download.jetbrains.8686c.com/python/pycharm-professional-2018.3.5.exe函数

b) 安装软件(仅对重点步骤说明,未提到的部分Next便可。)工具

c) 中文汉化oop

- 汉化包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软件

 2、建立项目及优化软件设置

 一、新建项目

 二、修改默认字符集编码为utf-8

- 文件 - 设置 - 编辑器 - 文件编码

三、设置Python默认模板头部信息

- 文件 - 设置 - 编辑器 - 文件和代码模板 - Python Script

四、修改字体大小(根据实际状况修改)

- 文件 - 设置 - 编辑器 - Font

 五、解决PyCharm卡顿的问题

- 显示编辑器内存占用

设置 - 外观和行为 - 外观 - 显示内存指示的选项勾上,在右下角就显示了当前PyCharm已占用内存状况。

- 修改默认的vm memory

帮助 - 查找操做 - 输入vm - 打开"编辑自定义VM选项"

- 首次打开可能会提示文件不存在,点击建立便可。

- 编辑pycharm64.exe.vmoptions文件,将 -Xms改成1024m, -Xmx改成2048m,保存文件,关闭程序,从新打开pycharm,在右下角发现vm memory显示的内存上限已扩充到了2048m。(参数解释:-Xms 堆内存的最小大小,-Xmx 堆内存的最大大小)

六、显示工具栏

视图 - 工具栏

七、修改文件默认换行符

 

 

3、小试牛刀

一、Hello World!

#!/usr/bin/env python
 
print("Hello World!")

 二、变量  

#!/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)

4、注释

单行注释:# 被注释的内容

多行注释(三个双引号或三个单引号):""" 被注释的内容 """

5、用户输入

#!/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中没法使用

6、表达式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!")

7、表达式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("猜了这么屡次都不对,你个笨蛋.")

8、表达式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

9、break、continue和return的用法和区别

一、break:直接结束一个循环,跳出循环体。break之后的循环体中的语句不会继续执行,循环体外面的会执行。

二、continue:停止本次循环,继续下次循环。continue之后的循环体中的语句不会继续执行,下次循环继续执行,循环体外面的会执行。

三、return:return的功能是结束一个方法。一旦在循环体内执行return,将会结束该方法,循环天然也随之结束。与continue和break不一样的是,return直接结束整个方法,无论整个ruturn处于多少层循环以内。

参照文章:https://blog.csdn.net/zyw0101/article/details/84649397

10、Python2.x 与 Python3.x 的区别

一、字符编码

Python2默认为ASCII编码,而Python3默认为Unicode编码

二、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

三、经过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'>

四、整除

- 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

11、做业

- 做业一:博客

博客地址:https://www.cnblogs.com/91donkey/

- 做业二:编写登陆接口

一、输入用户名密码

二、认证成功后显示环境信息

三、输错三次后锁定

#!/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中存在多条记录的时候该如何判断。

- 做业三

一、三级菜单

二、可依次选择进入各子菜单

三、所需新知识点:列表、字典

相关文章
相关标签/搜索