当前位置: 移动技术网 > IT编程>脚本编程>Python > 荐 Python3基础 自学笔记 控制结构

荐 Python3基础 自学笔记 控制结构

2020年07月20日  | 移动技术网IT编程  | 我要评论

布尔类型


Python 中的另一种类型是布尔类型。有两个布尔值:TrueFalse

可以通过比较值的方法来创建它们,例如通过使用相等的运算符 ==

>>> my_boolean = True
>>> my_boolean
True

>>> 2 == 3
False
>>> "hello Edong" == "hello Edong"
True

注意:

  • 不要把赋值(一个等号)与比较(两个等号)混淆。
  • Python是区分大小写的,所以True与true是不同的。

比较运算符


不等于运算符 != 两边被比较的项不相等的情况下则值为 True,如果相等,则值为 False。

>>> 1 != 1
False
>>> "eleven" != "seven"
True
>>> 2 != 10
True

Python 使用 ><运算符来判断一个数字(浮点数或整数)是大于还是小于另一个数。

>>> 8 > 5
True
>>> 15 < 15
False

Python 使用 >=<= 运算符来判断一个数字(浮点数或整数)是大于等于还是小于等于另一个数字。

在比较相等的数字时它们返回 True。

>>> 7 <= 8
True
>>> 9 >= 9.0
True

注: 也可以使用比较运算符来按字母顺序比较字符串。

>>> "ab" >= "bb"
False

比较运算符:== != > < >= <=

打印布尔值 打印结果 True False

设置变量 string和int 不能进行比较 就算是 1 和 ‘1’ 用 ‘=’ 比较的时候返回的是False 如果是‘!= ’那么就是True

if 语句


if 语句的表达式结果为True, 则执行if代码块中的代码。

语法如下:

if 表达式:
   一些代码

Python 使用缩进(一行的开始处的空白)来分隔代码块。
而其他语言,比如C语言使用大括号来实现分隔代码块,但是在 Python 中必须使用缩进

创建一个demo.py, 并写入代码:

if 10 > 5:
   print("10 > 5")

print("program end")

结果

10 > 5
program end

表达式 10 > 5。于是执行缩进的代码块,所以会输出 “10 > 5”。然后,运行if语句后的代码,并显示“program end”。

注1:

if 语句中表达式末尾使用冒号, 不要忘记这个冒号!

注2:

由于程序包含多行代码,因此应该将其作为单独的文件创建并运行。

之后的多行代码演示, 均表示创建一个文件, 写入代码, 然后运行的结果。

if 语句允许嵌套使用,可用于执行更复杂的判断。

内部 if 语句是外部语句的代码块部分。

这是查看是否满足多个条件的一种方法。

例如:

num = 15
if num > 5:
   print("Bigger than 5")
   if num <=47:
      print("Between 5 and 47")

结果

Bigger than 5
Between 5 and 47

if条件:单分支、双分支、多分支结构

else 语句


else语句跟随在if语句之后,当if语句表达式计算的结果为False时执行else的代码块。

和if语句一样,块内的代码应该缩进。

x = 4
if x == 5:
   print("Yes")
else:
   print("No")

结果

No   

可以嵌套使用 if/else 语句,进行更加复杂的判断。

num = 7
if num == 5:
  print("Number is 5")
else: 
  if num == 11:
    print("Number is 11")
  else:
    if num == 7:
      print("Number is 7")
    else: 
      print("Number isn't 5, 11 or 7")

结果

Number is 7

elif(else if 的简写)语句是 if 和 else 语句时使用的快捷方式。

一系列 if elif 语句可以有一个最终的 else 块,如果 if 或者 elif 条件均不成立时会调用 else 代码块。

例如:

num = 7
if num == 5:
   print("Number is 5")
elif num == 11:
   print("Number is 11")
elif num == 7:
   print("Number is 7")
else:
   print("Number isn't 5, 11 or 7")

结果

Number is 7

注: 在其他编程语言中,elif 语句有不同的名称,包括 else if,elseif 或 elsif。

Python 中只能使用 elif,而不能识别 else if。

在这里插入图片描述

逻辑运算符


逻辑运算符

逻辑运算符用于为依赖于多个条件的 if 语句创建更复杂的条件。

