HOME
BLOG
TIME
FRIENDS
SAY TO ME
MOOD
TRAVELING
Python小知识(二)
2020/08/19 1.7k 7 分钟 点击

紧接上一片,for循环的格式是这样的

for 变量 in 集合:  #这个变量是集合的单个对象的变量
    语句
else:    当所有的元素都被访问了之后,执行else
    语句

range() :产生一个集合(start,end,step),返回一个列表,一般用在循环当中

for i in range(5):
    print(i)

   0,1,2,3,4,

例子:
分别用for 和while 做200 以内的累加

while:

sum=0
i=1
while i<=200:
    sum+=i
    i=i+1
print(sum)

for:

sum=0
for i in range(1,201):
    sum=sum+i
print(sum)

嵌套循环

打印金字塔

             *
          *  *  *
       *  *  *   *  *
     *  *  *  *  *   *  *
  *   *   *  *   *   *   *  * 

两个方法:

1、

print(      *    )
print(   *  *  *  )
print( *  *  *  *  *)
print(*  *  *  *  *  *  *)

2、

j = 0
n= 10
for i in range(n):
    a = n - i
    b = 2 * i + 1
    for j in range(a):
        print(' ', end='')
    for k in range(b):
        print('*',end='')
    print('')

习题:
以这个直角三角为架构:
打印9*9 乘法表:

j = 1
while j <= 9:
    i = 1
    while i <= j:
        print(f'{i} * {j} = {i*j}', end='\t')
        i += 1
    print()
    j += 1

运算符:

算术:
%:取余数
/ :float
//: 整数型
** a**b a的b次方

逻辑关系:
比较运算符:
== 对象是否相等
!=
<> python3 已经不用
>=
<=

赋值运算符

=
+=
-=
*=
%=

逻辑运算符

and
or
not
成员运算符
in 在序列中能找到的 True
not in True
身份运算符:
is 判断两个对象是否引用同一个对 ,True,多数用于类的判断
is not

位运算符

& 与运算 bit 与的操作,如两个位是1结果就是1
| 或运算 bit 有一个为1结果是1
<< 左移动运算符,高位丢弃,低位补0
>> 右移动运算符

运算符的优先级

最高到最低
*
\
/ %
+ -
<< >>
$
|
比较运算符
is is not
and or 逻辑运算符

分支

if

单分支 if ..
双分支 if.. else
多路分支 if..elif …else

应用:
把三个数由小到大进行输出 ,使用if
45,565,24
x y z

x,y,z=eval(input("please input the x,y,z:"))
if x>y:
     x,y=y,x
if x>z:
    x,z=z,x
if y>z:
   y,z =z,y

print(x,y,z)

还有一种方法,那就是使用异或

#!/bin/python

x,y,z=eval(input("Please input x,y,z:"))
if x>y:
    x=x^y
    y=y^x
    x=x^y
if x>z:
    x=x^z
    z=z^x
    x=x^z
if y>z:
    y=y^z
    z=z^y
    y=y^z

print(x,y,z)

例子:

判断输入的年份是否是闰年
思路
if 能够被4,但是不能被100整除的或能够被400整除的年份:
print()
else :
print()

#!/bin/python

year=int (input("Please input years:"))

if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0 and year % 3200 != 0) :
    print ("闰年")
else:
    print ("非闰年")

列子:

猜数字的小程序
随机产生数字的函数

是只有一次机会,改成猜多次的,只要正确的就推出,错误要不停的猜

#!/bin/python

import random
data=random.randint(1,10)
var=1
while var==1 :
    guess=int (input("Please input 1-10:"))
    if guess==data:
        print("OK",data)
        exit()
    else:
        print("Flase.Re input")
        data=random.randint(1,10)

if语句嵌套格式

if 表达式:

    if 表达式:
       语句
    else:
       语句 

elif:

     if 表达式:
       语句
    elif:
       语句 

练习:
某地出租车的收费方法如下:
1、起步价7元,最多可行驶3公里(不包含3公里);

2、3~8公里(不包含8公里)按1.7元/公里计算(不足1公里,按1公里计算);

3、8公里以后按2.0元/公里计算(不足1公里,按1公里计算)。

编写程序,输入所行使里程数,计算并输出车费。
程序写法会有很多种

#!/bin/python

import math
dis=float (input("Please input: "))
DIS=math.ceil(dis)
if DIS < 0:
    print("Please input positive numbers greater than 0")
elif DIS < 3:
    money=7
    print("Required cost:",money)
elif DIS < 8:
    val=DIS-3
    money=7+1.7*val
    print("Required cost:",money)
else:
    val=DIS-8.0
    money=7+1.7*5+2*val
    print("Required cost:",money)

函数:

def 函数名(参数0 或多个):
    函数体
    return 返回值

比如:
计算n!

def fact(n):
        s=1
        for i in range(1,n+1):
           s*=i
        return s
d=fact(10) 

参数

def fact(n,m=1): #m就是可选的参数
print(“”)

fact(10)
fact(10,5) #m被替换成5 ,m 不给值,默认就是1

def fact(n,*b): *b 表示是一个可变的参数

def fact(n,*b):
print(“”)

fact(10,3)
fact(10,3,5,3,2)

def fact(n,m=1):

fact(10,5) # 位置传递
fact(n=10,m=5) # 名称传递
fact(m=10,n=9)
函数可以有返回值,也可以没有返回值,0 或多个返回值

def fact(n,m=1):
s=1
for i in range(1,n+1):
s*=i
return s//m,n,m

函数当中的局部变量和全局变量
k,l=10,100 # 全局变量
s=100
def fact(n,m=1):
s=1 # 局部变量
for i in range(1,n+1):
s*=i
return s
print(fact(10),s) # s 是全局变量s=100 的值 ,s不是函数的返回值,fact(10)

全局变量与局部变量
n,s=10,100
def fact(n):
global s # 全局变量了
for i in range(1,n+1):
s*=i
return s
print(fact(10),s) # s 是多少呢?s=fact(10)的值,而不是100

全局变量的规则是
ls=[“f”,”e”,”y”]
def func(a):
ls=[] # 如果我们把这个重新定义,变成局部变量
ls.append(a)
return

func(“c”)
print(ls) # 是否能把c 加入列表呢 ?

总结:
使用规则
1、通常在函数体外定义的变量称为全局变量,在函数体内定义的变量就局部变量。
2、在函数体外定义的全局变量,可以通过global 保留字在函数内部声明全局变量 。
3、在函数体外当定义集合的数据类型后,在函数内如果没有真实的创建,它就全局变量,当集合在函数内重新创建后,它就是局部变量。

关于函数:
通过def 定义函数
有可变参数
return 多个返回值
global 声明全局变量

生成器和迭代器

容器是可以迭代的对象
l1=[1,1,23,4,4]
y=iter(l1)

当我运行:
for i in l1:
print(i)

for 循环要干的事情:python for (反编译过程)
1、y=iter(l1)
2、 where
next()

生成器是成生迭代器的一个函数。
生成器是成生成迭代器的一个函数。
1、通过生成器函数(只需要以yiled 关键字(iter()或next())) 把一个函数编程迭代器
def func(n):
p,c=0,1
where True:
yiled c # 和return
p,c=c,c+p

1,1,2,3,4,8,13,21,34,53

f=func(10)
for i in f:
print()

s1=”sgsgsa”
for i in s1:

2、生成器表示式
a=(x*x for x in range(10))
a变成了一个迭代器

Python运维