一、运算符

(1)算术运算符

   + 加法运算符(如果是两个字符串之间进行加法运算,则会进行拼串操作)

      a = 10 + 5    计算

      a = 'hello' + ' ' + 'world'   拼串

   - 减法运算符

      a = 10 - 5    计算

      a = 5 - True   bool型也是int型,没有错误,输出4

      a = a - 2  用变量a的值减去2,然后再赋值给a

        a = 'hello' - 'h'   TypeError,类型错误

   * 乘法运算符(如果将字符串和数字相乘,则会对字符串进行复制操作,将字符串重复指定次数)

      a = 5 * 5

   / 除法运算符,运算时结果总会返回一个浮点类型,区别于Java,c

      a = 10 / 5 输出2.0

      a = 5 / 2 输出2.5

       a = 5 / 0   ZeroDivisionError: division by zero,除数不能为0

      a = 10 / 3  除不尽,输出3.333333335 近似值

   // 整除,只会保留计算后的整数位,总会返回一个整型。

      a = 10 // 3  输出3

      a = 5 // 2   输出2

   ** 幂运算,求一个值的几次幂。

      a = 2 ** 2  输出4

      a = 10 ** 5  10的5次幂输出100000

      a = 16 ** 0.5    求16的平方根 输出4

   % 取模,求两个数相除的余数

      a = 10 % 5  输出 0

      a = 10 % 4  输出 2

      a = 10 % 3  输出 1

      a = 10 % 2  输出 0

(2)赋值运算符

     = 可以将等号右侧的值赋值给等号左侧的变量

    += a += 5 相当于 a = a + 5

    -= a -= 5 相当于 a = a - 5

    *= a *= 5 相当于 a = a * 5

    **= a **= 5 相当于 a = a ** 5   幂次方

    /= a /= 5 相当于 a = a / 5   除数留浮点数

     //= a //= 5 相当于 a = a // 5   整除

     %= a %= 5 相当于 a = a % 5  取余

(3)关系运算符

  关系运算符用来比较两个值之间的关系,总会返回一个布尔值,如果关系成立,返回True,否则返回False

  > 比较左侧值是否大于右侧值  result = 10 > 20 输出 False

   >= 比较左侧的值是否大于或等于右侧的值  result = 10 >= 10 输出 True;  result = 2 > True 输出 True

      result = 2 > '1' TypeError: '>' not supported between instances of 'int' and 'str'

   < 比较左侧值是否小于右侧值

   <= 比较左侧的值是否小于或等于右侧的值

   == 比较两个对象的值是否相等

    result = 1 == 1   # True

    result = 'hello' == 'hello'   # True

    result = 'abc' == 'bcd'   # False

    result = 'abc' != 'bcd'   # True

    result = 1 == True   # True

   != 比较两个对象的值是否不相等

     相等和不等比较的是对象的值,而不是id

   is 比较两个对象是否是同一个对象,比较的是对象的id

   is not 比较两个对象是否不是同一个对象,比较的是对象的id

    result = 1 is True # False

    result = 1 is not True # True

   扩展:

    result = '2' > '1'  # True

    result = '2' > '11'  # True

     在Python中可以对两个字符串进行大于(等于)或小于(等于)的运算, 当对字符串进行比较时,实际上比较的是字符串的Unicode编码

  比较两个字符串的Unicode编码时,是逐位比较的,利用该特性可以对字符串按照字母顺序进行排序,但是对于中文来说意义不是特别大

   注意:如果不希望比较两个字符串的Unicode编码,则需要将其转换为数字然后再比较

    result = 'a' > 'b'  # False

    result = 'c' < 'd'  # True

    result = 'ab' > 'b'  # False

     print(int('2') > int('11'))

