Python学习之旅--第一周--初识Python
一:Python是一种什么样的语言?
1.语言的分类:
a.编译型语言和解释性语言:
通常所说的计算机语言分为编译型和解释型语言。编译型语言典型的如C,C++,通常在程序执行之前必须经由编译器编译成机器可识别的可执行文件。而解释型语言则不用预先编译,在程序执行过程中由解释器逐行解释成二进制代码供计算机执行。典型的如JAVA,JAVASCRIPT,VBSCRIPT,PYTHON等通常编译型语言因预先进行了编译,所以执行效率较高,而解释型语言效率稍慢。
b.静态语言和动态语言:
静态语言和动态语言一般指静态类型语言和动态类型语言。
(1)动态类型语言:动态类型只是运行期间才去做数据类型检查的语言。如python,ruby等。
(2)静态类型语言:静态类型语言与动态类型语言刚好相反,类型检查是在编译期间完成的。如C/C++,C#,java等。
c.强类型定义语言和弱类型定义语言:
(1)强类型定义语言:强制数据类型定义。
(2)弱类型定义语言:数据类型可以被忽略的语言。
通过上述介绍,我们可以得出,PYTHON是一门动态解释型的强类型定义语言。
二.第一个python程序:
按照国际惯例,我们编写第一个hello world!程序。
创建一个文件,helloworld.py
$vi helloworld.py
#!/usr/bin/env python print("Hello World!")
保存后执行:
$python helloworld.py
Hello World!
二.变量 1.变量定义:
变量是内存中分配的一段地址或者容器,供程序存储数据。变量不仅可以是数字,也可以是字符串或者布尔值。
变量在程序中就是用一个变量名表示了,变量名必须是大小写英文、数字和_
的组合,且不能用数字开头,比如:
a = 1
变量a是一个整数。
b = "Tim" 或者 b = 'Tim'
变量b是一个字符串,在python中,单引号‘’和双引号“”的效果相同。
c = True
变量c是一个布尔值。
我们编写一个程序:
#!/usr/bin/env python
name = 'Tim'
age = 20
city = 'PuDong' print(name,age,city)
执行结果如下:
Tim 20 PuDong
2.思考变量的赋值:
#!/usr/bin/env python
name = 'Tim'
name2 = name
print(name,name2)
name2 = 'King'
print(name,name2)
执行结果如下:
Tim Tim
Tim King
第一次结果name的值被赋予name2所以两值相同。
第二次把'King'值赋给了name2,但并没有赋给name,故结果如此。
三.字符编码
我们已经讲过了,字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题。
因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),如果要表示更大的整数,就必须用更多的字节。比如两个字节可以表示的最大整数是65535
,4个字节可以表示的最大整数是4294967295
。
python默认使用uft-8编码。utf-8编码来源于unicode编码,由于可变长度,在编写英文的时候相比unicode可节省一倍的存储空间。常用的英文使用1个字节,汉字使用3个字节。只有比较生僻的字符才会编码成4-6个字节。
字符集的转换:encode(),decode()
#-*- coding:utf-8 -*-
s = '你好'
s_to_unicode = s.decode("utf-8") #将字符转化为unicode
print(s_to_unicode,type(s_to_unicode))
s_to_gbk = s_to_unicode.encode("gbk") ##再将unicode字符转化为gbk
gbk_to_utf8 = s_to_gbk.decode("gbk").encode("utf-8") #将gbk转化为utf8
print(s_to_gbk)
四.注释
为了后期的代码维护,我们要养成在程序中做好注释的习惯。
python中,单行注释使用#号,如:
_username = 'alex'
_password = 'abc123'
#将用户输入的内容赋值给name变量
也可以用'''...''',"""..."""或者'''进行多行注释。因为python标准书写规范规定了每行不超过80个字符。因此,长字符串的注释可以用多行注释。
# Author:Tim Gu
#!/usr/bin/env python
'''
This is my first program.
Tt is hello world!
'''
print('Hello World!')
五.格式化字符串
python中我们使用%d,%s,%f来分别作为整数,字符串以及浮点数的占位符。
# Author:Tim Gu
#!/usr/bin/env python
# -*- coding:utf-8 -*-
name = input("input your name:")
age = int(input("input your age:") ) #convert str to int
job = input("input your job:")
height = float(input("input your height:")) msg = '''
Infomation of user %s:
---------------
Name: %s
Age : %d
Job : %s
Height: %f
-------End-----
''' % (name,name,age,job,height )
print(msg)
依次输入Tim 30 IT 1.7后结果如下:
Infomation of user Tim:
---------------
Name: Tim
Age : 30
Job : IT
Height: 1.700000
-------End-----
六.常用模块初始
在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护。
为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式。在Python中,一个.py文件就称之为一个模块(Module)。
Python本身就内置了很多非常有用的模块,只要安装完毕,这些模块就可以立刻使用。
我们为了使输入的密码为密文,可是使用getpass模块,例如:passwd.py
import getpass _username = 'Tim'
_password = 'abc123'
#将用户输入的内容赋值给name变量
user = input("username:")
pwd = getpass.getpass("password:")
if user == _username and pwd == _password:
print("Welcome user %s login..."%user)
else:
print("wrong username or password") #打印输入的内容
print(user,pwd)
这样使用了python的getpass模块,使得输入密码时显示的是密文,增加了安全性。 我们还可以使用os模块来调用系统命令,如:
import os os.system('df')
os.mkdir('yourDir')
cmd_res = os.popen("df -h").read()
以上我们所说的都是调用python自身的模块,另外我们还可以自定义自己的模块,如
比如我们之前已建了passwd.py这个模块,现在在另外的代码中去调用这个模块:mod.py
import passwd
结果将和直接执行passwd.py一样,输入Tim,abc123后结果如下:
username:Tim
password:abc123
Welcome user Tim login...
Tim abc123
需要注意的是,这两个模块都位于同一个目录下,python在调用模块时,会根据python的全局环境变量中的目录中去找相应的模块。
查看python的全局环境变量可以如下:
import sys
print(sys.path)
直接执行的结果如下:
['C:\\workspace\\day1', 'C:\\workspace', 'C:\\Python35\\python35.zip', 'C:\\Python35\\DLLs', 'C:\\Python35\\lib', 'C:\\Python35', 'C:\\Python35\\lib\\site-packages']
一般在开发过程中,我们自定义模块放入site-packages目录中,如果调用的模块提示未找到,首先先确定模块存放路径,在查看全局环境变量,解决办法要么增加相应环境变量,要么把模块移动至site-packages目录中。
七.流程控制之if与循环
一个简单的if语句:
# Author:Tim Gu
_username = 'Tim'
_password = 'abc123' username = input("username:")
password = input("password:") if username == username and _password == password:
print("Congratulations,You have logon!")
输入Tim abc123后,结果如下:
username:Tim
password:abc123
Congratulations,You have logon!
需要注意的是,print语句在这里进行了缩进,python语句抛弃了{}作为语句块的开始和结束,全部使用缩进来代表语句块,故此,缩进在python中是非常严格的。在官方的
标准中,建议的是每次缩进4格。
if...else语句:
# Author:Tim Gu
_username = 'Tim'
_password = 'abc123' username = input("username:")
password = input("password:") if username == _username:
print("username is correct...")
if password == _password:
print("Congratulations,You have logon!") else:
print("password is invalid...") else:
print("your username is not correct...")
输入Tim,abc123后结果:
username:Tim
password:abc123
username is correct...
Congratulations,You have logon!
输入用户名正确,密码不正确如下:
username:Tim
password:123
username is correct...
password is invalid...
输入用户名不正确,如下:
username:king
password:123
your username is not correct...
八.猜年龄游戏 使用if...else来实现一个猜年龄小游戏:
# Author:Tim Gu
age = 22
guess_num = int(input("input your guess num:"))
if guess_num == age:
print("Congratulations,you got it!")
elif guess_num > age:
print("Think smaller!")
else:
print("Think bigger!")
这个语句当输入等于,大于或者小于22时,都能相应的输出字符串,但是只能猜一次。如果想猜测多次,需要增加for循环,如下:
age = 22
for i in range(10):
if i < 3:
guess_num = int(input("input your guess num:"))
if guess_num == age:
print("Congratulations,you got it!")
break #中断循环
elif guess_num > age:
print("Think smaller!")
else:
print("Think bigger!")
else:
print("too many attempts ...bye")
break
这个代码猜测3次,猜中22通过break中断循环,同样的也可以用如下方式:
age = 22
for i in range(3):
guess_num = int(input("input your guess num:"))
if guess_num == age:
print("Congratulations,you got it!")
break #中断循环
elif guess_num > age:
print("Think smaller!")
else:
print("Think bigger!")
if i == 2:
print("too many attempts...bye")
执行结果:
input your guess num:2
Think bigger!
input your guess num:2
Think bigger!
input your guess num:22
Congratulations,you got it!
或者
input your guess num:1
Think bigger!
input your guess num:1
Think bigger!
input your guess num:1
Think bigger!
too many attempts...bye
以上的程序还可以改成输入3次错误后,询问用户是否还继续,可以这样写:
# Author:Tim Gu
age = 22
counter = 0
for i in range(10):
if counter < 3:
guess_num = int(input("input your guess num:"))
if guess_num == age:
print("Congratulations,you got it!")
break #中断循环
elif guess_num > age:
print("Think smaller!")
else:
print("Think bigger!")
else:
continue_comfirm = input("Do you want to continue?y or n")
if continue_comfirm == 'y':
counter = 0
continue
else:
print("bye!")
break
counter += 1
在输入3次错误之后,程序询问是否还继续,输入y继续,总共循环10次。
九.第一周作业:
1.
编写登录接口
输入用户名密码
认证成功后显示欢迎信息
输错三次锁定
流程图:
代码:
# Author:Tim Gu
import sys #预设一个正确的用户名和密码
_username = "Tim"
_password = "abc" f= open('black_list','r') #读取黑名单
username = input('username:') #输入用户名 #---------------判断用户名是否已在黑名单----------------------
for lines in f.readlines():
if lines.strip() == username:
print("this user has locked!")
exit()
else:
continue
#----------------用户名不在黑名单继续输入密码----------------
counter = 0
while counter < 3:
password = input('password:')
if username == _username and password == _password: #判断用户名和密码是否匹配
print("You have login!")
break
else:
counter += 1
if counter == 3: #当输入3次错误密码后,锁定用户并退出
f = open('black_list', '+a')
f.write(username + '\n')
f.close()
print('this username has locked!')
第一周作业二:
三层菜单
import sys meun_list = {
'上衣':{'夹克':['七匹狼','H&M'],
'羽绒服':['波司登','卡宾'],
'衬衫':['GXG','海澜之家']},
'裤子':{'牛仔裤':['ablejeans','nudie'],'休闲裤':['优衣库','select'],'西裤':['阿玛尼','ZARA']},
'鞋子':{'休闲':['匡威','骆驼'],'运动':['NIKE','ADIDAS'],'皮鞋':['clarks','鳄鱼']}} while True:
for meun in enumerate(meun_list.keys()):
print("%s:%s"%meun) #打印第一层列表的key(上衣,裤子,鞋子)
print("'q' for quit or 'b' for back")
choose_number = input("input meun number:").strip() #输入选择
if choose_number == 'q':
print('退出')
break
elif choose_number == '':
print('Your choose is not correct!')
continue
elif int(choose_number) >= len(meun_list.keys()): #判断输入是否大于第一层列表长度
print('Error,please input again!')
continue
else:
clothes_list = list(meun_list.keys()) #定义第二层列表 #--------------------------二层遍历-------------------------
while True:
for style in enumerate(meun_list[clothes_list[int(choose_number)]].keys()):
print('%s:%s' % style) #打印第二层列表的key
print("'q' for quit or 'b' for back")
choose_number2 = input("input style number:").strip() #输入选择
if choose_number2 == 'q':
print('退出!')
exit()
elif choose_number2 == '':
print('Your choose is not correct!')
continue
elif choose_number2 == 'b':
break
elif int(choose_number2) >= len(meun_list[clothes_list[int(choose_number)]].keys()):#判断输入是否大于第二层列表长度
print('Error,please input again!')
continue
else:
clothes_list2 = list(meun_list[clothes_list[int(choose_number)]].keys())
brand_list = list(meun_list[clothes_list[int(choose_number)]][clothes_list2[int(choose_number2)]])
print(brand_list) #打印第二层列表的值
#-------------------------三层-----------------------------------------------
while True:
choose_number3 = input("Please choose:/n'q' or 'b'")
if choose_number3 == 'b':
break
elif choose_number3 == 'q':
print('退出!')
exit()
else:
print('your choose incorrect!')
continue
Python学习之旅--第一周--初识Python的更多相关文章
- Python学习之旅--第二周--python基础
一.什么是pyc? 1.Python是解释性语言,那么.pyc是什么文件? 2.解释性语言和编译型语言区别: 计算机是不能够识别高级语言的,所以当我们运行一个高级别语言程序时,就需要一个&quo ...
- python学习笔记-(一)初识python
1.python的前世今生 想要充分的了解一个人,无外乎首先充分了解他的过去和现在:咱们学习语言也是一样的套路 1.1 python的历史 Python(英国发音:/ˈpaɪθən/ 美国发音:/ˈp ...
- python学习【第二篇】初识python
python的安装 windows 1.下载安装包 https://www.python.org/downloads/ 2.安装 默认安装路径:C:\python27 3.配置环境变量 [右键计算机] ...
- Python学习笔记(一)初识Python以及安装Python
一.Python简介 1.Python发展史 Python 是由 Guido van Rossum 在八十年代末和九十年代初,在荷兰国家数学和计算机科学研究所设计出来的. Python 本身也是由诸多 ...
- Python学习日记(一)——初识Python
Python的优势 互联网公司广泛使用python来做的事一般有:自动化运维.自动化测试.大数据分析.爬虫.Web等. Python与其他语言 C和Python.Java.C#: C 语言:代码编译 ...
- Python学习之旅--第二周--元组、字符串、运算、字典
一.元组 另一种有序列表叫元组:tuple.tuple和list非常类似,但是tuple一旦初始化就不能修改,比如同样是列出同学的名字: # Author:Tim Gu tuple = (" ...
- python学习之路-第一天-接触python
我的入门就决定用<简明Python教程> <简明Python教程> 1. python的优势 简单:专注于解决问题而不是关注语言本身 易学:容易上手 开源.免费 可移植性非常强 ...
- 180分钟的python学习之旅
最近在很多地方都可以看到Python的身影,尤其在人工智能等科学领域,其丰富的科学计算等方面类库无比强大.很多身边的哥们也提到Python非常的简洁方便,比如用Django搭建一个见得网站只需要半天时 ...
- python第一周:python初识、流程控制
编译性语言:在将源代码编译完毕生成一个可执行文件后才能运行 解释性语言:在代码的运行期间进行编译 动态类型语言:在运行期间才去做数据检查的语言,也就是说在使用动态类型语言时不用指定数据类型 静态类型语 ...
随机推荐
- sqlmap基础使用
测试许多款 sql注入工具 最终还是发现 sqlmap 最为强悍 谁用谁知道!赶紧抛弃掉手上一大堆 sql 注入工具吧 : )测试环境:ubuntu 10.10 & windows 7(x64 ...
- cetos6 安装samba共享文件夹
yum方式安装 yum install samba 修改配置文件 vim /etc/samba/smb.conf [global] comment = global workgroup = QFpay ...
- reinterpret_cast应用
reinterpret_cast 的一个实际用途是在哈希函数中,即,通过让两个不同的值几乎不以相同的索引结尾的方式将值映射到索引. #include <iostream> using na ...
- 使用SQL Server临时表来实现字符串合并处理
处理的数据 CREATE TABLE tb(col1 varchar(10),col2 int) INSERT tb SELECT 'a',1 union ALL SELECT 'a',2 union ...
- PHP编程----猴子选大王
<?php/** * 猴子选大王 * 17个猴子围成一圈,从某个开始报数1-2-3-1-2-3---报"3"的猴子就被淘汰, * 游戏一直进行到圈内只剩一只猴子它就是猴大王了 ...
- 如何取消input记忆功能
默认情况下,input会有这个记忆功能,如果不想让它记忆,可以在input上加上autocomplete="off"即可.
- Express ( MiddleWare/中间件 路由 在 Express 中使用模板引擎 常用API
A fast, un-opinionated, minimalist web framework for Node.js applications. In general, prefer simply ...
- iis服务器上面使用百度编辑器ueidtor提示“找不到临时文件”需要给window/temp修改权限
iis服务器上面使用百度编辑器ueidtor提示“找不到临时文件”需要给window/temp修改权限,修改php上传临时文件window/temp 给user用户组读取和写入的权限
- Java中获取当前日期
java.util.Date date = new Date();java.Text.SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd ...
- HDU 3362 Fix(状压dp)
Fix Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submi ...