文章目录
- 算术运算符
- 优先级
- 赋值运算符
- 比较运算符
- 逻辑运算符
- 短路原则
- while循环
- 练习:
- 1. 打印九九乘法表
- 方法一
- 方法二
- 方法三
- 2. 用户输入长和宽,打印同等高宽的#号
- 3. 输出一个如下的直角三角形,用户指定输出行数;(思考:如何实现上下反转?)
- 参考源码
算术运算符
>>> 1+2 #加法
3
>>> 3-2 #减法
1
>>> 2*3 #乘法
6
>>> 5/2 #除法
2.5
>>> 5//2 #地板除也叫整除
2
>>> 9//2
4
>>> 9%2 #取余
1
>>> 2**10 #指数
1024
优先级
- 指数运算法的优先级比乘除优先级高
- 可以用
()
来更改运算顺序
>>> 2**3*5 #先计算指数,再计算乘法
40
>>> 2+3*5
17
>>> >>> (2+3)*5 #添加括号来改变运算顺序
25
>>> ((2+3)*5)*5 #加多个括号改变运算顺序
125
在Python中,统一都使用()
来改变运算顺序。不像是在数学运算中可以使用中括号大括号来改变运算顺序。
赋值运算符
- 将赋值号右边的表达式的值赋给左边的变量
操作 | 符号 | 例 | 展开式 | 含义 |
赋值 | = | a = exp | a = exp | 将右边的值赋给左边 |
加 | += | a += exp | a = a+exp | 先计算出exp,然后加a,再将值赋给左边 |
减 | -= | a -= exp | a = a-exp | 先计算出exp,然后减a,再将值赋给左边 |
乘 | *= | a *= exp | a = a*exp | 先计算出exp,然后a乘以exp,再将值赋给左边 |
除 | /= | a /= exp | a = a/exp | 先计算出exp,然后a除以exp,再将值赋给左边 |
整除 | //= | a //= exp | a = a//exp | 先计算出exp,然后a整除exp,再将值赋给左边 |
取模 | %= | a %= exp | a = a%exp | 先计算出exp,然后计算a%exp的模,再将值赋给左边 |
指数 | **= | a **= exp | a = a**exp | 先计算出exp,然后计算a**exp的值,再将值赋给左边 |
- 字符串与数字的转换
>>> a=input("Enter:") #input输入的值都为字符串
Enter:55
>>> a
'55'
>>> int(a) #int()强制转换为数字类型,没有引号
55
>>> b=15
>>> str(b) #str()强制转换为字符串类型,有引号
'15'
>>> int(str(b)) #再强制转换为数字类型
15
字符串是无法进行算数运算的,如果字符串是数字,想要进行运算,必须要先转换成整数类型
比较运算符
>>> a = 5 #一个等号为赋值
>>> b = 15
>>> a>b #算数运算,判断a是否大于b
False #False表示条件不成立,即a不大于b
>>> a<b
True #True表示条件成立,即a小于b
>>> a == b #两个等号比较值是否相等
False
>>> a != b #不相等
True
>>> a >= b #大于等于
False
>>> a <= b #小于等于
True
例:
a = ? #a的值未定,判断a是否大于等于b小于等于c
b = 5
c = 15
if a >= b:
if a <= c:
print("True")
#下面这种写法仅Python支持
if b <= a <= c:
print("True")
逻辑运算符
- 用于处理逻辑运算
运算符 | 例 | 说明 |
and | a and b | 只有两个条件都为真时,结果才为真,否则为假 |
or | a or b | 只要有一个条件为真时,结果就为真,否则为假 |
not | not a | 即条件a的相反条件 |
-
not
优先级最高,其次是and
,or
优先级最低 - 可以使用小括号来改变运算顺序
短路原则
例:
>>> not not True or False and not True
True
>>> True or True and False
True
- 对于
and
运算,如果第一个条件为假,那么此表达式就一定为假,第二个条件不会被计算 - 对于
or
运算,如果第一个条件为真,那么此表达式一定为真,第二个条件不会被计算
- 一元运算符:运算符只有一个操作数,如
not
- 二元运算符:运算符两边有两个操作数,如
+、-、*、/
等
while循环
- 条件为真时进入循环,条件为假时,不进入循环
# 第一种用法
while 条件:
print("any")
print("any")
# 第二种用法
while 条件:
...
else:
...
while...else
语句中,只有当while正常结束后,才会执行else后的语句
例1:输出100以内的偶数
num = 1
while num<= 100:
if num%2 == 0:
print(num)
num += 1
例2:猜年龄游戏,
age = 25
#方法一
flag = True
while flag:
user_inpu_age = int(input("Enter Age:"))
if user_inpu_age == age:
print("You Are Right!")
flag = False
elif user_inpu_age > age:
print("So Bigger!")
else:
print("So Smaller!")
print("Over!")
# 方法二
while True:
user_inpu_age = int(input("Enter Age:"))
if user_inpu_age == age:
print("You Are Right!")
break
elif user_inpu_age > age:
print("So Bigger!")
else:
print("So Smaller!")
print("Over!")
-
break
终止循环 -
continue
跳出此次循环
例3:while…else
正常结束循环,执行else之后的语句,非正常结束,如使用break结束循环则不执行else之后的语句
num = 0
while num < 10:
num += 1
if num == 5:
break #break换成continue则会输出else后的语句
print(num)
else:
print("This is end!") #是break终止了循环,所以不会执行else后的语句
练习:
1. 打印九九乘法表
方法一
print(num,end="")
会指定语句结束后跟定的字符,默认是换行
num1 = 1
while num1 <= 9:
num2 = 1
while num2 <= num1:
print(num2,end="*")
print(num1, end="=")
print(num1*num2,end="\t") #这里的\t表示制表符,可以对齐输出
num2 += 1
num1 += 1
print()
- 也有更简便的输出如下(可以替换上述代码中的6、7、8行):
print('%d*%d=%d'%(num2,num1,num1*num2) ,end="\t")
- 还有一种输出表达的形式:
pritn(str(num2)+"*"+str(num1)+"="+str(num1*num2),end="\t")
方法二
- 下面这种方法是想到用for循环来控制输出,仿照while循环写的,感觉也可以优化,但是目前还没想到怎么去改比较好。同样的输出语句也可以优化
num1 = 1
for num1 in range(1,10):
# print(num1,end="*")
num2 = 1
for num2 in range(1,num1+1):
print(num2,end="*")
print(num1, end="=")
print(num1*num2,end="\t")
print()
方法三
- 下面这种方法是????肉肉发给我的,能看懂,也能明白,但是目前还没有学到这几个引用。我觉得这种是最简单的,有更简的,欢迎留言
for i in range(1,10):
for j in range(i):
j += 1
print('%d*%d=%d'%(i,j,i*j),end="\t")
print()
-
range()
函数中含头不含尾,例如range(1,10)
取值为1-9 -
''%d'%i
即引用i
的值给前面的d
2. 用户输入长和宽,打印同等高宽的#号
high = int(input("Please input high:"))
wide = int(input("Please input wide:"))
a = 1
while a <= high: #这个while循环控制行
b = 1
while b <= wide: #这里的while循环控制列
print("#",end="") #不换行打印#
b += 1
print()
a += 1
3. 输出一个如下的直角三角形,用户指定输出行数;(思考:如何实现上下反转?)
*
**
***
****
Line = int(input("Please Input Line:"))
num = 1
while num <= Line: #控制输出行
num2 = 0
while num2 < num: #控制每行输出的*个数
print("*",end=" ") #控制输出列
num2 += 1
print() #换行
num += 1
- 实现上下翻转
Line = int(input("Please Input Line:"))
num = 1
while num <= Line:
num2 = Line
while num2 >= num:
print("*",end=" ")
num2 -= 1
print()
num += 1
参考源码
【GitHub参考源码】
以上内容均属原创,如有不详或错误,敬请指出。
本文作者: 坏坏