Python流程控制

六,输入输出

输入

还记得shell里的read吗

[root@node1 python]# cat shell_read.sh 
#!/bin/bash
read -p "input your name:" name
read -p "input your age:" age

echo "$name,you are $age old years"

 用python3中可以使用input()函数等待用户的输入(python2中为raw_input()函数)

示例

name = input("what is your name:")
age = input("what is your age: ")

print(name, "你"+age+"岁了")

 注意:input输入都认为是str类型

输出

输出用print()

示例

print("=" * 10)
print("1-系统")
print("2-数据库")
print("3-quit")
print("=" * 10)

 输出

==========
1-系统
2-数据库
3-quit
==========

 格式化输出

还记得awk里的printf吗? (学过C基础的也肯定知道printf)

python里不用printf,但也可以用 % 表示格式化操作符

操作符 说明
%S 字符串
%d 整数
%f 浮点数
%% 输出%

示例

name = input("请输入你的名字:")
age = input("请输入你的年龄:")
age = int(age)
print("%s,你%d岁了" % (name,age) )

 下面是一种新的格式化输出的写法,不用纠结是写%是还是%d,至对应好顺序就行(0代表第一个,1代表第二个)

name = input("请输入你的名字:")
age = input("请输入你的年龄:")
age = int(age)
print("%s,你%d岁了" % (name,age) )
print("{},你{}岁了".format(name,age))

 默认{}内是按照顺序的,也可以手动指定顺序例如

name = input("请输入你的名字:")
age = input("请输入你的年龄:")
age = int(age)
print("%s,你%d岁了" % (name,age) )
print("{},你{}岁了".format(name,age))
print("{1},你{0}岁了".format(name,age))

 输出

请输入你的名字:liuym
请输入你的年龄:18
liuym,你18岁了
liuym,你18岁了
18,你liuym岁了

 练习题

键盘输入一些信息然后输出

name = input("请输入你的名字:")
sex = input("请输入你的性别:")
job = input("请输入你的工作:")
phonenum = input("请输入你的电话:")

info = '''
------------ information of {} -----------
name: {}
sex: {}
job: {}
phonenum: {}
'''.format(name, name, sex, job, phonenum)
print(info)

 七,运算符

算数运算符

算数运算符  描述 实例
+ 加法 1=2=3
- 减法 5-1=4
* 乘法 3*5=15
/ 除法 10/2=5有余数结果为浮点数
// 整除 10//3=3
** 求幂 2**3=8
% 取余 10%3=1

赋值运算符

赋值运算符 描述 实例
= 简单的赋值运算符,下面全部为复合运算符 c=a+b
+= 加法赋值运算符 a+=b等同于a=a+b
-= 减法赋值运算符 a-=b等同于a=a-b
*= 乘法赋值运算符 a*=b等同于a=a*b
/= 除法赋值运算符 a/=b等同于a=a/b
//= 整除赋值运算符 a//=b等同于a=a//b
**= 求幂赋值运算符 a**=b等同于a=a**b
%= 取余赋值运算符 a%=b等同于a=a%b

比较运算符

比较运算符 描述 示例
== 等于 print(1==1)返回True
!= 不等于 print(2!=1) 返回True
<> 不等于同!= print(2<>1) 返回True
< 小于 print(2>1) 返回True
> 大于 print(2<1) 返回False
>= 大于等于 print(2>=1) 返回True
<= 小于等于 print(2<=1) 返回False

逻辑运算符

逻辑运算符 逻辑表达式 描述
and x and y x与y都为True,则返回True;x与y任一个或两个都为False,则返回False
or x or y x与y任一个条件为True,则返回True
not not x x为True,返回False; x为False,返回True

成员运算符

在后面讲解和使用序列(str,list,tuple) 时,还会用到以下的运算符。

成员运算符 描述
in x 在 y 序列中 , 如果 x 在 y 序列中返回 True; 反之,返回False
not in x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True; 反之,返回False

身份运算符

身份运算符 描述 实例
is is 是判断两个标识符是不是引用自一个对象 x is y, 类似id(x) == id(y) , 如果是同一个对象则返回 True,否则返回 False
is not is not 是判断两个标识符是不是引用自不同对象 x is not y ,类似id(a) != id(b)。如果不是同一个对象则返回结果 True,否则返回 False。

is 与 == 区别:

is 用于判断两个变量引用对象是否为同一个(同一个内存空间), == 用于判断引用变量的值是否相等。

a = [1, 2, 3]
b = a[:]
c = a
print(a, id(a))
print(b, id(b))
print(c, id(c))
print(b is a)
print(b == a)
print(c is a)
print(c == a)

 输出

[1, 2, 3] 2849709901960
[1, 2, 3] 2849709923400
[1, 2, 3] 2849709901960
False
True
True
True

 a与c在同一个内存空间 b只是等于a 但是与a不在同一个内存空间

位运算符

这里的python位运算符也是用于操作二进制的。

位运算符 说明
& 对应二进制位两个都为1,结果为1
| 对应二进制位两个有一个1, 结果为1, 两个都为0才为0
^ 对应二进制位两个不一样才为1,否则为0
>> 去除二进制位最右边的位,正数上面补0, 负数上面补1
<< 去除二进制位最左边的位,右边补0
~ 二进制位,原为1的变成0, 原为0变成1

运算符的优先级

