Python运算符与初窥分支结构(3.3)

变量存储的底层原理

C / C++ 先申请变量,申请变量的同时就规定了变量所需内存的大小,然后再把数据放进去:
python 先看数据需要多大内存,根据数据去申请内存,然后再和内存去关联,最后将内存空间和变量进行关联

所以:python 重新对变量赋值时,会根据新数据重新分配新地址空间,将新的数据存储到其中,
最后将新的内存空间和变量进行关联原来的空间会被自动释放,而C/C++ 不会重新分配地址,而且重新赋值时只能赋相同类型的变量

·

a=100
print('a:',id(a))
a=200
print('a:',id(a))

输出结果如图:
在这里插入图片描述

数学运算符

  1. 普通运算符
print(2+5)
print(2-5)
print(2*5)
print(2/5) #0.4  注意和C的区别
print(5/2) #2.5
  1. %(取余)
print(10%4) #2
print(15%4) #3

练习:判断一个数是否能被另外一个数整除

a=int(input('判断输入的数是否能被4整除:'))
if (a%4==0):
	print('可以')
else:
	print('不可以')

练习:取低位数

num=234
print(num%10)
print(num%100)
  1. 整除(//)

整除 : 只保留整数部分,向下(小)取整

print(25//2)
print(3.9//3)
print(-5//2)  #-3

练习:写程序获取任意一个正整数的十位数

b=int(input('获取一个正整数的十位数'))
print(b%100//10)    #法一(先取余获得最后两位数,再通过整除获取十位数)
print(b//10%10)     #法二(先整除10去掉原来的个位数,再取余操作获得原十位数)
  1. x**y - 求x的y次方

也可以用来开方

print(16**0.5) #4
print(8**(1/3))#2
print(1024**(1/10))#2

比较运算符(== , != ,>= ,<=…)

:所有比较运算符的结果都是bool值

print(10!=10)
print(10==10)
print(5!=10)
print(10>=10)
print(10<=10)

Python中比较运算符可以连写

age=188
print(0<=10<=100)
print(0<=10<=9)
print(7<=age<=299)
age=999
print(7<=age<=299)
print('abc'>'ABC')

注意不同类数据不能进行比较

print('123'>10) #不同类型会报错

逻辑运算符 and(逻辑与) or(逻辑或) not(逻辑非)

  1. and

1)应用场景,用于表达对多个条件同时满足的时候,相当于并且
2)运算符规则:全真才真,一假都假
True and True :True
False and True :False
False and False:False

练习:一个整数是否能够被3和7整除

num=int(input('输入数字判断能否被3,7整除:'))
if (num%3==0 and num%7==0):
    print('True')
else:
    print('False')

可以会直接判断能否被21整除:

num=int(input('输入数字判断能否被3,7整除:'))
if (num%21==0):
    print('True')
else:
    print('False')
  1. 逻辑或运算;or

1)用于表达多个条件只需要符合一个便可以的情况,相当于或者
2)运算规则:一真为真,全假才假
True and True :True
False and True :True
False and False:False

练习:一个整数是否能够被3或7整除

num=int(input('输入数字判断能否被3,7整除:'))
if (num%3==0 or num%7==0):
    print('True')
else:
    print('False')

练习:判断指定的年是否为闰年(tips:能被4整除但是不能被100整除 或者 能被400整除的年 )

def judge_year(year):
    # year = int(input('请要判断是否为闰年的年份:'))
    #if (year%4==0 and year%100!=0 or year%400==0):  #可以写到一起来判断
    if (year%4==0 and year%100!=0):
        print('是闰年!')
    elif (year%400==0):
        print('是闰年!!')
    else:
        print('非闰年!!!')
year = int(input('请要判断是否为闰年的年份:'))
judge_year(year)
  1. not

1)应用场景:如果一个问题正向描述很困难,那么就将其条件反向写,然后前边加not
2)运算规则:
not True : False
not False: True

判断一个数是否不能同时被3.7整除的时候要考虑:

a. 能被7整除,不能被3整除
b. 能被3整除,不能被7整除
c. 不能被3整除,也不能被7整除

法一:

print((num1%7==0 and num1%3!=0)or(num1%3==0 and num1%7!=0)or(num1%7!=0 and num1%3!=0))

法二:

print(not num1%21==0)

短路操作

and的短路:条件一 and 条件二 :如果条件一是False,程序不会执行条件二是否成立
True and print(‘条件二1’)#不会短路
False and print(‘条件二2’)#会短路

or的短路 ,条件一 or 条件二 :如果条件一是True,程序不会执行条件二对应的代码
True or print(‘条件二11’)#会短路
False or print(‘条件二22’)#不会短路

运算对象非bool ;逻辑运算符通用运算规则

数据1 and 数据2 :
打印出的一定是两个结果中的一个,如果前一个结果是Flase,所以结果是数据1,
如果第一个是True ,结果是数据2
数据1 or 数据2 :
打印出的一定是两个结果中的一个,如果前一个结果是Flase,所以结果是数据2,
如果第一个是True ,结果是数据1

not 数据 ;数据的bool值取反

print(True and 10)#10
print(7 and 10) #10
print(9 or 8)#9
print(0.0 or 1)#1

数据的bool值(数据转换成bool的结果)

非常重要!

python 中每个数据都有一个bool值,不管什么类型的数据都可以转换成bool值
所有的0值,空值对应的bool值都是Flase,其他都是True

print(bool(0))#False
print(bool(242))#True
print(bool(''))#空串bool值是False
print(bool(None))#Flase
print(bool('\0'))#True
print(bool(' '))#就算是空格bool值也是True

赋值运算符: =, +=,-=,/=,//=,%=,**=

  1. 注意:赋值运算表达式没有结果(不能用赋值运算来提供数据)