Python 的布尔运算符分别是 and, or, 和 not

and 运算符有两个参数,只有但两个参数均为 True 时,结果为 True,否则结果为 False。

print(1 == 1 and 2 == 2)

print(1 == 1 and 2 == 3)

print(1 != 1 and 2 == 2)

print(2 < 1 and 3 >  6)

结果

True
False
False
False

Python 的布尔运算符使用单词,而大多数其他语言使用符号(如 &&,||)和!

or 运算符

or 运算符也有两个参数。如果其参数中的任何一个(或两者)都为 True,则结果为 True; 如果两个参数均为 False,则结果为 False

print(1 == 1 or 2 == 2)

print(1 == 1 or 2 == 3)

print(1 != 1 or 2 == 2)

print(2 < 1 or 3 >  6)

结果

True
True
True
False

not 运算符

not 运算符只有一个参数,运算结果是将求反。

如果提供的参数为 True 求得结果为 False,如果参数为 False 求得结果为 True。

print(not 1 == 1)
print(not 1 > 7)

结果

False
True

你可以使用逻辑运算符在 if 语句中链接多个条件语句。

  • 逻辑运算符:and or not
  • 运算符的优先级:不懂就加小括号
  • 三元运算符:a = x if 条件 else y

运算符优先级

运算符优先级是编程中一个非常重要的概念。
它是运算次序的数学思想的延伸(比如先算乘除后算加减)不过它也包含其他运算符,比如逻辑运算符,位运算符,赋值运算符等。
下面的代码中 == 具有比 or 更高的优先级:

print(False == False or True)
print(False == (False or True))
print((False == False) or True)

结果

True
False
True

提示: Python 的操作顺序与正常数学的顺序相同, 先是括号,然后是取幂,然后是乘/除,然后是加/减。

下表列出了从最高优先级到最低优先级的所有Python运算符。

在这里插入图片描述

while 循环


while循环


如果 if 语句的计算结果为 True,则 if 语句的代码块会运行一次,如果计算结果为 False,则不会运行。

while 语句是相似的,while 只要条件为True,while内部的代码块就会重复执行。

当条件为 False 时就停止 while 循环,程序继续往后执行。

例如:

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

print("Finished!")

结果

1
2
3
4
5
Finished!

while 循环体中的代码被重复执行。这被称为迭代

无限循环是一种特殊的 while 循环;它永远不会停止运行。它的条件总是 True 。

一个无限循环的例子:

while 1==1:
  print("In the loop") 

这个程序将无限期地打印 “In the loop”。

您可以通过使用 Ctrl-C 快捷键或关闭程序来停止程序的执行。

break 语句


要提前结束 while 循环,可以使用 break 语句。

在循环中遇到时,break 语句会立即结束循环。

i = 0
while 1==1:
  print(i)
  i = i + 1
  if i >= 5:
    print("Breaking")
    break

print("Finished")

结果

0
1
2
3
4
Breaking
Finished

在循环外部使用 break 语句会导致错误。

continue 语句


可以在循环内使用的另一个语句是 continue 语句。

与 break 不同的是,continue 语句是提前结束本次循环,进入下一次循环。

i = 0
while True:
   i = i +1
   if i == 2:
      print("Skipping 2")
      continue
   if i == 5:
      print("Breaking")
      break
   print(i)

print("Finished")

结果

1
Skipping 2
3
4
Breaking
Finished

简而言之:continue 语句停止当前的迭代,并继续下一个。

在循环外部使用 continue 语句会导致错误。

  • while 循环语法:重复使用
  • break 关键字使用:结束当前的循环
  • Continue 关键字使用:跳过本次循环,继续下一次循环

列表


列表


列表是 Python 中的另一种类型的对象。它们被用来存储索引的元素列表。

方括号中用逗号分隔元素来创建一个列表。

列表中的某个元素可以通过使用方括号中的索引来访问。

例如:

words = ["Hello", "world", "!"]
print(words[0])
print(words[1])
print(words[2])

结果

Hello
world
!

注意:列表的索引是从0开始的,而不是从1开始的

一个空的列表用一对空的方括号创建。

empty_list = []
print(empty_list)

结果

[]

大多数情况下,列表中的最后一项不会带逗号。然而,在最后一项放置一个逗号是完全有效的,在某些情况下是鼓励的。

