欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python3基础 自学控制结构

程序员文章站 2023-11-24 15:10:28
控制结构布尔类型比较运算符if 语句else 语句逻辑运算符逻辑运算符or 运算符not 运算符运算符优先级while 循环while循环break 语句continue 语句列表列表列表操作列表操作列表函数范围(Range)for 循环循环创建一个计算器布尔类型Python 中的另一种类型是布尔类型。有两个布尔值:True 和 False。可以通过比较值的方法来创建它们,例如通过使用相等的运算符 ==。>>> my_boolean = True>>> my_...

布尔类型


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。

Python3基础 自学控制结构

逻辑运算符


逻辑运算符

逻辑运算符用于为依赖于多个条件的 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运算符。

Python3基础 自学控制结构

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。

Python3基础 自学控制结构

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

相关标签: Python基础