#print(a=10) #这样会报错
print(10+20) #这样可以
#print(10+(p=20)) #这样会报错
  1. 任何赋值运算符的左边必须是变量(不管是简单的赋值运算符,还是符合的赋值运算符的功能都是将数据存储到变量中)
    1. = :普通赋值运算符
    2. 复合赋值运算符(变量为已经赋值过的变量)
      变量 += 数据 -先将变量中的数据取出来和后边的数据进行加法运算,最后将运算的结果赋给前边的变量
    3. 运算符的优先级
      整体的顺序:数学运算符 > 比较运算符(== ,>) > 逻辑运算符 > 赋值运算符
      ** > * ,/ ,//, % > + ,-
      有括号先算括号里的(只有小括号)

分支结构

  1. 顺序结构:

  2. 分支结构:满足条件才执行,不满足不执行或执行其他代码
    语法:
    if 条件语句:
    代码段

    说明:
    1)if - 关键字:固定写法
    2)条件语句 - 任何有结果的表达式(只有赋值语句没结果):具体数据,,赋值过的变量, 运算表达式
    3): - 固定写法
    4)代码段 - 和if 保持一个缩进(一般用tab键产生)
    就是满足条件才执行的代码
    练习:指定的数据为奇数,就打印‘奇数’

#法一
def odd(num):
    if num%2!=0:    #!!!!推荐用法二 if num%2:
        print('奇数')
    else:
        print('偶数')
num=int(input('请输入数字:'))
odd(num)
  1. 循环结构:让代码重复执行多次

作业

选择题

  1. print(100 - 25 * 3 % 4) 应该输出什么? (B)

    A. 1

    B. 97

    C. 25

    D. 0

  2. 下列哪种说法是错误的(A)。

    A. 除字典类型外,所有标准对象均可以⽤于布尔测试

    B. 空字符串的布尔值是False

    C. 空列表对象的布尔值是False

    D. 值为0的任何数字对象的布尔值是False

  3. 下列表达式的值为True的是(A)。

    A. 3>2>2

    B. 1 and 2 != 1(#true)

    C. not(11 and 0 != 2)

    D. 10 < 20 and 10 < 5

  4. Python不⽀持的数据类型有(A)。

    A. char

    B. int

    C. float

    D. list

  5. (多选)n = 6784,以下能够获取到7 的⽅法有(CD)。

    A. n / 1000 % 100

    B. n % 1000 / 100 (#n % 1000 / /100`)

    C. n // 100 % 10

    D. n // 10 % 100 // 10

6. 运⾏以下程序,当从键盘上输⼊12,运⾏结果是(A)。

x = (input())
print(type(x))

A. <class 'str'> (注意没有进行类型转换,类型是str)

B. <class 'int'>

C. 出错

D. <class 'dict'>

  1. 下列表达式的运算结果是(D ) 。

    a = 100
    b = False#这里False参与运算时按0算,True按1算)
    print(a * b > -1)
    

    A. False

    B. 1

    C. 0

    D. True

填空题

  1. 查看变量中数据的类型的函数名是(type())。
  2. 已知 x = 3 == 3 ,执⾏结束后,变量x的值为(True)。
  3. 已知 x = 3 ,那么执⾏语句 x += 6 之后,x的值为(9)。
  4. 表达式 3 ** 2 的值为(9),表达式 3 * 2 的值为(6),表达式 4 ** 0.5 的值为(2)。

编程题

  1. 写出判断⼀个数是否能同时被2和5整除的条件语句, 并且打印对应的结果。
num=int(input('判断⼀个数是否能同时被2和5整除:'))
if num%10:
    print('不能同时被2和5整除')#print(num,'不能同时被2和5整除',sep='')
else:
    print('能同时被2和5整除')

结果:
在这里插入图片描述
在这里插入图片描述

  1. 写出判断⼀个数是否能够被2或者5整除,但是不能同时被2或者5整除的条件语句, 并且打印对应

    的结果。

num=int(input('判断⼀个数是否能同时被2或5整除,但是不能同时被2或者5整除:'))
#if (num%2==0 and num%5!=0) or (num%5==0 and num%2!=0):
#if ((num%2!=0 and num%5!=0) or (num%10==0)):
if (num%2==0 or num%5==0and num%10!=0:
    print('能同时被2或5整除,但是不能同时被2或者5整除')
else:
    print('不符合条件')

结果:
在这里插入图片描述

在这里插入图片描述

  1. 假设今天的上课时间为15678秒,编程计算今天上课时间是多少⼩时,多少分钟,多少秒;以‘XX

    时XX分XX秒’的⽅式表示出来。

    例如:100秒表示成 0时1分40秒

seconds=15678
hour,min,second=0,0,0
if seconds>=3600:
    hour=seconds//3600  #通过整除确定有几小时
if seconds>60:
    min=seconds%3600//60  #不满3600的秒数通过整除确定有几分钟
second=seconds%60  #直接对60取余获得秒数
print('今天上课时间是:','**',hour,'时',min,'分',second,'秒 **')

结果:
在这里插入图片描述

  1. 定义两个变量保存⼀个⼈的身⾼和体重,编程实现判断这个⼈的身材是否正常!

    公式: 体重(kg) / (身⾼(m)的平⽅值 ) 在18.5 ~ 24.9之间属于正常。

    输出格式: 是否正常:True/False

height,weight=map(float,input('请分别输入身高(m),体重(kg)(注意用空格隔开):').split())
if 18.5<=weight/(height**2)<=24.9:
    print('True,完美!')
else:
    print('False,加油,还有待提高!')
# result=weight/(height**2)
# print('是否正常:',18.5 <= result <= 24.9)

结果:
在这里插入图片描述
在这里插入图片描述

python技巧2:用input( )同时输入多个数

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值