(4)逻辑运算符

  逻辑运算符主要用来做一些逻辑判断

     not 逻辑非    可以对符号右侧的值进行非运算

       对于布尔值,非运算会对其进行取反操作,True变False,False变True,对于非布尔值,非运算会先将其转换为布尔值,然后再取反

    and 逻辑与  可以对符号两侧的值进行与运算

      只有在符号两侧的值都为True时,才会返回True,只要有一个False就返回False

      与运算是找False的,Python中的与运算是短路的与,如果第一个值为False,则不再看第二个值。

    or 逻辑或  可以对符号两侧的值进行或运算

      或运算两个值中只要有一个True,就会返回True,或运算是找True的

      Python中的或运算是短路的或,如果第一个值为True,则不再看第二个值
    如:

      a = True  a = not a    对a进行非运算

      a = 1
      a = ''
      a = not a  非布尔值先转换后取反
        print('a =',a)

      result = True and True   # True
      result = True and False   # False
      result = False and True   # False
      result = False and False   # False

       print(result)

      True and print('你猜我出来吗?') 第一个值是True,会看第二个值,所以print()会执行
       False and print('你猜我出来吗?')第一个值是False,不会看第二个值,所以print()不会执行

      result = True or True   # True
      result = True or False   # True
      result = False or True   # True
      result = False or False   # False

      False or print('你猜我出来吗?') 第一个值为False,继续看第二个,所以打印语句执行
      True or print('你猜我出来吗?') 第一个值为True,不看第二个,所以打印语句不执行

   其他:非布尔值的与或运算 当我们对非布尔值进行与或运算时,Python会将其当做布尔值运算,最终会返回原值      

   与运算的规则,与运算是找False的,如果第一个值是False,则直接返回第一个值,否则返回第二个值。

   或运算的规则,或运算是找True的,如果第一个值是True,则直接返回第一个值,否则返回第二个值。

    True and True
    result = 1 and 2   # 2
    True and False
    result = 1 and 0   # 0
     False and True
    result = 0 and 1   # 0
     False and False
    result = 0 and None   # 0

    True or True
    result = 1 or 2   # 1
     True or False
    result = 1 or 0   # 1
     False or True
    result = 0 or 1   # 1
     False or False
    result = 0 or None   # None

(5)条件运算符

   语法:语句1  if 条件表达式 else 语句2

    条件运算符在执行时,会先对条件表达式进行求值判断,如果判断结果为True,则执行语句1,并返回执行结果。否则执行语句2

    print('a的值比较大!') if a > b else print('b的值比较大!')

    max = a if a > b else b,如果a>b成立,执行语句1: max=a,把a的值赋值给变量max,若是不成立执行语句2:max=b,b赋值给max

(6)优先级

  结合数学常识,先乘除后加减,实在不行加小括号。表格中越往下优先级越高。

  and的优先级高于or .   1 or 2 and 3 输出为1    等价于 1 or (2 and 3)

  逻辑运算符可以连着使用。result = 1 < 2 < 3   相当于 1 < 2 and 2 < 3

二、条件判断语句

   (1)if语句

