第四课       条件语句(if、else和elif)
# coding:utf-8

python语言中是已缩进的代码块进行界定的 
#  条件语句(if、else和elif)
'''
if logic_expression:
    statement1
    statement2
    statement3
    ... ...
    statementn
elif logic_expression:
    statement1
    statement2
    ... ...
    statementn
else:
    statement1
    statement2
    ... ...
    statementn
otherstatement
'''
n = 3
if n == 3:            # python 语言中 默认是以4个空格或者1个tab键
    print("n == 3")
    print("hello world")
# 同属于一个代码块的缩进必须是一样的
print("------------------")

w = 2
if w == 1:
    print("w ==1")
else:               #别忘了else后面有个冒号
    print("w !=1")
print("------------------")  

n = 5
if n == 3:
    print("n == 3")
    print("xyz")
elif n == 4:
    print("n == 4")
    print("ddd")
elif n == 5:
    print("n == 5")
    print("xxx")
else:
    print("n != 3")
    print("abc")

name = input("请输入您的名字:")
if name.startswith("B"):     #这个表示字符串的前缀,也就是说以B开头的 这是一个方法
    print("名字以B开头")
elif name.startswith("F"):
    print("名字以F开头")
elif name.startswith("T"):
    print("名字以T开头")
else:
    print("名字以其他字母开头") 

这一部分的代码用shell来写
[hadoop@dev-hadoop-test03 majihui_test]$ cat a.sh 
#!/bin/bash

read -t 6 -p "pls input you name:" name

if [ $name == "majihui" ];then
        echo "你的名字:$name"
elif [ $name == "mjh" ];then
        echo "你的名字:$name"
else 
        echo "你的名字是其他"
fi
[hadoop@dev-hadoop-test03 majihui_test]$ sh a.sh 
pls input you name:majihui
你的名字:majihui
[hadoop@dev-hadoop-test03 majihui_test]$ sh a.sh
pls input you name:mjh
你的名字:mjh
[hadoop@dev-hadoop-test03 majihui_test]$ sh a.sh
pls input you name:sdd
你的名字是其他

[root@localhost if]# cat ifjiaoben5.sh 【此脚本有bug 没有去做出判断是否两个参数都是正整数】判断正整数的方法上面有解释到!
#!/bin/bash
if [ $1 -lt $2 ];then
        echo "$1<$2"
elif [ $1 -eq $2 ];then
        echo "$1=$2"
else
        echo "$1>$2"
fi
[root@localhost if]# sh ifjiaoben5.sh 1 2
1<2
[root@localhost if]# sh ifjiaoben5.sh 2 1
2>1
[root@localhost if]# sh ifjiaoben5.sh 1 1
1=1

---------------------------------------------------------------------
第五课 if条件语句嵌套代码块 
以下是老师的代码

# coding:utf-8
name = input("您叫什么名字?")
if name.startswith("Bill"):
    if name.endswith("Gates"):
        print("欢迎Bill Gates先生")
    elif name.endswith("Clinton"):
        print("欢迎克林顿先生")
    else:
        print("未知姓名")
    print("hello world")
elif name.startswith("李"):
    if name.endswith("宁"):
        print("欢迎李宁老师")
    else:
        print("未知姓名")
else:
    print("未知姓名")
---------------------------
下面我们自己写一个代码
# coding:utf-8
name = input("请输入 A B C 三个字母")
if name.startswith("A"):   #表示以A字母开头的
    if name.endswith("a"): #表示以a字母结尾的
        print("您输入的是Aa")
    elif name.endswith("b"):
        print("您输入的是Ab")
    else:
        print("不知道你输入的什么鬼")
    print("hello world") #这个代码的意思是不管是什么都会输出hello world
elif name.startswith("李"):
    if name.endswith("宁"):
        print("欢迎李宁老师")
    else:
        print("未知姓名")
else:
    print("不符合条件的输入")

——————————————————————————————————————————————————————————————————————————————
第六课 比较运算符
# coding:utf-8
# 比较运算符

'''
x == y  x等于y
x < y   x 小于 y
x > y   x 大于 y
x <= y  x 小于等于 y
x >= y  x 大于等于 y
x != y  x 不等于 y

x is y      x和y是同一个对象
x is not y  x和y不是同一个对象   是指x y 是由完全不同的2个类创建的 

x in y   x 是 y容器的成员,y是列表[1,2,3,4],1 in y,10 in y
x not in y  x 不是y容器的成员

所有的比较运算符的比较之后的值都是boolean类型 ******

shell中 
整数二元比较操作符
在[]中使用的比较符         在(())和[[]]中使用的比较符     说明
-eq                             ==          equal的缩写 相等
-ne             !=                         not equal   不相等
-gt             >                         大于
-ge             >=                          大于等于
-lt             <                           小于
-le             <=                          小于等于

'''
print("Hello" == "Hello")  #值为True
print("hello" == "Hello")  #值为flase 说明python是严格按照字母大小写的
# print("hello" = "Hello")  #只用一个等号 = 的话 直接报错了

print(10 == 20)  #值为false

print("hello" > "Hello")        #值为true 说明小写字母的h 阿斯克码值大于 H
print("hello" > "hello world")  #值为flase 这个表示首先比较hello前缀是一样的 那么就比较程度了 很明显后面的长度大于前面的长度

list = [1,2,3,4,5]  # 此为列表
print(1 in list)    #值为true
print(10 in list)   #值为false
print(10 not in list)  #值为true 

print("--------------------------------")
# 把比较运算符运用到我们的条件语句中
x = 40
y = 30
s1 = "Hello"
s2 = "World"
if x < y:
    print("x < y")
else:
    print("x >= y")
# or  逻辑或  这个类似于shell总的 ||
# and 逻辑与   这个类似于shell中的 && 

shell 中为:
逻辑操作符
在[]中使用的逻辑操作符      在[[]]中使用的逻辑操作符             说明
-a  【and与】      &&          “与”两端都是真,则为真
-o  【or或】       ||          “或”两端有一个为真就为真
!               !           “非”相反则为真

'''
   and   True and True == True  
   or    False or False == False
'''
if x < y and s1 < s2:
    print("满足条件")
elif not s1 > s2:
    print("基本满足条件")
else:
    print("不满足条件") 
第七课 断言(Assertions
//断言从字面上解释就是 在满足某一个条件之后,整个就断了
断言相当于 条件语句 + 抛出异常

# 断言(assertions)
'''
    if not condition
        crash program
        如果不满足条件就跑出异常       //主要用到TDD的开发模式上
    TDD(Test-driven development) #测试驱动开发 正常的开发模式是 开发完成之后 再进行黑盒 白盒测试
                                 #TDD的这个过程是相反的 我在编写程序之前 我先把这个块给规定了 比如说我们的这个程序涉及到 x y z
比如我这个程序 必须要满足 x > 20 y < 10 z == 50 才算成功   只要你改了条件,我这个程序就人为的让他出错 
    x y z

    x > 20
    if x <= 20:
       抛出异常
    y < 10
    z == 50
'''

value = 20
assert value > 10     #这样的输出结果为 真的 但是 在输出台 没有任何的输出

value = 4
assert value > 10     #他不满足条件了,就会跑出异常 也就是一堆代码错误。 
错误代码为:
/Users/majihui/pycharm_work/venv/bin/python /Users/majihui/pycharm_work/test05.py
Traceback (most recent call last):
  File "/Users/majihui/pycharm_work/test05.py", line 2, in 
    assert value > 10 
AssertionError

Process finished with exit code 1