通常情况下,列表包含单种数据类型的元素,但也可以包含几个不同的类型。

列表也可以嵌套在其他列表中。

number = 3
things = ["string", 0, [1, 2, number], 4.56]
print(things[1])
print(things[2])
print(things[2][2])

结果

0
[1, 2, 3]
3

引用超出列表值的索引范围将导致 IndexError 错误。

一些类型,比如字符串,可以像列表一样编入索引。索引字符串的行为就像你索引包含字符串中每个字符的列表一样。

str = "Hello world!"
print(str[6])

结果

w

列表操作


列表操作

列表中某个索引处的元素值可以被重新分配。

例如:

nums = [7, 7, 7, 7, 7]
nums[2] = 5
print(nums)

结果

[7, 7, 5, 7, 7]

列表可以像字符串一样添加和相乘。

例如:

nums = [1, 2, 3]
print(nums + [4, 5, 6])
print(nums * 3)

结果

[1, 2, 3, 4, 5, 6]
[1, 2, 3, 1, 2, 3, 1, 2, 3]

列表和字符串在很多方面是相似的 - 字符串可以被认为是不能改变的字符列表。

要查找某个值是否在列表中,可以使用 in 运算符。如果值在列表中出现一次或多次,则返回 True,否则返回 False。

words = ["spam", "egg", "spam", "sausage"]
print("spam" in words)
print("egg" in words)
print("tomato" in words)

结果

True
True
False

in 运算符也用于确定一个字符串是否是另一个字符串的子字符串。

要某个值是否不在列表中,可以使用 not 操作符:

nums = [1, 2, 3]
print(not 4 in nums)
print(4 not in nums)
print(not 3 in nums)
print(3 not in nums)

结果

True
True
False
False

列表函数

可以使用 append 方法将一个元素添加到现有列表的末尾。

nums = [1, 2, 3]
nums.append(4)
print(nums)

结果

[1, 2, 3, 4]

append 是列表类的一个方法。

要获取列表中的项目数量,可以使用 len 函数。

nums = [1, 3, 5, 2, 4]
print(len(nums))

结果

5

与 append 方法不同,len 是一个正常的函数,而不是一个方法。这意味着它写在被调用的列表之前。

insert 方法与 append 相似,不同之处在于它允许您在列表中的任何位置插入一个新元素,而不仅仅是在最后。

words = ["W3Cschool", "Good"]
index = 1
words.insert(index, "is")
print(words)

结果

['W3Cschool', 'is', 'Good']

index 方法找到列表项的第一个匹配项并返回它的索引。

如果该项目不在列表中,则会引发 ValueError。

letters = ['p', 'q', 'r', 's', 'p', 'u']
print(letters.index('r'))
print(letters.index('p'))
print(letters.index('z'))

结果 

2
0
ValueError: 'z' is not in list

列表还有一些很有用的功能和方法。
max(list): 返回具有最大值的列表元素
min(list): 返回具有最小值的列表元素
list.count(obj): 返回一个元素在一个列表中出现的次数
list.remove(obj):从列表中删除一个元素
list.reverse():颠倒列表中的元素的顺序

  • 列表的定义及创建:语法
  • 列表的嵌套
  • 列表常见的异常:列表下标越界
  • 列表操作:赋值、相加相乘、innot in的使用
  • 列表函数:
    • append()
    • len()
    • insert()
    • index()
    • max()
    • min()
    • count()
    • remove()
    • reverse()

范围(Range)


使用范围函数创建一个顺序的数字列表。

numbers = list(range(10))
print(numbers)

结果

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Range 本身会创建一个 Range 对象,所以调用 list 函数将其转换为列表。

如果使用一个参数调用 Range,则会生成0到该参数值的对象。

如果使用两个参数调用范围,则会从第一个值到第二个值的对象。

例如:

numbers = list(range(3, 8))
print(numbers)

print(range(20) == range(0, 20))

结果

[3, 4, 5, 6, 7]

True

Range 可以有第三个参数,第三个参数决定了产生的序列的间隔。

numbers = list(range(5, 20, 2))
print(numbers)

结果

[5, 7, 9, 11, 13, 15, 17, 19]

注意: 第三个参数必须是一个整数, 否则会报TypeError。