# 条件判断语句(if语句)
# 语法:if 条件表达式 :
# 代码块
# 执行的流程:if语句在执行时,会先对条件表达式进行求值判断,
# 如果为True,则执行if后的语句
# 如果为False,则不执行
# 默认情况下,if语句只会控制紧随其后的那条语句,如果希望if可以控制多条语句,
# 则可以在if后跟着一个代码块
# 代码块
# 代码块中保存着一组代码,同一个代码块中的代码,要么都执行要么都不执行
# 代码块就是一种为代码分组的机制
# 如果要编写代码块,语句就不能紧随在:后边,而是要写在下一行
# 代码块以缩进开始,直到代码恢复到之前的缩进级别时结束
# 鲁迅说过:
# 世上本来没有路,走的人多了自然就有了!
# xxxx
# yyyy....
# 缩进有两种方式,一种是使用tab键,一种是使用空格(四个)
# Python的官方文档中推荐我们使用空格来缩进
# Python代码中使用的缩进方式必须统一
# "translate_tabs_to_spaces": true, # if False : print('你猜我出来么?') num = 10
# if num > 10 : print('num比10大!')
# print('谁也管不了我') if False :
print(123)
print(456)
print(789)
print(101112)
# print('hello') num = 28 # 可以使用逻辑运算符来连接多个条件,
# 如果希望所有条件同时满足,则需要使用and
# 如果希望只要有一个条件满足即可,则需要使用or
# if num > 10 and num < 20 :
# print('num比10大,num比20小!') # if 10 < num < 20 :
# print('num比10大,num比20小!') # 在命令行让用户输入一个用户名,获取用户输入,并进行判断
# 如果用户输入的用户名是admin,则显示欢迎管理员光临
# 如果用户输入的是其他的用户名,则什么也不做
# input()函数
# 该函数用来获取用户的输入
# input()调用后,程序会立即暂停,等待用户输入
# 用户输入完内容以后,点击回车程序才会继续向下执行
# 用户输入完成以后,其所输入的的内容会以返回值得形式返回
# 注意:input()的返回值是一个字符串
# input()函数中可以设置一个字符串作为参数,这个字符串将会作为提示文字显示
# a = input('请输入任意内容:')
# print('用户输入的内容是:',a)
# input()也可以用于暂时阻止程序结束 # 获取用户输入的用户名
username = input('请输入你的用户名:')
# 判断用户名是否是admin
if username == 'admin' :
print('欢迎管理员光临!')
# 让用户在控制台中输入一个年龄
# age = int(input('请输入你的年龄:')) # 如果用户的年龄大于18岁,则显示你已经成年了
# if age >= 18 :
# print('你已经成年了~~~') # if-else语句
# 语法:
# if 条件表达式 :
# 代码块
# else :
# 代码块
# 执行流程:
# if-else语句在执行时,先对if后的条件表达式进行求值判断
# 如果为True,则执行if后的代码块
# 如果为False,则执行else后的代码块 age = 7
if age > 17 :
print('你已经成年了~~')
else :
print('你还未成年~~')

  (2)if-elif-if语句

# if-elif-else语句
# 语法:
# if 条件表达式 :
# 代码块
# elif 条件表达式 :
# 代码块
# elif 条件表达式 :
# 代码块
# elif 条件表达式 :
# 代码块
# else :
# 代码块
#
# 执行流程:
# if-elif-else语句在执行时,会自上向下依次对条件表达式进行求值判断,
# 如果表达式的结果为True,则执行当前代码块,然后语句结束
# 如果表达式的结果为False,则继续向下判断,直到找到True为止
# 如果所有的表达式都是False,则执行else后的代码块
# if-elif-else中只会有一个代码块会执行 age = 210 # if age > 200 :
# print('活着可真没劲呢!')
# elif age > 100 :
# print('你也是老大不小了!')
# elif age >= 60 :
# print('你已经退休了!')
# elif age >= 30 :
# print('你已经是中年了!')
# elif age >= 18 :
# print('你已经成年了!')
# else :
# print('你还是个小孩!') age = 68 if age >= 18 and age < 30 :
print('你已经成年了!')
elif age >= 30 and age < 60 :
print('你已经中年了!')
elif age >= 60 :
print('你已经退休了!')

练习

