运算符与表达式的续集


'''
位运算符:按位运算符是把数字看做二进制数来进行计算
'''
#  &   按位与运算符
#相应的位数都为1,则该位的结果是1,否则为0
print(5 & 7)
'''
101
111
---
101
'''

# \  按位或运算符
# 两个二进制位有一个位1时,结果为1
print(5 | 7)
'''
101
111
---
111
'''

# ^  按位异或运算符
#二进制的两位相异时,结果为1
print(5 ^ 7)
'''
101
111
---
010
'''


#   ~    按位取反运算符
# 每个二级制数据位取反,1变0,0变1
print(~5)
'''
 11111111111111111111111111111111
 10000000000000000000000000000001
'''


#   <<   左移动运算符
#各二进制位全部左移动若干位,由<<右侧的数字决定,高位丢弃,低位补0
print(2 << 2)
#000000010





#  >>  右移动运算符
#各二进制位全部右移动若干位,由>>右侧的数字决定
print(-13 >> 2)
#00000001101
#00000000011





'''
关系运算符和关系运算表达式

==     !=     >       <      >=      <=

关系运算表达式:
1 + 2 > 3 + 4
格式:  表达式1   关系运算符   表达式2
功能:计算“表达式1”和“表达式2”的值
值:如果关系成立,整个关系运算表达式的值为真,否则为假

'''


'''
逻辑运算符
'''

'''
逻辑与   and

逻辑与运算表达式:表达式1  and  表达式2
值:
如果表达式1的值为真,表达式2的值为真,整体逻辑与运算表达式的值为真
如果表达式1的值为真,表达式2的值为假,整体逻辑与运算表达式的值为假
如果表达式1的值为假,表达式2的值为真,整体逻辑与运算表达式的值为假
如果表达式1的值为假,表达式2的值为假,整体逻辑与运算表达式的值为假
【有一个为假就为假】
'''

num1 = 10
num2 = 20
# num1 = num1 +1
if num1 and num2:
    print("**************")

print(num1, num2)



#短路原则
# 表达式1  and  表达式2  and   表达式3  and  ……  and 表达式n

'''
逻辑或  or

逻辑或运算表达式: 表达式1  or  表达式2
值:
表达式1的值为真,表达式2的值为真,逻辑或运算表达式为真
表达式1的值为真,表达式2的值为假,逻辑或运算表达式为真
表达式1的值为假,表达式2的值为真,逻辑或运算表达式为真
表达式1的值为假,表达式2的值为假,逻辑或运算表达式为假
【有一个为真就为真】
'''
num3 = 0
num4 = 1
if num3 or num4:
    print("&&&&&&&&&&&&&&&")
# 表达式1  or  表达式2  or   表达式3  or  ……  or 表达式n

'''
逻辑非:  not

逻辑非运算表达式:  not 表达式
值:
如果表达式的值为真,整体逻辑非运算表达式的值为假
如果表达式的值为假,整体逻辑非运算表达式的值为真
【颠倒黑白】
'''

if not 0:
    print("^^^^^^^^^^^^^^^^")


'''
成员运算符:
in:如果在指定的序列中找到值返回True,否则返回False
not in:如果在指定的序列中没有找到值返回True,否则返回False
'''

'''
身份运算符
is:判断两个标识符是不是引用同一个对象
is not:判断两个标识符是不是引用不同的对象
'''


'''
运算符优先级
**
~ + -    正负号(一元加减)
* / % //
+ -
>>  <<
&
^ |
<=  <   >   >=
==   !=
=  %=   +=  -=  //=
is   is not
in   not in
not   or   and
'''


String(字符串)

'''什么是字符串
字符串是以单引号或双引号括起来的任意文本
'abc'
"def"
字符串不可变
'''




#创建字符串
str1 = "sunck is a good man!"
str3 = "sunck is a nice man!"
str5 = "sunck is a handsome man!"




'''
字符串运算
'''
#字符串连接
str6 = "sunck is a "
str7 = "good man"
str8 = str6 + str7
print("str6 =", str6)
print("str7 =", str7)
print("str8 =", str8)
#输出重复字符串
str9 = "good"
str10 = str9 * 3
print("str10 =", str10)
#访问字符串中的某一个字符
#通过索引下标查找字符,索引从0开始
#字符串名[下标]
str11 = "sunck is a good man!凯"
print(str11[1])
#str11[1] = "a" #字符串不可变
print("str11 =", str11)

#截取字符串中的一部分
str13 = "sunck is a good man!"
#从给定下标出开始截取到给定下标之前
str15 = str13[6:15]
#从头截取到给定下标之前
str16 = str13[:5]
#从给定下标处开始截取到结尾
str17 = str13[16:]
print("str17 =", str17)


str18 = "sunck is a good man"
print("good" in str18)
print("good1" not in str18)


#print(~5)  #6
'''
00000101
11111010
10000110
'''


#格式化输出
print("sunc is a good man")
num = 10
str19 = "sunck is a nice man!"
f = 10.1267
print("num =", num, "str19 =", str19)
#  %d   %s   %f  占位符
#                                   精确到小数点后3位,会四舍五入
print("num = %d, str19 = %s, f = %.3f" % (num, str19, f))


'''
转义字符   \
将一些字符转换成有特殊含义的字符
'''
#\n
print("num = %d\nstr19 = %s\nf = %.3f" % (num, str19, f))
'''
\\
'''
print("sunck \\ is")

# \'   \"
print('tom is a \'good\' man')
print("tom is a \"good\" man")
#      tom is a 'good' man

#如果字符串内有很多换行,用\n写在一行不好阅读
print("good\nnice\nhandsome")
print('''
good
nice
handsome
''')

