0
点赞
收藏
分享

微信扫一扫

自学Python Day_04



文章目录


  • ​​算术运算符​​
  • ​​优先级​​
  • ​​赋值运算符​​
  • ​​比较运算符​​
  • ​​逻辑运算符​​
  • ​​短路原则​​
  • ​​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参考源码】​​

以上内容均属原创,如有不详或错误,敬请指出。


本文作者: ​​ 坏坏 ​​



举报

相关推荐

PHP学习 Day_04

python学习day04_列表

day04

Day04

Day 1 java自学

python与上位机开发day04

0 条评论