常用的运算符中: 算术> 比较> 逻辑> 赋值

示例:请问下面的结果是什么?

result = 3 - 4 >= 0 and 4*(6-2) > 15
print(result)

 结果是false

算数优先级最高优先计算3 - 4 = -1 4*(6-2)=16

再计算比较-1 是小于等于0的 16是大于15的

在计算逻辑  False and True结果为False

最后赋值 使用结果为False

八,判断语句

shell里的判断语句格式

if 条件;then
    执行动作一
fi

 示例

if [ 1 == 1 ];then echo 1;fi

 shell双分支判断语句

if 条件;then
    执行动作一
else 
    执行动作二
fi

 示例

if [ 1 == 2 ];then echo 1;else echo 2;fi

 shell多分支判断语句

if 条件一;then
    执行动作一
elif 条件二;then
    执行动作二
elif 条件三;then
    执行动作三
else
    执行动作四
fi

 或者

case 变量 in
    值一)
        动作一;;
    值二)
        动作二;;
    *)
        其他动作
esac

 python里的判断语句格式

python单分支判断语句

if 条件:    #结束加:
    执行动作 #一定要缩进否则语法报错
                #没有fi结束符,就是看缩进

 示例

if 1 == 1:
    print("True")

 python多分支判断语句

if 条件一:
    执行动作一
elif 条件二:
    执行条件二
elif 条件三:
    执行动作三
else:
    执行动作四

示例

str1 = input("输入yes/no:")
if str1 == "yes":
    print("True")
elif str1 == "no":
    print("Flase")
else:
    print("Error")

示例:通过年龄判断对一个人的称呼

男的大于18叫sir

男的小于18叫boy

女的大于18叫lady

女的小于18叫girl

name = input("请输入姓名:")
sex = input("请输入性别man/women:")
age = int(input("请输入年龄:"))
if sex == "man":
    if age >= 18:
        print("hello {} sir".format(name))
    else:
        print("hello {} boy".format(name))
elif sex == "women":
    if age >= 18:
        print("hello {} lady".format(name))
    else:
        print("hello girl".format(name))
else:
    print("输入有误")

if嵌套

 if嵌套也就是if里还有if,你可以无限嵌套下去,但层次不宜过多(嵌套层次过多的话程序逻辑很难读,也说明你的程序思路不太好,应该有很好的流程思路来实现)

九,循环语句

while循环

while 条件:
    条件满足时候:执行动作一
    条件满足时候:执行动作二
    ......
 
 退出循环
continue #跳出本次循环
break #退出循环,执行循环外代码
exit() #退出python程序,可以指定返回值

打印1-10

i = 1
while i <= 100:
    print(i, end=" ")
    i += 1 

示例

计算1-100偶数之和

1-100偶数之和.py

i = 0
j = 0
while i <= 100:
    if i % 2 == 0:
        j = j + i
    i += 1
print(j)

猜数字

import random
num = random.randint(1, 100)
while True:
    g_num = int(input("请输入你猜想的数字1-100"))
    if g_num > num:
        print("大了")
        continue
    elif g_num < num:
        print("小了")
        continue
    else:
        print("对了 {}".format(num))
        break

for循环

for循环遍历一个对象(比如数据序列,字符串,列表,元组等),根据遍历的个数来确定循环次数。

for循环可以看作为定循环,while循环可以看作不定循环

for循环的基本格式

for 变量 in 数据:

  重复执行的代码

 示例

#for循环一个元组
for i in (1, 2, 3, 4, 5):
    print(i, end=" ")
#循环range函数这里表示 1 2 3 4 5不包含6
for i in range(1,6):
    print(i)
#循环0 1 2 3 4 5不包含6
for i in range(6):
    print(i)
#循环奇数,步长为2
for i in range(1, 100, 2):
    print(i)
#循环从100-1 步长为-2即从100降序打印偶数
for i in range(100, 1, -2):
    print(i) 

 

示例

使用for循环来实现1-100之间能被5和3同时整除的数字之和

sum = 0
for i in range(1,101):
    if i % 5 == 0 and i % 3 == 0:
        sum += i
print(sum)  

 

练习:改写猜数字游戏,最多5次,5次没有猜对就退出

方法一:使用while

import random
Num = random.randint(1, 100)
j = 0
while True:
    GuessNum = int(input("请输入你猜想的数字1-100"))
    if GuessNum > Num and j < 5:
        j += 1
        print("大了,已经猜{}次了".format(j))
        continue
    elif GuessNum < Num and j < 5:
        j += 1
        print("小了,已经猜{}次了".format(j))
        continue
    elif GuessNum == Num and j < 5:
        j += 1
        print("对了数字是{}你猜了{}次".format(GuessNum, j))
        break
    elif j >= 5:
        print("次数用完了数字是{}".format(Num))
        break

 

方法二:使用for循环

import random
Num = random.randint(1, 100)
for i in range(1, 6):
    GuessNum = int(input("请输入你猜想的数字1-100"))
    if GuessNum > Num:
        print("大了,已经猜{}次了".format(i))
    elif GuessNum < Num:
        print("小了,已经猜{}次了".format(i))
    else:
        print("对了,一共猜了{}次数字是{}".format(i, Num))
        break
    if i == 5:
        print("五次机会用完了")
        exit()

  

 

posted @ 2020-10-13 10:25  minseo  阅读(134)  评论(0编辑  收藏  举报