python10

list(range(1,10,2))
[1, 3, 5, 7, 9]
for i in range(1,10):
for j in range(1,i+1):
print(’%d*%d=%d’ % (j,i,i*j),end=’ ')
print()
print末尾默认/n

文件:

打开 读写 关闭
读取文本文件:
字符: 即STR,一个字母一个字符,一个汉字一个字符
字节:即byte,存储单位,计算中最小的存储单位是bit
一个字节等于8BIT

使用utf8编码,一个英文字符占一个字节,一个汉字多数占3个字节

b1 = s1.encode() #将s1转为bytes类型
type(b1)

bin(65) #看二进制是多少
‘0b1000001’

data=f1.read()
f1.close()
data
‘Hello world!\nHow are you?\n吃了吗?\n没呢\n’
print(data)
Hello world!
How are you?
吃了吗?
没呢

#注意,文件打开后,每次读取都是继续向下读取,文件指针会一直向后移动。

f1=open(’/tmp/mytest.txt’)
data=f1.read()
data=f1.read()
f1.close()
data
‘’ #第二次读取,是向后读取,是空白

read() 也可以指定一次读取多少字节
f1=open(’/tmp/mytest.txt’)
f1.read(5)
‘Hello’
f1.read(8) #继续向后读取8个字节
’ world!\n’
f1.readline() #读取一行
f1.readlines() #读取所有内容

读取非文本文件:

f1=open(’/tmp/girl.jpg’,‘rb’)
f1.read(10)
b’\xff\xd8\xff\xe0\x00\x10JFIF’
f1.close()

写入文本文件: 以w方式打开文件,如果文件已存在,则清空,不存在则创建

f1=open(’/tmp/mytest.txt’)
f1=open(’/tmp/mytest.txt’,‘w’)
f1.write(‘Hello World!\n’)
13
先写入缓存,在内存中,当到达4K时,存入硬盘
或者关闭时候,存入硬盘或者刷新
f1.flush() 立即同步数据到硬盘
f1.close()
f1=open(’/tmp/mytest.txt’)
f1=open(’/tmp/mytest.txt’,‘w’)
f1.write(‘Hello World!\n’)
13
f1.flush()
f1.writelines(‘How are you?\n’,‘吃了吗\n’)
Traceback (most recent call last):
File “”, line 1, in
TypeError: writelines() takes exactly one argument (2 given)
f1.writelines([‘How are you?\n’,‘吃了吗\n’])
f1.close()

src_fname=’/etc/passwd’
dst_fname=’/tmp/mima’
src_fobj=open(src_fname,‘rb’)
dst_fobj=open(dst_fname,‘wb’)

while 1:
data=src_fobj.read(4096)
if not data:
break
dst_fobj.write(data)
src_fobj.close()
dst_fobj.close()

函数:
为一组代码取名,完成某个功能
定义函数时,函数体内的代码不执行
调用函数时,需要在函数名后面加上(),来完成调用
调用函数时就是执行函数体内的代码
函数定义语法结构

def mk_fib():
result = [0,1]
n=int(input('长度: '))
for i in range(n-2):
result.append(result[-1]+result[-2])
print(result)
mk_fib()

def 函数名(参数1,参数2,参数3.。。。)
代码块

def mk_fib(n):
result = [0,1]
# n=int(input('长度:n '))
for i in range(n-2):
result.append(result[-1]+result[-2])
print(result)
mk_fib(5)

src_fname=’/etc/passwd’
dst_fname=’/tmp/mima’
src_fobj=open(src_fname,‘rb’)
dst_fobj=open(dst_fname,‘wb’)
while 1:
data=src_fobj.read(4096)
if data:
dst_fobj.write(data)
else:
break
src_fobj.close()
dst_fobj.close()

if data 是有数据的话,为真,否则为假

def mk_fib(n):
result=[0,1]
for i in range(n-2):
result.append(result[-1]+result[-2])
print(result)
a=int(input('长度: '))
mk_fib(a)

mk_fib(5)

#echo -n ‘10’ > /tmp/len.txt
with open(’/tmp/len.txt’) as fobj:
b=int(fobj.read())
mk_fib(b)

调用函数时,相当于是变量赋值,调用函数将具体的数据传进去,这个数据是实际使用的数据,叫实际参数或
实参

                  返回值

函数执行的结果,可以通过return关键字返回
如果函数没有return,默认返回None
None是真空,相当于其他语言中的null

def mk_fib(n):
result=[0,1]
for i in range(n-2):
result.append(result[-1]+result[-2])
return result
# print(result)
a=mk_fib(8)
print(a)
#以w方式打开的文件,只能把str类型数据写入
with open(’/tmp/result.txt’,‘w’) as fobj:
fobj.write(str(a))

return 相当于函数返回的结果,打印出来也是函数
print() 打出函数里面的内容。

返回的是result代表的列表,不是变量result本身
函数内部的是局部变量,里面能用,外面要整个函数调用才能看到。

python的位置参数保存在sys模块的argv列表中,注意:
位置参数都是字符类型

import sys
print(sys.argv)

ython3 a.py /etc/hosts /tmp/zhuji
[root@localhost pycharm_project_614]# md5sum /etc/hosts /tmp/zhuji
54fb6627dbaa37721048e4549db3224d /etc/hosts
54fb6627dbaa37721048e4549db3224d /tmp/zhuji
[root@localhost pycharm_project_614]#

#python3 a.py /etc/hosts /tmp/zhuji

import sys
def copy(src_fname,dst_fname):
# src_fname=’/etc/passwd’
# dst_fname=’/tmp/mima’
src_fobj=open(src_fname,‘rb’)
dst_fobj=open(dst_fname,‘wb’)
while 1:
data=src_fobj.read(4096)
if not data:
break
dst_fobj.write(data)
src_fobj.close()
dst_fobj.close()
copy(’/bin/touch’,’/tmp/touch’)
copy(sys.argv[1],sys.argv[2])
#python3 a.py /etc/hosts /tmp/zhuji

 默认参数
 提供了默认值的参数,传参时,如果给定了具体的值
 就传具体的值,如果没有,就用默认的值

def pstar(n=50):
… print(’*’ * n)

                 模块

模块就 是一个python程序文件
把.py扩展名去除后的文件名就是模块名
文件是物理上组织代码的形式
模块是逻辑上组织代码的形式

模块导入方法:
常用方法:
一行导入一个模块
import sys
sys.path #仅导入模块的一部分方法
from random import choice ,ranint
choice(‘abcd’)
‘b’
randit(1,100)
96

#不常用,一行导入多个模块
import time,os,shutil

#添加别名,为模块别名命名
import getpass as gp
password=gp.getpass()
Warning: Password input may be echoed.
Password: >? 123
passwd
Traceback (most recent call last):
File “”, line 1, in
NameError: name ‘passwd’ is not defined
password
‘123’

模块加载时,顶层代码会自动执行,所以只将函数
放入模块的顶层是良好的编程习惯。

模块被导入时,它的代码会被执行一遍,这个加载叫
load,不管导入多少次,只以第一次为准。

第二次导入不再显示,如 import this

模块特殊属性: name
name__是一个变量,它的值有两个

一个是__main
一个是模块名

当模块文件直接运行时是__main__
当模块文件被其他文件 import时,是模块名

import star

star.pstar()
print(‘how are you?’)
print(‘您好’)
star.pstar()

star.py:

hi = ‘Hello World’
def pstar(n=50):
print(’*’ * n)

if name==‘main’:
print(hi)
pstar()


how are you?
您好


不执行main下面,模块名只执行函数里面的内容,不满足条件,不执行下面的。

案例2: 生成随机密码
创建randpass.py脚本,要求如下:
1: 编写一个能生成8位随机密码的程序
2: 使用random的choice函数随机取出字符
3: 改进程序,用户可以自己决定生成多少位的密码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值