在这里插入图片描述

for 循环


循环


有时,您需要在列表中的每个元素上执行代码。这被称为迭代,它可以用一个 while 循环和一个计数器变量来完成。

例如:

words = ["hello", "world", "spam", "eggs"]
counter = 0
max_index = len(words) - 1

while counter <= max_index:
   word = words[counter]
   print(word + "!")
   counter = counter + 1 

结果

hello!
world!
spam!
eggs!

上面的例子中我们迭代了列表中的所有元素,并使用索引访问元素。

使用 while 循环遍历列表需要相当多的代码,所以 Python 提供了 for 循环作为完成相同事情的快捷方式。

前一个例子中的代码可以用 for 循环来编写,如下所示:

words = ["hello", "world", "spam", "eggs"]
for word in words:
  print(word + "!")

结果

hello!
world!
spam!
eggs!

Python中的 for 循环就像其他语言的 foreach 循环一样。

for 循环通常用于重复某些代码一定次数。这是通过将循环与范围 range 对象结合来完成的。

for i in range(5):
  print("hello!")

结果

hello!
hello!
hello!
hello!
hello!

在 for 循环中使用 range 对象时不需要调用 list,因为它没有被索引,所以不需要列表。

创建一个计算器

# -*- coding: UTF-8 -*-
while True:
    print("选项:")
    print("输入 'add' 计算两个数相加")
    print("输入 'subtract' 计算两个数相减")
    print("输入 'multiply' 计算两个数相乘")
    print("输入 'divide' 计算两个数相除")
    print("输入 'quit' 退出程序")
    user_input = input(": ")

    if user_input == "quit":
        break
    elif user_input == "add":
        print('要执行加法操作')
    elif user_input == "subtract":
        print('要执行减法操作')
    elif user_input == "multiply":
        print('要执行乘法操作')
    elif user_input == "divide":
        print('要执行除法操作')
    else:
        print("未知的输入,请根据提示输入!")

上面的代码是我们程序的起点。它接受用户输入,并将其与 if/elif 语句中的选项进行比较。
当用户输入 “quit” 时使用 break 语句跳出 while 循环结束程序。

接下来是获取用户要处理的数字。

下面的代码显示了这个计算器的相加部分。

elif user_input == "add":
  num1 = float(input("输入一个数字: "))
  num2 = float(input("输入另一个数字: "))

当用户输入 “add” 时,程序会提示输入两个数字,并存储在相应的变量中。

实际上,如果用户在提示输入数字时输入非数字输入,则此代码会崩溃。我们将在后面的模块中查看这样的问题。

程序的最后部分处理用户输入并显示它。

以下是加法部分的代码。

elif user_input == "add":
  num1 = float(input("输入一个数字: "))
  num2 = float(input("输入另一个数字: "))
  result = str(num1 + num2)
  print("结果是 " + result)

用户输入的是"add" 时,提示用户输入数字,然后计算两个数的和并打印输出。

完整的代码是:

# -*- coding: UTF-8 -*-
while True:
   print("选项:")
   print("输入 'add' 计算两个数相加")
   print("输入 'subtract' 计算两个数相减")
   print("输入 'multiply' 计算两个数相乘")
   print("输入 'divide' 计算两个数相除")
   print("输入 'quit' 退出程序")
   user_input = input(": ")

   if user_input == "quit":
      break
   elif user_input == "add":
      num1 = float(input("输入一个数字: "))
      num2 = float(input("输入另一个数字: "))
      result = str(num1 + num2)
      print("结果是 " + result)
   elif user_input == "subtract":
      num1 = float(input("输入一个数字: "))
      num2 = float(input("输入另一个数字: "))
      result = str(num1 - num2)
      print("结果是 " + result)
   elif user_input == "multiply":
      num1 = float(input("输入一个数字: "))
      num2 = float(input("输入另一个数字: "))
      result = str(num1 * num2)
      print("结果是 " + result)
   elif user_input == "divide":
      num1 = float(input("输入一个数字: "))
      num2 = float(input("输入另一个数字: "))
      result = str(num1 / num2)
      print("结果是 " + result)
   else:
      print("未知的输入,请根据提示输入!")

本文地址:https://blog.csdn.net/weixin_44076570/article/details/107437464

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网