# 练习1:
# 编写一个程序,获取一个用户输入的整数。然后通过程序显示这个数是奇数还是偶数。
# 获取用户输入的整数
# num = int(input('请输入一个任意的整数:')) # # 显示num是奇数还是偶数
# if num % 2 == 0 :
# print(num , "是偶数")
# else :
# print(num , '是奇数') # 练习2:
# 编写一个程序,检查任意一个年份是否是闰年。
# 如果一个年份可以被4整除不能被100整除,或者可以被400整除,这个年份就是闰年
# year = int(input('请输入一个任意的年份:'))
# # 检查这个年份是否是闰年
# # year % 4 == 0 and year % 100 != 0 or year % 400 == 0
# if year % 4 == 0 and year % 100 != 0 or year % 400 == 0 :
# print(year,'是闰年')
# else :
# print(year,'是平年') # 练习3:
# 我家的狗5岁了,5岁的狗相当于多大年龄的人呢?
# 其实非常简单,狗的前两年每一年相当于人类的10.5岁,然后每增加一年就增加四岁。
# 那么5岁的狗相等于人类的年龄就应该是10.5+10.5+4+4+4 = 33岁 # 编写一个程序,获取用户输入的狗的年龄,然后通过程序显示其相当于人类的年龄。
# 如果用户输入负数,请显示一个提示信息 核心代码 print("狗的年龄是:",2*10.5+(year-2)*4) # dog_age = float(input('请输入狗的年龄:'))
# like_person_age = 0
# 检查用户输入的是否是负数
# if dog_age < 0 :
# print('你的输入不合法!')
# # 如果狗的年龄在两岁以下(包含两岁)
# elif dog_age <= 2 :
# # 直接将当前的年龄乘以10.5
# like_person_age = dog_age * 10.5
# # 如果狗的年龄在两岁以上
# else :
# # 计算前两岁相当于人类的年纪
# like_person_age = 2 * 10.5
# # 计算超过两岁的部分相对于人类的年纪,并进行相加
# like_person_age += ( dog_age - 2 ) * 4 # if dog_age > 0 :
# print(dog_age,'岁的狗,年纪相当于',like_person_age,'岁的人')
# # 在if也可以去嵌套if,代码块是可以嵌套的,每增加一个缩进的级别,代码块就低一级
# 检查用户的输入是否合法
# if dog_age > 0 :
# # 如果狗的年龄在两岁以下(包含两岁)
# if dog_age <= 2 :
# # 直接将当前的年龄乘以10.5
# like_person_age = dog_age * 10.5
# # 如果狗的年龄在两岁以上
# else :
# # 计算前两岁相当于人类的年纪
# like_person_age = 2 * 10.5
# # 计算超过两岁的部分相对于人类的年纪,并进行相加
# like_person_age += ( dog_age - 2 ) * 4 # print(dog_age,'岁的狗,年纪相当于',like_person_age,'岁的人')
# else :
# print('请输入一个合法的年龄!') # 练习4:
# 从键盘输入小明的期末成绩:
# 当成绩为100时,'奖励一辆BMW'
# 当成绩为[80-99]时,'奖励一台iphone'
# 当成绩为[60-79]时,'奖励一本参考书'
# 其他时,什么奖励也没有 # 获取小明的成绩
# score = float(input('请输入你的期末成绩(0-100):')) # # 打印分割线
# print("="*40) # # 检查用户的输入是否合法
# if 0 <= score <= 100 :
# # 判断发给的奖励
# if score == 100 :
# print('宝马,拿去玩!')
# elif score >= 80 :
# print('苹果手机,拿去玩!')
# elif score >= 60 :
# print('参考书,拿去玩!')
# else :
# print('棍子一根!')
# else :
# # 用户输入的不合法,弹出一个友好提示
# print('你输入的内容不合法,拉出去毙了!') # 练习5:
# 大家都知道,男大当婚,女大当嫁。那么女方家长要嫁女儿,当然要提出一定的条件:
# 高:180cm以上; 富:1000万以上; 帅:500以上;
# 如果这三个条件同时满足,则:'我一定要嫁给他'
# 如果三个条件有为真的情况,则:'嫁吧,比上不足,比下有余。'
# 如果三个条件都不满足,则:'不嫁!' # 获取用户的三个数据,身高、财富、颜值
height = float(input('请输入你的身高(厘米):'))
money = float(input('请输入你的财富(万):'))
face = float(input('请输入你的颜值(平方厘米):')) # 判断到底嫁不嫁
# 如果这三个条件同时满足,则:'我一定要嫁给他'
if height > 180 and money > 1000 and face > 500 :
print('我一定要嫁给他!')
# 如果三个条件有为真的情况,则:'嫁吧,比上不足,比下有余。'
elif height > 180 or money > 1000 or face > 500 :
print('嫁吧,比上不足,比下有余。')
# 如果三个条件都不满足,则:'不嫁!'
else :
print('不嫁!')

  (3)循环语句

