python第一天基础1-2
python入门
1 第一个python代码:
在linux上创建第一个.py脚本
#!/usr/bin/env python
#-*- coding:utf-8 -*- print "Hello,World"
执行代码:
python hellp.py
2 捕获参数:
捕获参数,并存入到集合
print sys.argv
3 模块导入:
import hello
4 python编译:
经过编译 成字节码文件 .pyc文件,反编译成 .py
如果.pyc 和 .py 内容相同,则.pyc 优先级高,否则,先查找.py,再重新编译生成 .pyc 文件
5.变量:
声明变量:
name = "Hello,World"
变量命名规则:
1)变量名只能以 数字、字母、下划线组成
2)第一个字符只能为字母、下划线;不能为数字
3)不要使用内置变量名
name1 = "test1"
name1 = name2
修改 name1 = "123"
name2 的值会跟着变吗?
答案是:不变
原因很简单:变量赋值时,会在内存中申请一块内存指针空间,将test1 赋值给 name1,相当于开辟了一块内存指针空间来存放 字符串test1,同时将 name2 = name1,相当于将 name2也同样指向这块内存指针空间,如果这个时候将字符串 “123”赋值给 name1,就相当于重新在内存中开辟一块内存指针来存储字符串 “123”,而name2 指针还是第原来的内存指针空间,所以name2的值并不会随着name1的改变而变化。
字符串特性:一旦修改,重新创建
以下是分配两块地址池的:
id1 = 7
id2 = 7
id(id1),id(id2) 指针地址一样,同一块内存指针池(看起来一样,是内部进行优化的,相当于在内部循环了一遍,当循环了一遍之后,发现有一个id1也是这个地址,于是也将id2指向这个地址,实际上是开辟两块指针空间的)
如果缓冲池过大,就会新开辟一块空间,缓冲池就会将多的扔掉
id1 = 700
id2 = 700
id(id1),id(id2) 指针地址不一样
变量一般可以这样定义:
age_of_oldboy= 20 ##一般用这种
ageOf_Oldboy=20 ##驼峰定义
AGEOFOLDBOY=20###java中常量这么定义
6 流程控制:
user_name = raw_input("please enter Your name:")
if user_name == "Allen":
print "one!"
elif user_name == "yyh":
print "Two!"
elif user_name == "ali":
print "Three!"
else:
print "Invalid User!"
输入用户名和密码:
------------------------------------------
import getpass
name = input("姓名:")
pwd = getpass.getpass("密码:")
if name == "sun" and pwd == ("123"):
print ("welcome")
else:
print ("wrong username")
-------------------------猜年龄----------------------------------
age = 30
user_input = int( input("年龄:") ) ###int 将字符串转换成数字,因为字符串是不能和数字比大小的
if user_input == age:
print ("welcome")
elif user_input > age:
print ("猜小点")
else:
print ("猜大点")
------------------------------------
7.数据类型,分为两部分:数字,字符串,列表,元组,字典
1)、单值
a.数字 : 整型、长整型、浮点、复数 - (py3中已经没有长整型了)
b.布尔值: 真或假 、1 或 0 -
c.字符串: “hello wolrd”
2)、集合:
列表、元组、字典、哈希表
3)、字符串:
万恶的字符串拼接: print (r'a\ndf') r表示我写什么打印出来就是什么
python中的字符串在C语言中体现为是一个字符数组,每次创建字符串时候需要在内存中开辟一块连续的 空,并且一旦需要修改字符串的话,就需要再次开辟空间,万恶的+号每出现一次就会在内从中重新开辟一块空间。
a).字符串传值:
字符串格式化:
name = "I'm %s" % 'allen'
name = "I'm %s, age: %d" % ('allen',25) 其中%s,%d 是占位符,%s代表字符串,%d 代表数字 ,% 后面的值是实际传入的参数,用来替换%s,和%d的值 name = "I'm {0},age:{1}"
new_name = name.format('allen',25)
print new_name
利用模板去加载模板(python3中只有input这个和py2中的raw_input一样)
name = input("姓名:")
age = input("年龄:")
job = input("工作:")
hobby = input("爱好:")
info = '''
--------info of %s-------------
name:%s
age:%s
job:%s
hobby:%s
----------end------------------------
''' %(name,name,age,job,hobby)
print (info)
b) 打印字符串:
print 'name' #使用单引号
print "name" #使用双引号
print """ #使用三引号,打印多行
I'm is allen,
age is 25
"""
c) 字符串切片:
name = "allen"
name[0] #打印索引为0的值,输出值:a
name[0:2] #打印索引从0 到 2 的值,不包括2(即<),输出值为:al
name[-1] #打印最后一个,输出值:n
name[:-1] #打印索引从0开始至倒数第二个字符,不包括自己,输出值:alle
d) 统计长度
len(name) #统计字符串长度
e) 去除两边的字符
name.strip() #去除两边的空格
name.lstrip() #去除左边的空格
name.rstrip() #去除右边的空格
f) 分割
name = "allen,25,wonderful"
name.split(',')
8.列表
a) 创建列表: name_list = ['allen','yyh','ali',''] name_list = list(['allen','yyh','ali',25]) b) 追加 name_list.append('hello') c) 删除 del name_list[0]
name.remove("sunbo")#####直接删除列表中的元素
name.pop(0)####删除下表的元素,并返回元素,如果不交o则删除列表最后一个元素
d) john (列表变成字符串) "".join(name_list) e) in (包含,判断元素是否在列表中) "allen" in name_list
f)插入
name = ["gaolong","wangyuangeng","sunlixue"]
print (name)
name.insert(1,"sunbo")
1=====是列表的索引
"sunbo"====需要插入的字符串
['gaolong', 'sunbo', 'wangyuangeng', 'sunlixue'] g) 改
name = ["gaolong","wangyuangeng","sunlixue"]
print (name)
name[0]="longlong"
print(name) h)查
print (name[-3:])###获取后三个元素
print(name.index("wangyuangeng")) ###取元素的下标,如果列表中有重复的元素,只能返回第一个元素
print(name.count("sunbo")) ###返回列表中的元素个数
两个列表合并
name = ["gaolong","wangyuangeng","sunlixue","sunbo","tiansuli"]
name1=["wangxiang","shenzhaohui"]
name.extend(name1)
print(name)
列表翻转 name = ["gaolong","wangyuangeng","sunlixue","sunbo","tiansuli"]
name.reverse()
print (name) 排序####py3中不能数字和字符串混这排序,会报错,但py2中没有这限制
name = ["gaolong","wangyuangeng","sunlixue","sunbo","tiansuli"]
name.sort()
print(name) 深浅copy
name = ["gaolong","wangyuangeng","sunlixue","sunbo","tiansuli"]
name2=name.copy()####新数据与原数据用的不同的内存地址,原数据改变新数据不会更改,
name3=name####这种会随元数据改变而改变,而元素的复制是不会改变的,这是因为py会根据数据量的大小去判断需不需要重新开一个新的内存改存放数据
print ( name2,id(name),id(name2))
print ( name3,id(name),id(name3))
name.pop()
print("-----print-----")
print ( name2,id(name),id(name2))
print ( name3,id(name),id(name3))
['gaolong', 'wangyuangeng', 'sunlixue', 'sunbo', 'tiansuli'] 4731608 4731648
['gaolong', 'wangyuangeng', 'sunlixue', 'sunbo', 'tiansuli'] 4731608 4731608
-----print-----
['gaolong', 'wangyuangeng', 'sunlixue', 'sunbo', 'tiansuli'] 4731608 4731648
['gaolong', 'wangyuangeng', 'sunlixue', 'sunbo'] 4731608 4731608
9.元组 (没有增删改),其他和列表一样
("allen","ali","yyh")
总结:
列表(list),字符串(str),元组(tuple)
共同点:
切片、索引、len() 、in
不同点:
str:重新开辟空间
list:修改后,不变
元组(tuple):
不允许修改
10.for 循环:
name_list = ['allen','yyh','ali',''] for item in name_list: if item == "yyh": print "diu diu ..." continue if item == "ali": print "welcome to here!" break # 跳出循环
猜年龄,3次退出# -*- coding: utf-8 -*-
age = 20
for i in range(3):
guess_age= int(input("输入年龄:"))
if age == guess_age:
print ("correct")
#break
elif age > guess_age:
print ("try bigger")
else:
print ("try smaller") else:###如果for循环正常结束,就执行else下的语句
exit("退出")
需求一:还是上面的程序,但是遇到小于5的循环次数就不走了,直接跳入下一次循环
1
2
3
4
|
for i in range ( 10 ): if i< 5 : continue #不往下走了,直接进入下一次loop(跳出当前循环,继续下一次循环,只跳一层) print ( "loop:" , i ) |
需求二:还是上面的程序,但是遇到大于5的循环次数就不走了,直接退出
1
2
3
4
|
for i in range ( 10 ): if i> 5 : break #不往下走了,直接跳出整个loop(跳出整个当前层循环) print ( "loop:" , i ) |
11.while 循环:
while 条件:
print "ok ok ok"
while True: # 死循环
print 'true' flag = True #标记位
while flag: print "ok ok ok"
flag = False
有一种循环叫死循环,一经触发,就运行个天荒地老、海枯石烂。
海枯石烂代码
1
2
3
4
5
|
count = 0 while True : print ( "你是风儿我是沙,缠缠绵绵到天涯..." ,count) count + = 1 |
其实除了时间,没有什么是永恒的,死loop还是少写为好
上面的代码循环100次就退出吧
1
2
3
4
5
6
7
8
|
count = 0 while True : print ( "你是风儿我是沙,缠缠绵绵到天涯..." ,count) count + = 1 if count = = 100 : print ( "去你妈的风和沙,你们这些脱了裤子是人,穿上裤子是鬼的臭男人.." ) break |
回到上面for 循环的例子,如何实现让用户不断的猜年龄,但只给最多3次机会,再猜不对就退出程序。
第一种方法
# -*- coding: utf-8 -*-
count = 0
longlong_age=50
while count<5:
guess_age=input("请输入高龙年龄:")###输入的都是字符串格式
if guess_age.isdigit():###通过字符串内置方法,判断是不是数字
guess_age=int(guess_age)###如果不是数字,就用int方法转换为数字
else:
continue###否则,不是数字的(字符串,和空格等)则退出本次循环,
if guess_age==longlong_age:
print ("你才对了")
break
elif guess_age>longlong_age:
print("你才的太小了")
else:
print("你猜的太大了")
count+=1
else:
print("太笨了,猜了这么多次,还没猜对")
第二种方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
#!/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 ( "Congratulations, you got it !" ) break elif user_input < my_age: print ( "Oops,think bigger!" ) else : print ( "think smaller!" ) count + = 1 #每次loop 计数器+1 else : print ( "猜这么多次都不对,你个笨蛋." ) |
12.字典,键值对 (字典无序,特殊的for循环)
person = {
"name":"allen",
"age":"",
"gender":"man",
} #person['name']
for k,v in person.items(): #字典无序
print k,v person.keys() #所有key
person.values() #所有value
person.items() #所有元素
13.运算符
a) 算数运算:+ - * / % ** //
b) 比较运算:== != < > >= <=
c) 赋值运算:= += -= *= /= %= **/ //=
d) 逻辑运算:and or not
e) 成员运算:in not in
f) 身份运算:is is not
g) 位运算:& | ^ ~ >> <<
14.文件操作:
file_list = open('filename.txt','r') or file_list = file('filename.txt','r') for line in file_list.read():
print line # 全量读 for line in file_list.readlines():
print line # 读取所有行,(列表) for line in file_list.xreadlines():
print line # 一行一行读(每次只读一行)
需求:将用户每登陆一次,记录一次登陆次数(通过操作文件实现)
log.txt文件内容格式如下:
sun;123;3
bo;123;4
#!/usr/bin/env python
#-*- coding:utf-8 -*-
file_obj = file('test.txt','r+')
line_list = file_obj.readlines()
my_list = []
for ele in line_list:
line = ele.strip()
value_list = line.split(';')
last_value = int(value_list[-1])
last_value += 1
value_list[-1] = str(last_value)
value_str = ';'.join(value_list)
my_list.append(value_str)
file_obj.seek(0)
my_str = '\n'.join(my_list)
file_obj.write(my_str)
file_obj.close()
python第一天基础1-2的更多相关文章
- Python第一章-基础知识
第一章:基础知识 1.1 安装python. 直接官网下载最新的python然后默认安装就可以了,然后开始菜单里找到pyhton *.*.* Shell.exe运行python的交互shell ...
- python第一课--基础知识
python简介 Python是一种计算机程序设计语言.是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的.大型项目的 ...
- python第一天基础1-1
win下是没有多进程的 windows:1.下载安装包 https://www.python.org/downloads/2.安装 默认安装路径:C:\python273.配置环境变量 [右键计算机] ...
- Python 第一章 基础知识
如果熟其他计算机语言,可能会习惯于每行以分号结束.Python则不同,一行就是一行,不管多少. 如果喜欢的话,可以加上分号,但是不会有任何作用(除非同一行还有更多的代码),而且这也不是同行的做法. & ...
- python第一模块基础语法
一·python和各大高级语言的优缺点比较 1.c语言开发效率低 2.c++开发效率高于c语言,低于java,python. 3.java代码臃肿,设计复杂,库繁杂量多. 4.PHP应用领域单一,且运 ...
- Python之路,第一篇:Python入门与基础
第一篇:Python入门与基础 1,什么是python? Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. 2,python的特征: (1)易于学习,易于利用: (2)开 ...
- Python学习笔记基础篇——总览
Python初识与简介[开篇] Python学习笔记——基础篇[第一周]——变量与赋值.用户交互.条件判断.循环控制.数据类型.文本操作 Python学习笔记——基础篇[第二周]——解释器.字符串.列 ...
- [Python] 文科生零基础学编程系列二——数据类型、变量、常量的基础概念
上一篇:[Python] 文科生零基础学编程系列--对象.集合.属性.方法的基本定义 下一篇: (仍先以最简单的Excel的VBA为例,语法与Python不同,但概念和逻辑需要理解透彻) p.p1 { ...
- Linux系统shell编程自学_第一章基础
第一章 基础shell的优势在于处理操作系统底层的业务,Python,php的优势在于开发运维工具,web界面的管理工具以及web业务开发.处理一键安装.优化.报警脚本shell又叫命令解释器,它能识 ...
随机推荐
- java中 sleep 与 wait 的区别
1.所属类不同 sleep是Thread类的方法: wait是Object类的方法: 2.功能不同 sleep是线程用来控制自身流程的,在调用sleep()方法的过程中,线程不会释放对象锁: wait ...
- prolog 内部谓词
内部谓词 和其他语言一样,prolog也提供一些基本的输入输出函数. 内部谓词是指已经在prolog中事先定义好的谓词,在内存中的动态数据库中是没有内部谓词子句的.(当我们运行某个.pl 文件的时候, ...
- python 二叉树实现带括号的四则运算(自学的孩子好可怜,不对的地方请轻责)
#!/usr/bin/python #* encoding=utf-8 s = "20-5*(0+1)*5^(6-2^2)" c = 0 top = [0,s[c],0] op = ...
- Struts2 有关于无法正常的使用通配符
今天使用struts 2.3.4版本,做了一个通配符的小测试,结果其他的Action都能正常的使用,但是使用通配符的Action不能正常的使用.网上找了很久,最后发现,貌似strust2.3版本以上的 ...
- spring mvc 4.3.2 + mybatis 3.4.1 + mysql 5.7.14 +shiro 幼儿园收费系统 之 动态组合条件查询
实际应用中,系统设计无法预料到用户最终的查询条件是怎样的.通常的做法是给出一些限制死的查询条件让用户查询.业务稍有改动,就要重新设计界面,增加查询字段等,费时费力. 比较好的做法是,除了常用的查询外, ...
- pdo 事物的处理
- CSS的clip-path 一
首先介绍一下,我觉得前端开发都是很具有分享精神的,很多人都写出了很多优秀的总结经验供新手们参考,本人只是个搬运工,将别人优秀的文章进行了总结,本文主要转载自 大漠 的文章 http://www. ...
- Tomcat 7.x热部署
由于在开发阶段,需要频繁的修改源代码,如果每次修改完代码都去重启服务器来检测效果,那简直麻烦到你想死,又耽误时间,所以,在网上找了许久,终于找到了解决办法, 特来分享 我也试了修改Server.xml ...
- 完整地mybatis + springmvc用checkbox实现批量删除
因为自己在网上找了半天,都找不到完整地代码(脑袋笨,不会变通到自己项目里),所以在这里记下了近乎完整的代码 前端代码 <span style="cursor:pointer;" ...
- XAF进修二:在XAF中打开自定义的WinForm
在建造WinForm时须要加上一机关函数和Show办法 using System; using System.Collections.Generic; using System.ComponentMo ...