小黑子的python入门到入土:第二章

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. 进阶练习

  1. 统计100以内个位数是2并且能够被3整除的数的个数
for i in range(1, 101):
    if i % 10 == 2 and i % 3 == 0:
        print(i)

在这里插入图片描述

  1. 输入任意一个正整数,求它是几位数
num = int(input('请输入一个整数:'))
count = 0
while True:
    count += 1
    num //= 10
    if num == 0:
        break
print('你输入的数字是', count, '位数')

在这里插入图片描述

  1. 打印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)

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值