python零基础入门到入土2.0
python系列第二章
1. 三目运算符
不同语言的三目运算符的基本语法存在差异
通常一般语言如C语言的语言格式如下:
判断条件(返回布尔值) ? 为真时的结果 :为假时的结果
Python中的语言格式如下(注意中间无冒号):
为真时的结果 if 判断条件 else 为假时的结果
(a+b) if a<b else (b-a)
实例:
x = 2
x = x+1 if x%2==0 else x
print(x)
#>>>>3
2. 运算符优先级
其中上一行比下一行的优先级高,同一行表示优先级相同。在同一个表达式中,按照优先级从高到低依次计算,优先级相同则按照从左到右的顺序计算。同一类型的运算符则按结合性计算。
- 小括号具有最高优先级。
- 运算符优先级按类别排序:算术 > 位 > 身份 >成员 > 比较 > 逻辑 > 赋值。
算术最高,赋值被低。位非运算符是个另外,它高于乘除。 - 身份、成员、比较、赋值运算符,同类中优先级相同。
- 算术运算符中:乘方最高,乘除整除取余次之,加减最低。
- 位运算符中:位非 > 左右移 > 位与 > 位异或 > 位或
- 逻辑运算符中:非最高,与次之,或最低。
3. if 语句
3.1 简单的if语句
python:判断的变量是’ ’ 或 0 或 None 默认是False
python:如果变量有值’abc ’ , ’ kkkk’,'yueryu ',认为是True
if 表达式:
语句块
案例:
age = int(input('请输入年龄:'))
username = input('请输入用户名:')
if age>18 and username:
print('{}今年{}岁了!'.format(username,age))
print('game over!')
# 请输入年龄:19
#请输入用户名:van
#van今年19岁了!
#game over!
3.2 if-else 语句
if 条件1:
成立
if条件2:
成立
else:
不成立
else:
不成立
if 条件3:
成立
else:
不成立
print('*'*10,'欢迎来到消消乐','*'*10)
level = input('请输入你的级别(lev1,lev2):')
if level =='lev1':
print('免费玩 随便玩')
else:
print('已经进入付费级别,充值继续玩')
money = int(input('请充值(必须是100的倍数:)'))
if money%100 == 0 and money>0:
print('充值成功!充值金额是:',money)
else:
print('充值失败,充值金额必须是100的倍数!')
3.3 if-elif-else 语句
经常需要检查超过两个的情形,为此可使用Python提供的if-elif-else语句,中间的 elif 语句的数量不限,但 if 语句和 else 语句只能各有一个。其实elif 就是c语言的if else。
if条件1:
语句
elif条件2:
语句
elif 条件3:
语句
else:
语句
例子:
age = 13
if age <= 3:
print('The age under 3 is free.')
elif age <= 12:
print('The age between 3 and 12 is half price.')
else:
print('The age over 12 is full price.')
3.4 if 语句注意点
# 1. 区间判断
# score = float(input('请输入你的成绩:'))
# 在某些语言李判断区间不能连写
# 在有些语音李,需要使用逻辑运算符来连接 score >=0 and score < 60
# python 里可以使用连续的区间判断
# if 60 >score >= 0:
# print('你个垃圾')
# 2. 隐式类型转换
if 4: # if 后面需要的是一个bool类型的值。如果if后面不是布尔类型,则会自动转换为布尔类型
print('hello world')
# 3.三元表达式(对if...else语句的简写)
num1 = int(input('请输入一个数字:'))
num2 = int(input('请再输入一个数字:'))
# if num1 > num2:
# x = num1
# else:
# x = num2
x = num1 if num1 > num2 else num2
print('两个数李较大的数是:', x)
4. pass 关键字
Python pass 是空语句,是为了保持程序结构的完整性。
pass 不做任何事情,一般用做占位语句。
age = int(input('请输入您的年龄:'))
if age > 18:
pass #使用pass进行占位,没有意义,单纯为了保证语句的完整性,使程序不报错
print('hello')
5. 猜拳游戏案例
import random
# input是用来接收用户输入的数据
# 电脑应该随机的出一个数字[0,2]
# 需要使用到随机数模块random
# random.randint(a,b) ==>能够生成[a, b]的随机整数
computer = random.randint(0, 2)
print('电脑输出的是', computer)
# =等号在计算机编程里,赋值运算符,作用是将等号右边的值赋值给等号的左边
# 如果想要判断两个变量是否相等,不能使用赋值运算符,而要使用==比较运算符
player = int(input('请输入 (0)剪刀 (1)石头 (2)布:'))
print('用户输入的是', player)
if(player == 0 and computer == 2) or (player == 1 and computer == 0) or (player ==2 and computer == 1):
print('恭喜你赢了!')
elif player == computer:
print('平局')
else:
print('输了吧,八嘎!')
6. while 循环语句
循环就是让一件事情重复做多次
Python里的循环分为 while循环和for循环Python里不支持do. . .while循环
while循环的基本使用
while 判断条件:
条件成立时执行的代码
相当于c的x++ python里没有自增自减运算符
x = 0
while x < 10:
print('hello world')
x += 1
7. while 练习
求 1~100的所有整数之和
# 求 1~100的所有整数之和
i = 0
result = 0 # 定义一个变量用来保存所有的数字之和
while i < 100:
i += 1
result = result + i
print(result)
#5050
求 1~100的所有偶数之和
# 求 1~100的所有偶数之和
i = 0
result = 0 # 定义一个变量用来保存所有的数字之和
while i < 100:
i += 1
if i % 2 == 0: # 偶数才被加到result
result += i
print(result)
#2550
8. range 指定
range内置类用来生成指定区间的整数序列
目前接触的可迭代对象:字符串、列表、字典、元组、集合、range
对于 range() 函数,有几个注意点:
(1)它表示的是左闭右开区间;
(2)它接收的参数必须是整数,可以是负数,但不能是浮点数等其它类型;(3)它是不可变的序列类型,可以进行判断元素、查找元素、切片等操作,但不能修改元素;
(4)它是可迭代对象,却不是迭代器。
range()的三种创建方式:
- 第一种:只有一个参数(小括号中只给了一个数)即range(stop)
例如:range(10)指的是默认从0开始,步长为1,不包括10;
- 第二种:range(start,stop) (给了两个参数,即小括号中给了两个数)
r=range(1,10) print(list®) 运行结果为:
[1,2,3,4,5,6,7,8,9]
- 第三种:range(start,stop,step):创建一个在[start,stop)之间,步长为step;
例如:r=range(1,10,2) print(list®) 运行结果为:
[1,3,5,7,9]
range()函数中可以使用in 和not in 判断整数序列中是否存在(不存在)指定的整数,例如:
在上面第三种的基础上 print(10 in r) 运行结果为False; print(9 in r)运行结果为True ;print(10 not in r)运行结果为True;print(9 not in r)的运行结果为False;
range类型的优点:不管range对象表示的整数序列有多长,所有range对象占用的内存空间都是相同的,因为仅仅需要储存start,stop,step,只有当用到range对象时,才会去计算序列中的相关元素
9. for…in 循环的使用
python里的for循环指的是For. . .in循环。和c语言里的for不一样
for语句格式:
for ele in iterable
注意: in的后面必须要是一个可迭代对象!!!
z = 0 # 定义一个变量,用来保存所有的数字之和
for j in range(1, 101):
z += j
print(z)
# 5050
10. break 和continue 的使用
break和continue在Python里只能用在循环语句里
break:用来结束整个循环
continue:用来结束本轮循环,开启下一轮循环
11. 嵌套打印矩形案例
外循环用来控制行数;内循环用来控制每一个行的列数
j = 0
while j < 10:
j += 1
# 本段代码是打印五个星星并且换行
i = 0
while i < 8:
i += 1
print("*", end='') # 打印星星,不换行
print() # 用来换行
12. 嵌套打印三角形案例
# j 外循环用来控制行数;
# i 内循环用来控制每一个行的列数
j = 0
while j < 8:
j += 1 # j = 1;j=2
i = 0
while i < j:
i += 1
print("*", end='') # 打印星星,不换行
print() # 用来换行
13. 打印九九乘法表案例
# sep=""用于符号附件紧贴
# end='\t' 制表符用于对齐
# 外循环用来控制行数;
# 内循环用来控制每一个行的列数
j = 0
while j < 9:
j += 1 # j = 3
i = 0 # i = 0
while i < j:
i += 1 # i = 2
print(i, '*', j, '=', (i*j), sep="", end='\t')
# sep=""用于符号附件紧贴
# end='\t' 制表符用于对齐
print() # 用来换行
or
# j = 0
# while j < 9:
# j += 1
# i = 0
# while i < j:
# i += 1
# print(j, '*', i, '=', i * j, end='\t', sep='')
# print()
for i in range(1,10):
for j in range(1, i+1):
print(j, '*', i, '=', i * j, end='\t', sep='')
print()
14. 进阶练习
- 统计100以内个位数是2并且能够被3整除的数的个数
for i in range(1, 101):
if i % 10 == 2 and i % 3 == 0:
print(i)
- 输入任意一个正整数,求它是几位数
num = int(input('请输入一个整数:'))
count = 0
while True:
count += 1
num //= 10
if num == 0:
break
print('你输入的数字是', count, '位数')
- 打印100-999内所有的水仙花数
for i in range(100, 1000):
# 比如456%10,商是45,拿到余数是6
single = i % 10
# 比如456整除以10,拿到了商是45,再%10,拿到十位数5
tens = i // 10 % 10
hundreds = i //100
if single **3 + tens**3 +hundreds **3 == i:
print(i)
15. eval 转化成整形
eval() 函数用来执行一个字符串表达式,并返回表达式的值。
语法
eval(expression[, globals[, locals]])
参数
- expression – 表达式。
- globals – 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。
- locals – 变量作用域,局部命名空间,如果被提供,可以是任何映射对象
没有eval()函数,在input输入的是字符串,无法和数字类型进行计算
a = input('请输入你的级别a的值:')
b = 10
c= a + b
print(a, '+', b, '=', c)
eval()函数主要用于将字符串转化成整形,便可以用于计算
a = eval(input('请输入你的级别a的值:'))
b = 10
c= a + b
print(a, '+', b, '=', c)
16. for…else 使用
for…else语句:当循环里的break没有被执行的时候,就会执行eLse
案例:
# 素数也叫质数,除了1和它本身以外,不能再被其他任何数整除
# 求100到200的质数(1既不是质数﹐也不是合教;2是质致)
for i in range(101, 201):
for j in range(2, int(i ** 0.5) + 1):
# +1的目的是要遍历到i后面的数
if i % j == 0: # i 除以某一个数字,除尽了,i是合数
# print(i, '是合数')
break # break放在内循环里,用来结束内循环
else:
print(i, '是质数')
17. 使用假设成立法求质数
# 求2到100的质数(1既不是质数﹐也不是合教;2是质致)
for i in range(2, 101):
flag = True
for j in range(2, int(i ** 0.5) + 1):
# +1的目的是要遍历到i后面的数
if i % j == 0:
# i 除以某一个数字,除尽了,说明i是合数
flag = False
break # break放在内循环里,用来结束内循环
if flag:
print(i, '是质数')
18. 使用计数方法求质数
for i in range(2, 101): # 拿12举例
count = 0 # 假设这个数能被0个数字整除
for j in range(2, int(i ** 0.5) + 1):# 2 3 4 6
# +1的目的是要遍历到i后面的数
if i % j == 0:
# i 除以某一个数字,除尽了,说明i是合数
count +=1
if count == 0:
print(i, '是一个质数')
else:
print(i, '是一个合数,它能被', count, '个数字整除')
…
19. 求斐波那契数列
实现原理:
第3个交换1
第4个交换2
第5个交换3
第n个交换n-2
求斐波那契数列中第n个数的值,n是正整数
案例:
n = int(input('请输入您要第几个斐波那契数:'))
num1 = 1
num2 = 2
for i in range(0, n - 2):
a = num1
num1 = num2
num2 = a + num2
print(num2)