'''
\t   制表符
'''
print("sunck\tgood")


#如果字符中有好多字符串都需要转义,就需要加入好多\,为了简化,Python允许用r表示内部的字符串默认不转义
#     \\\t\\
print(r"\\\t\\")
print(r"C:\Users\xlg\Desktop\Python-1704\day03")
print("C:\\Users\\xlg\\Desktop\\Python-1704\\day03")
'''
windows
  C:\\Users\\xlg\\Desktop\\Python-1704\\day03
linux
  /root/user/sunck/Desktop/Python-1704/day03
'''







#eval(str)
#功能:将字符串str当成有效的表达式来求值并返回计算结果
num1 = eval("123")
print(num1)
print(type(num1))
print(eval("+123"))
print(eval("-123"))
print(eval("12+3"))
print(eval("12-3"))
#print(eval("a123"))
#print(eval("12a3"))


#len(str)
#返回字符串的长度(字符个数)
print(len("sunck is a good man凯"))

#lower()转换字符串中大写字母为小写字母
str20 = "SUNCK is a Good Man!凯"
str21 = str20.lower()
print(str21)
print("str20 = %s" %(str20))

#upper()转换字符串中小写字母为大写字母
str21 = "SUNCK is a Good Man!"
print(str21.upper())


#swapcase()转换字符串中小写字母为大写字母,大写字母为小写字母
str22 = "SUNCK is a gOOd mAn!"
print(str22.swapcase())


#capitalize()  首字母大写,其他小写
str23 = "SUNCK is a gOOd mAn!"
print(str23.capitalize())


#title()每个单的首字母大写
str24 = "SUNCK is a gOOd mAn!"
print(str24.title())

#  character   char
#center(width[, fillchar])
#返回一个指定宽度的居中字符串,fillchar为填充的字符串,默认空格填充
str25 = "kaige is a nice man"
print(str25.center(40,"*"))


#ljust(width[, fillchar])
#返回一个指定宽度的左对齐字符串,fllchar为填充字符,默认空格填充
str26 = "kaige is a nice man"
print(str26.ljust(40, "%"))



#rjust(width[, fillchar])
#返回一个指定宽度的右对齐字符串,fllchar为填充字符,默认空格填充
str27 = "kaige is a nice man"
print(str26.rjust(40, "%"))


#zfill(width)
#返回一个长度为width的字符串,原字符串右对齐,前面补0
str28 = "kaige is a nice man"
print(str28.zfill(40))


#count(str[,start][,end])
#返回字符串中strc出现的次数,可以指定一个范围,默认从头到尾
str29 = "kaige is a very very nice man"
print(str29.count("very",15, len(str29) ))



#find(str[, start][,end])
#从左向右检测str字符串是否包含在字符串中,可以指定范围,默认从头到尾。得到的是第一次出现的开始下标,没有返回-1
str30 = "kaige is a very very nice man"
print(str30.find("very"))
print(str30.find("good"))
print(str30.find("very", 15, len(str30)))


#rfind(str[, start][,end])]
str30 = "kaige is a very very nice man"
print(str30.rfind("very"))
#print(str30.rfind("good"))
print(str30.rfind("very", 0, 15))

#index(str, start=0, end=len(str))
#根find()一样,只不过如果str不存在的时候回报一个异常
str31 = "kaige is a very very nice man"
#print(str31.index("good"))


#rindex(str, start=0, end=len(str))
#根rfind()一样,只不过如果str不存在的时候回报一个异常
str32 = "kaige is a very very nice man"
print(str32.rindex("very"))


#lstrip()截掉字符串左侧指定的字符,默认为空格
str33 = "*******kaige is a nice man"
print(str33.lstrip("*"))

#rstrip()截掉字符串右侧指定的字符,默认为空格
str34 = "kaige is a nice man          "
print(str34.rstrip(), "*")

str35 = "*******kaige is a nice man*********"
print(str35.strip("*"))


str36 = "a"
print(ord(str36))
str37 = chr(65)
print(str37)

print(" " != " ")


while造句




num = 1
while num <= 5:
    print(num)
    num += 1


#计算1+2+3+……+100
sum = 0
num = 1
while num <= 100:
    sum += num   #1+……+99 + 100
    num += 1
print("sum = %d" % (sum))
'''
0 + 1
1 + 2
3 + 3
6 + 4
'''

str = "sunck is a handsome man"
index = 0
while index <  len(str):   #  index < 19
    print("str[%d] = %s" % (index, str[index]))
    index += 1

练习

#能被4整除但是不能被100整除    或      者能被400整除

year = int(input())

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


'''
打印出所有三位数中的水仙花数
告诉我五位数中有多少个回文数
从控制台输入一个数,判断是否是质数
从控制台输入一个数,分解质因数
从控制台输入一个字符串,返回这个字符串中有多少个单词
sf sdf gwe wagr     4
   sdfsdg sg esrhg      3
从控制台输入一个字符串,打印出这个字符串中所有数字字符的和
ad1sfjei45sdjg8     18
sdfsadf6afs87    21



a->数字-》二进制
   97


A  65


0  48



'''

#1
'''
num = int(input("请输入一个三位数"))
#153
a = num % 10
b = num // 10 % 10
c = num // 100

if num == a**3 + b**3 + c**3:
    print("yes")
else:
    print("no")
'''


#2
'''
num = int(input("请输入一个五位数"))
a = num % 10
b = num // 10000
if a != b:
   print("no")

if
'''


num1 = int(input())
num2 = int(input())
num3 = int(input())


max = num1
if num2 > max:
    max = num2
if num3 > max:
    max = num3

print("max =", max)



#从控制台输入一个年份,判断是否是闰年