# 循环语句
# 循环语句可以使指定的代码块重复指定的次数
# 循环语句分成两种,while循环 和 for循环
# while循环
# 语法:
# while 条件表达式 :
# 代码块
# else :
# 代码块
# 执行流程:
# while语句在执行时,会先对while后的条件表达式进行求值判断,
# 如果判断结果为True,则执行循环体(代码块),
# 循环体执行完毕,继续对条件表达式进行求值判断,以此类推,
# 直到判断结果为False,则循环终止,如果循环有对应的else,则执行else后的代码块 # 条件表达式恒为True的循环语句,称为死循环,它会一直运行,慎用!
# while True :
# print('hello') # 循环的三个要件(表达式)
# 初始化表达式,通过初始化表达式初始化一个变量
# i = 0 # # 条件表达式,条件表达式用来设置循环执行的条件
# while i < 10 :
# print(i)
# # 更新表达式,修改初始化变量的值
# i += 1 # 创建一个执行十次的循环
i = 0
while i < 10 :
i += 1
print(i,'hello')
else :
print('else中的代码块')

练习

# 求100以内所有的奇数之和
# 获取所有100以内数
# i = 0
# # 创建一个变量,用来保存结果
# result = 0
# while i < 100 :
# i += 1
# # 判断i是否是奇数
# if i % 2 != 0:
# result += i # print('result =',result) # 获取100以内所有的奇数
# i = 1
# while i < 100:
# print(i)
# i += 2 # 求100以内所有7的倍数之和,以及个数
i = 7
# 创建一个变量,来保存结果
result = 0
# 创建一个计数器,用来记录循环执行的次数
# 计数器就是一个变量,专门用来记录次数的变量
count = 0
while i < 100:
# 为计数器加1
count += 1
result += i
i += 7 print('总和为:',result,'总数量为:',count)
# 水仙花数是指一个 n 位数(n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身(例如:1**3 + 5**3 + 3**3 = 153)。
# 求1000以内所有的水仙花数 # 获取1000以内的三位数
i = 100
while i < 1000: # 假设,i的百位数是a,十位数b,个位数c
# 求i的百位数
a = i // 100
# 求i的十位数
# b = i // 10 % 10 b=(i%100)//10
b = (i - a * 100) // 10
# 求i的个位数字
c = i % 10
# print(i , a , b , c) # 判断i是否是水仙花数
if a**3 + b**3 + c**3 == i :
print(i)
i += 1
# 获取用户输入的任意数,判断其是否是质数。
num = int(input('输入一个任意的大于1的整数:')) # 判断num是否是质数,只能被1和它自身整除的数就是质数
# 获取到所有的可能整除num的整数
i = 2
# 创建一个变量,用来记录num是否是质数,默认认为num是质数
flag = True
while i < num:
# 判断num能否被i整除
# 如果num能被i整除,则说明num一定不是质数
if num % i == 0 :
# 一旦进入判断,则证明num不是质数,则需要将flag修改为false
flag = False
i += 1 if flag :
print(num,'是质数')
else :
print(num,'不是质数')
# 在控制台中打印如下图形
# *****
# *****
# *****
# *****
# *****
# # 创建一个循环来控制图形的高度
# 循环嵌套时,外层循环没执行一次,内存循环就要执行一圈
# i = 0
# while i < 5:
# # 创建一个内层循环来控制图形的宽度
# j = 0
# while j < 5:
# print("* ",end='') #end=''表示不换行
# j += 1
# print()
# i += 1 #
# * j<1 i=0
# ** j<2 i=1
# *** j<3 i=2
# **** j<4 i=3
# ***** j<5 i=4
#
# *****
# ****
# ***
# **
# *
i = 0
while i < 5:
j = 0
while j < i + 1:
print("* ",end='')
j += 1
print()
i += 1
# 练习1:
# 打印99乘法表
# 1*1=1
# 1*2=2 2*2=4
# 1*3=3 2*3=6 3*3=9
# ... 9*9=81 # 创建一个外层循环来控制图形的高度
i = 0
while i < 9:
i += 1 # 创建一个内层循环来控制图形的宽度
j = 0
while j < i:
j += 1
print(f"{j}*{i}={i*j} ",end="") print()
# 求100以内所有的质数
# 创建一个循环,求1-100以内所有的数
i = 2
while i <= 100: # 创建一个变量,记录i的状态,默认认为i是质数
flag = True # 判断i是否是质数
# 获取所有可能成为i的因数的数
j = 2
while j < i:
# 判断i能否被j整除
if i % j == 0:
# i能被j整除,证明i不是质数,修改flag为False
flag = False
j += 1
# 验证结果并输出
if flag :
print(i) i += 1
# break
# break可以用来立即退出循环语句(包括else)
# continue
# continue可以用来跳过当次循环
# break和continue都是只对离他最近的循环起作用
# pass
# pass是用来在判断或循环语句中占位的,没有任何实际意义。 # 创建一个5次的循环
# i = 0
# while i < 5:
# if i == 3:
# break
# print(i)
# i += 1
# else :
# print('循环结束') # i = 0
# while i < 5:
# i += 1
# if i == 2:
# continue
# print(i)
# else :
# print('循环结束') i = 0
if i < 5:
pass
# 模块,通过模块可以对Python进行扩展,类似于Java中外置扩展包。
# 引入一个time模块,来统计程序执行的时间
from time import *
# time()函数可以用来获取当前的时间,返回的单位是秒
# 获取程序开始的时间
# 优化前:
# 10000个数 12.298秒
# 100000个数 没有结果
# 第一次优化
# 10000个数 1.577秒
# 100000个数 170.645秒
# 第二次优化
# 10000个数 0.068秒
# 100000个数 1.646秒
#
# 36的因数
# 2 18
# 3 12
# 4 9
# 6 6
#
begin = time() i = 2
while i <= 100000:
flag = True
j = 2
while j <= i ** 0.5: #优化2 i开方
if i % j == 0:
flag = False
# 一旦进入判断,则证明i一定不是质数,此时内层循环没有继续执行的必要
# 使用break来退出内层的循环
break #优化1 跳出循环
j += 1
if flag :
# print(i)
pass
i += 1 # 获取程序结束的时间
end = time() # 计算程序执行的时间
print("程序执行花费了:",end - begin , "秒")

 

最新文章

  1. 【Java并发编程实战】----- AQS(二):获取锁、释放锁
  2. 十大经典排序算法总结——JavaScrip版
  3. lecture7-序列模型及递归神经网络RNN
  4. JavaEE基础(八)
  5. 如何在VirtualBox虚拟机软件上安装Win7虚拟系统
  6. POJ 1091 跳蚤 容斥原理
  7. [转] LCA与Tarjan
  8. viewpager+fragment学习笔记
  9. C# 父子类_实例_静态成员变量_构造函数的执行顺序
  10. js 调用 android 安卓 代码
  11. nginx自定义模块记录上游服务器特定响应头
  12. Android Notification (转)
  13. JEMETER 录制
  14. string数组转化成int数组
  15. Spring mvc 上传进度条实现
  16. Lambda表达式树解析(下)
  17. 使用Wisdom RESTClient如何在Linux和Mac上获取测试报告和API文档?
  18. 在使用Idea配置jQuery的问题
  19. 【BZOJ1024】[SCOI2009]生日快乐(搜索)
  20. linux笔记_day08

热门文章

  1. 创建一个jFinal项目
  2. [转]CSS自动换行后缩进
  3. jQuery_完成表格的隔行换色
  4. Spring Boot教程(十四)快速入门
  5. [CSP-S模拟测试]:山屋惊魂(模拟)
  6. android底部标题栏的实现
  7. 假设高度已知,请写出三栏布局,其中左栏、右栏各为300px,中间自适应的五种方法
  8. Tomcat部署时war和war exploded区别以及平时踩得坑
  9. 每日踩坑 2019-07-30 H5 使用 iframe 底部有白边
  10. 编译Chrome详细步骤