Python学习(三)基础入门(数据类型、变量、条件判断、模式匹配、循环)

目录

    • 一、第一个 Python 程序
      • 1.1 命令行模式、Python 交互模式
      • 1.2 Python的执行方式
      • 1.3 SyntaxError 语法错误
      • 1.4 输入和输出
    • 二、Python 基础
      • 2.1 Python 语法
      • 2.2 数据类型
        • 1)Number 数字
        • 2)String 字符串
        • 3)List 列表
        • 4)Tuple 元组
        • 5)Set 集合
        • 6)Dict 字典
        • 7)空值
      • 2.3 变量、常量
        • 1)变量
        • 2)常量
      • 2.4 条件判断
        • 1)条件判断语法
        • 2)举例说明
        • 3)input() 条件判断报错
      • 2.5 模式匹配、复杂匹配
        • 1)模式匹配
        • 2)复杂匹配
        • 3)匹配列表
      • 2.6 循环
        • 1)for 循环
        • 2)while 循环

一、第一个 Python 程序

在正式编写第一个 Python 程序前,我们先复习一下什么是命令行模式和 Python 交互模式。

1.1 命令行模式、Python 交互模式

命令行模式:

在 Windows 开始菜单选择 “命令提示符”,就进入到命令行模式,它的提示符类似 C:\>

Python 交互模式:

在命令行模式下敲命令 python,就看到类似如下的一堆文本输出,然后就进入到 Python 交互模式,它的提示符是 >>>

在 Python 交互模式下输入 exit() 并回车,就退出了 Python 交互模式,并回到命令行模式:

也可以直接通过开始菜单选择 Python 3.10 (64-bit) 菜单选项,直接进入 Python 交互模式。

了解了如何启动和推出 Python 的交互模式,我们就可以正式开始编写 Python 代码了。

1.2 Python的执行方式

  • 数学计算:

在交互模式的提示符 >>> 下,直接输入代码,按回车,就可以立刻得到代码执行结果。现在,试试输入 100+200,回车之后就可以立马得到计算结果:

>>> 100+200
300
  • 打印指定文字:

如果要让 Python 打印出指定的文字,可以用 print() 函数,然后把希望打印的文字用单引号或者双引号括起来,单不能混用单引号和双引号:

>>> print('hello, world')
hello, world
  • 执行 .py 文件:

在命令行模式下,可以执行 python 进入 Python 交互环境,也可以执行 python hello.py 运行一个 .py 文件。

此外,在命令行模式运行 .py 文件和 Python 交互环境下直接运行 Python 代码有所不同。Python 交互环境会把每一行 Python 代码的结果自动打印出来,但是,直接运行 Python 代码却不会默认打印。

比如,写入一个 calc.py 的文件,内容如下:

100+200+300

然后再命令行模式下执行:

C:\work>python calc.py

发现什么输出都没有,这是正常的。想要输出结果,必须用 print() 打印出来,如下所示:

print(100+200+300)

再执行,就可以看到结果:

C:\work>python calc.py
600

最后,Python交互模式的代码时输入一行,执行一行,二命令行模式下直接运行 .py 文件时一次性执行该文件内的所有代码。

可见,Python 交互模式 主要是为了调试 Python 代码用的,也便于初学者学习,它 不是正式运行 Python 代码的环境

1.3 SyntaxError 语法错误

如果遇到了 SyntaxError,表示输入的 Python 代码有语法错误,最常见的一种语法错误是使用了中文括号

>>> print'hello')File "<stdin>", line 1print'hello'^
SyntaxError: invalid character '(' (U+FF08)

或者使用了中文引号

>>> print(“hello”)File "<stdin>", line 1print(“hello”)^
SyntaxError: invalid character '“' (U+201C)

1.4 输入和输出

  • 输入:

如果要让用户从电脑输入一些字符串怎么办?Python 提供了一个 input() 方法。可以让用户输入字符串,并存放到一个变量里。

比如输入用户的名字:

>>> name = input();
Michael

当你输入 name=input() 并按下回车后,Python 交互式命令行就在等待你的输入了。这时,你可以输入任意字符,然后按回车后挖成输入。

输入完成后,不会有任何提示,Python 交互式命令又回到 >>> 状态了。我们刚才输入的内容存放到 name 变量里了。可以直接输入 name 查看变量内容,如下所示:

>>> name
'Michael'
  • 输出:

print() 在括号中加上字符串,就可以像屏幕上输出指定的文字。比如输出 'hello, world',用代码实现如下:

>>> print('hello, world')
hello, world

print() 函数也可以接受多个字符串,用英文逗号 , 隔开,就可以连成一串输出:

>>> print('The quick brown fox', 'jumps over', 'the lazy dog')
The quick brown fox jumps over the lazy dog

print() 函数会依次打印每个字符串,遇到英文逗号 , 会输出一个空格。因此,输出的字符串是这样拼起来的:

print() 也可以打印整数,或者计算结果:

>>> print(300)
300
>>> print(100 + 200)
300

因此,我们可以把计算 100 + 200 的结果打印得更漂亮一些:

>>> print('100 + 200 =', 100 + 200)
100 + 200 = 300

有了输入和输出,我们就可以把上次打印 'hello, world' 的程序改成有意义一些:

name = input('please enter your name: ')
print('hello', name)

再次运行这个程序,你会发现,程序一运行,会首先打印出 please enter your name: 。这样用户就可以根据提示,输入姓名后,得到 hello, xxx 的输出:

每次运行该程序,根据用户输入的不通,输出结果也会不同。


二、Python 基础

2.1 Python 语法

Python 的语法比较简单,采用缩进方式,写出来的代码就像下面的样子:

# print absolute value of an interger:
a = 1000
if a >= 0:print(a)
else:print(-a)
  • 注释:

# 开头的语句是注释,注释的作用是方便代码阅读,解释器会忽略掉注释。

  • 缩进:

缩进有利有弊。

好处1:强迫你写出格式化的代码,应该始终坚持使用 4个空格作为缩进

好处2:强迫你写出缩进较少的代码,你会倾向于把一段很长的代码拆分成若干函数,从而得到缩进较少的代码。

坏处:“复制-粘贴”功能失效了。IDE 很难像格式化 Java 代码那样格式化 Python 代码,当你重构代码时,粘贴过去的代码必须重新检查缩进是否正常。

  • 大小写敏感:

请务必注意,Python 程序是大小写敏感的,如果写错了大小写,程序会报错。

2.2 数据类型

Python3 中有 六个标准的数据类型:Number(数字)、String(字符串)、List(列表)、Tuple(元组)、Sets(集合)、Dictionary(字典)。

Python3 的六个标准数据类型中:

  • 不可变数据(3个): Number(数字)、String(字符串)、Tuple(元组);
  • 可变数据(3个): List(列表)、Dictionary(字典)、Set(集合)。
1)Number 数字

Python3 支持 int、float、bool、complex(复数)。

数字类型是顾名思义用来存储数值的,需要记住的是,有些和 Java 的字符串差不多的是,如果改变了数据类型的值,将重新分配内存空间。

Python 支持三种不同的数值类型:

  • 整型(Int):通常被称为是整型或整数,是正或负整数,不带小数点。Python3 整型是没有大小限制的,可以当作 Long 类型使用,所以 Python3 没有 Python2 的 Long 类型。
  • 浮点型(float):浮点型由整数部分与小数部分组成,浮点型也可以使用科学计数法表示(2.5e2 = 2.5 × 10的2次方 = 250)。
  • 复数(complex):复数由实数部分和虚数部分构成,可以用 a + bj,或者 complex(a, b) 表示,复数的实部 a 和虚部 b 都是浮点型。

示例:创建一个 number.py,内容如下:

counter = 100    # 整型变量
miles   = 1000.0 # 浮点型变量
name    = "test" # 字符串print(counter)
print(miles)
print(name)

执行结果:

数字类型转换:

  • int(x):将 x 转换为一个整数。
  • float(x):将 x 转换到一个浮点数。
  • complex(x):将 x 转换到一个复数,实数部分为 x,虚数部分为 0。
  • complex(x, y):将 x 和 y 转换到一个复数,实数部分为 x,叙述部分为 y。x 和 y 是数字表达式。

和别的语言一样,数字类型支持各种常见的运算,不过 Python 的运算比别的大多数常见语言都更加丰富。此外,还有大量丰富的方法,提供更高效的开发。

数值运算示例:

  • +:加法,例:5 + 4 = 9
  • -:减法,例:4.3 - 2 = 2.3
  • *:乘法,例:3 * 7 = 21
  • /:除法,得到一个浮点数,例:2 / 4 = 0.5
  • //:除法,得到一个整数,例:2 // 4 = 0
  • %:取余,例:17 % 3 = 2
  • **:乘方,例:2 ** 10 = 1024
2)String 字符串

创建字符串可以使用单引号 '、双引号 "、三单引号 ''' 和三双引号 """,其中三引号可以多行定义字符串,Python 不支持单字符类型,单字符在 Python 也是作为一个字符串使用。

我们定义一个 s='python' 语句,它在计算机中的执行顺序是:

  1. 先在内存中创建一个字符串 “python”;
  2. 在程序栈寄存器中创建一个变量 s;
  3. 最后把 “python” 字符串的地址赋值给 s。

字符串的常见操作:

  • 切片(slice):语法为 [ 起始 : 结束 : 步长],选取的区间为 “左闭右开”。“起始” 为空,则默认从头开始;“结束” 为空,则默认一直到结尾;步长为空,则默认为1。
>>> s = '学习Python'
>>> s[0], s[-1], s[3:], s[::-1]
('学', 'n', 'ython', 'nohtyP习学')
  • 替换(可以使用正则表达式)
>>> s = '学习Python'
>>> s.replace('Python', 'Java')
'学习Java'
  • 查找

    find():返回子字符串第一次出现的索引,找不到返回 -1

    index():返回子字符串第一次出现的索引,找不到抛出 ValueError

    rfind():返回子字符串最后一次出现的索引,找不到返回 -1

    rindex():返回子字符串最后一次出现的索引,找不到抛出 ValueError

>>> s = '学习Python'
>>> s.find('P') # 返回第一次出现的子串的下标(从0开始)
2
>>> s.find('h', 2) # 设定从下标2开始查找
5
>>> s.find('2333') # 查找不到会返回-1
-1
>>> s.index('y') # 返回第一次出现的子串的下标
3
>>> s.index('a') # 不同于find(),查找不到会抛出异常
Traceback (most recent call last):File "<stdin>", line 1, in <module>
ValueError: substring not found
  • 转大小写

    upper():将所有字母转大写。

    lower():将所有字母转小写。

    swapcase():将所有字母交换大小写。

    capitalize():将第一个字母转换为大写,其余字母转换为小写。

    istitle():检查字符串是否为标题格式(首个单词的首字母大写,其余小写)。

    isupper():检查是否所有字母大写。

    islower():检查是否所有字母小写。

>>> s = '学习Python'
>>> s.upper() # 转大写
'学习PYTHON'
>>> s.swapcase() # 交换大小写
'学习pYTHON'
>>> s.istitle() # 是否首字母大写,其余小写
True
>>> s.islower() # 是否小写
False
  • 去空格

    strip([chars]):去除字符串两端的指定字符(默认为空白字符)。

    lstrip([chars]):去除字符串左侧的指定字符(默认为空白字符)。

    rstrip([chars]):出去字符串右侧的指定字符(默认为空白字符)。

>>> s = ' 学习Python '
>>> s.strip()
'学习Python'
  • 格式化:有以下三种方式可以进行格式化:(推荐使用 format() 格式化字符串

方式一:使用 % 格式化

常见的占位符如下。

占位符替换内容
%d整数
%f浮点数
%s字符串
%x十六进制整数

有几个 %? 占位符,后面就跟几个变量或者值,顺序要对应好。如果只有一个 %?,括号可以省略。

>>> s1 = '%s %s' % ('Windriver', 21)
>>> s1
'Windriver 21'

其中格式化整数和浮点数还可以指定是否补0和整数与小数的位数:

# 是否补0、保留位数
>>> '%2d-%02d' % (3, 1)
' 3-01'
>>> '%.2f' % 3.1415926
'3.14'

如果你不太确定应该用什么,%s 永远起作用,它会把任何数据类型转换为字符串:

>>> 'Age: %s. Gender: %s' %

方式二:使用 format() 格式化

方式三:使用 f-string 格式化

>>> s2 = '{}, {}'.format('Windriver', 21)
>>> s2
'Windriver, 21'
>>> s3 = '{0}, {1}, {0}'.format('Windriver', 21)
>>> s3
'Windriver, 21, Windriver'
>>> s4 = '{name}: {age}'.format(name='Windriver', age=21)
>>> s4
'Windriver: 21'
  • 连接与分割:使用 + 连接字符串,每次操作会重新计算、开辟、释放内存,效率很低,推荐使用 join()。
>>> l = ['2024', '12', '09', '22:00']
>>> '-'.join(l)
'2024-12-09-22:00'
>>> '-'.join(l).split('-')
['2024', '12', '09', '22:00']
  • 字符串编码:所有 Python 字符串都是 Unicode 字符串,当需要将文件保存到外设或进行网络传输时,就要进行编码转换,以提高效率。
# encode() 将字符转换为字节
>>> s = '学习Python'
>>> print(s.encode()) # 默认输出 UTF-8 编码格式。(输出内容中b开头表示当前内容为二进制)
b'\xe5\xad\xa6\xe4\xb9\xa0Python'
>>> print(s.encode('gbk')) # 输出为 GBK 编码格式
b'\xd1\xa7\xcf\xb0Python'# decode() 将字节转换为字符
>>> s.encode().decode('utf8')
'学习Python'
>>> s.encode('gbk').decode('gbk')
'学习Python'
3)List 列表

类似 Java List 集合接口。

列表(List) 是写在方括号 [] 之间,用英文逗号 , 分隔开的元素列表,列表可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,它支持数字、字符串甚至可以包含列表(嵌套),列表中的元素是可以改变的。

示例:

>>> Weekday = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']# list 根据坐标查询
>>> Weekday[0]
'Monday'# list 根据内容查询(重复的话,仅返回第一个坐标)
>>> Weekday.index('Wednesday')
2# list 增加元素
>>> Weekday.append('new')
>>> Weekday
['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'new']# list 删除
>>> Weekday.remove('Thursday')
>>> Weekday
['Monday', 'Tuesday', 'Wednesday', 'Friday', 'new']
4)Tuple 元组

元组(Tuple) 与列表类似,不同之处在于 元组的元素不能修改。元组写在小括号 () 里,元素之间用逗号隔开,组中的元素类型也可以不相同。

示例:

>>> letters = ('a', 'b', 'c', 'd', 'e', 'f', 'g')# Tuple 根据坐标查询
>>> letters[0]
'a'# Tuple 输出子元组
>>> letters[0:3]
('a', 'b', 'c')
5)Set 集合

类似 Java Set 集合接口。

集合(Set) 是一个无序不重复元素的序列,使用大括号 {} 或者 set() 函数创建集合。

注意:创建一个空集合必须使用 set() 而不是 {},因为 {} 是用来创建一个空字典。

  • 集合可以进行的操作:集合运算、添加、删除。(集合不能被切片,也不能根据坐标查询)

示例:

>>> a_set = {1, 2, 3, 4}# Sets 添加
>>> a_set.add(5)
>>> a_set
{1, 2, 3, 4, 5}# Sets 删除
>>> a_set.discard(5)
>>> a_set
{1, 2, 3, 4}
6)Dict 字典

类似 Java Map 集合接口。

字典(Dict) 是一种映射类型,它的元素是键值对,字典的关键字必须为不可变类型,且不能重复。创建空字典使用 {}

示例:

>>> logo_code = {
... 'BAIDU': 'Baidu',
... 'SINA': 'Sina',
... 'YOKU': 'Youku'
... }
>>> logo_code
{'BAIDU': 'Baidu', 'SINA': 'Sina', 'YOKU': 'Youku'}# 输出键为 'one' 的值
>>> logo_code['SINA']
'Sina'# 输出所有健
>>> logo_code.keys()
dict_keys(['BAIDU', 'SINA', 'YOKU'])# 输出所有值
>>> logo_code.values()
dict_values(['Baidu', 'Sina', 'Youku'])# 输出键值对个数
>>> len(logo_code)
3
7)空值

空值 是 Python 里一个特殊的值,用 None 表示。

注意:None 不能理解为 0,因为 0 是有意义的,而 None 是一个特殊的控制。

此外,Python 还允许创建自定义数据类型,我们后面会继续讲到。

2.3 变量、常量

1)变量

变量 的概念基本上和初中代数的方程变量是一致的,只是在计算机程序中,变量不仅可以是数字,还可以是任意数据类型。

变量命名的规则:

变量名必须由 英文大小写(区分大小写)、数字下划线 _ 组成。

  1. 小写字母: 变量名通常使用小写字母,单词之间用下划线分隔,这种风格称为 蛇形命名法(Snake Case)
  2. 简洁明了: 变量名应简短且具有描述性,避免使用模糊不清的缩写。
  3. 避免使用关键字: 不要使用 Python 的关键字作为变量名,如 ifforwhile 等。
  4. 避免使用数字开头: 变量名不应以数字开头,这会导致语法错误。

举个例子:

a = 1
b = 'T007'
c = True
  • 可以看到,变量可以是整数、字符串、布尔值等各种类型。

这种变量本身类型不固定的语言称之为 动态语言,与之对应的是 静态语言。静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错。例如 Java 是静态语言,赋值语言如下:(//表示 Java 注释)

int a = 123; // a是整数类型变量
a = "ABC"; // 报错:不能把字符串赋给整型变量

和静态语言相比,动态语言更灵活,就是这个原因。

最后,理解变量在计算机内存中的表示也非常重要。当我们编写如下代码:

a = 'ABC'

Python 解释器做了两件事:

  1. 在内存中创建了一个 ABC 的字符串;
  2. 在内存中创建了一个名为 a 的变量,并把它指向 ABC

Python 中,变量和变量值的关系实际上和 Java 的 “地址引用” 以及 C 的 “指针” 是相同的概念。

所以大家可以猜到,没错!Python 中也是通过 垃圾收集器(GC) 来进行内存回收的!

2)常量

所谓 常量 就是指不能改变的变量,比如常用的数学常数 π 就是一个常量。在 Python 中,通常用 全部大写 + 下划线 的变量名来表示常量。如下所示:

PI = 3.14159265359

但事实上 PI 仍然是一个变量,Python 根本没有任何机制保证 PI 不会被改变,所以,用全部大写的变量名表示常量只是一个习惯上的用法,如果你一定要改变变量 PI 的值,也不会报编译错误。

最后解释一下整数的除法为什么也是精确的。

在 Python 中,有两种除法,一种除法是 /。如下所示:

>>> 10 / 3
3.3333333333333335

/ 除法计算结果是 浮点数,即使是两个整数恰好整除,结果也是浮点数。如下所示:

>>> 9 / 3
3.0

还有一种除法是 //,称为 地板除,即相除之后向下取整为整数。如下所示:

>>> 10 // 3
3

因为 // 地板除只取结果的整数部分,所以 Python 还提供一个余数运算,可以得到两个整数相除的余数,如下所示:

>>> 10 % 3
1

无论整数做 // 地板除还是取余数,结果永远是整数。所以,整数运算结果永远是精确的。

总结:

Python 支持多种数据类型,在计算机内部,可以把任何数据都看成一个 “对象”,而变量就是在程序中用来指向这些数据对象的,对变量赋值就是把数据和变量给关联起来。

对变量赋值 x = y 是把变量 x 指向阵阵的对象,该对象是变量 y 所指向的。随后对变量 y 的赋值 不影响 变量 x 的指向。

注意:

1.Python 的整数没有大小限制,而某些语言的整数根据其存储长度是有大小限制的,例如 Java 对 32 位整数的范围限制在 -214748364821473647

2.Python 的浮点数也没有大小限制,da你是超出一定返回就直接表示为 inf(无限大)。

2.4 条件判断

计算机之所以能做很多自动化的任务,因为它可以自己做条件判断。

1)条件判断语法

条件判断语法如下:

if <条件判断1>:
<执行1>
elif <条件判断2>:
<执行2>
elif <条件判断3>:
<执行3>
else:
<执行4>

2)举例说明

比如,输入用户年龄,根据年龄打印不同的内容,在 Python 程序中,用 if 语句实现:

age = 20
if age >= 18print('your age is', age)print('adult')

根据 Python 的缩进规则,如果 if 语句判断是 True,就把缩进的两行 print() 语句执行了,否则,什么也不做。执行结果如下:

也可以给 if 添加一个 else 语句,如果 if 判断是 Flase,不执行 if 的内容,执行 else 内容:

age = 3
if age >= 18:print('your age is', age)print('adult')
else:print('your age is', age)print('teenager')

注意不要少写了冒号 :,执行结果如下:

当然上面的判断是很粗略的,完全可以用 elif 做更细致的判断:

  • elifelse if 的缩写,完全可以有多个 elif
age = 3
if age >= 18:print('adult')
elif age >= 6:print('teenager')
else:print('kid')

补充: if 判断条件还可以简写,比如写:

if x:print('True')

只要 x 是非零数值、非空字符串、非空list等,就判断为 True,否则为 False

3)input() 条件判断报错

当我们使用 input() 读取用户的输入后,如果我们直接进行条件判断会报错,如下代码所示:

birth = input('birth: ')
if birth < 2000:print('00前')
else:print('00后')

执行后,输入 1982,结果报错:

Traceback (most recent call last):File "D:\pythonProject\python-demo\test\test.py", line 2, in <module>if birth < 2000:
TypeError: '<' not supported between instances of 'str' and 'int'

这是因为 input() 返回的数据类型是 strstr 不能直接和整数比较,必须先把 str 转换成整数。Python 提供了 int() 函数来进行转换:

birth = input('birth: ')
birth = int(birth)
if birth < 2000:print('00前')
else:print('00后')

再次运行,就可以得到正确的结果。

2.5 模式匹配、复杂匹配

1)模式匹配

模式匹配:使用 match 语句来针对某个变量匹配若干种情况。避免用 if … elif … elif … else … 判断,可读性较差。

例如,某个学生的成绩只能是 ABC,用 match 语句编写的代码如下所示:

score = 'B'match score:case 'A':print('score is A.')case 'B':print('score is B.')case 'C':print('score is C.')case _: # _表示匹配到其他任何情况print('score is ???.')

使用 match 语句时,我们依次用 case xxx 匹配,并且可以在最后(且仅能在最后)加一个 case _ 表示 “任意值”,相比一连串的 if … elif … 更易读。

2)复杂匹配

复杂匹配:即在 match 语句的基础上,除了可以匹配简单的单个值外,还可以匹配多个值、匹配一定范围,并且把匹配后的值绑定到变量:

age = 15match age:case x if x < 10:print(f'< 10 years old: {x}')case 10:print('10 years old.')case 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18:print('11~18 years old.')case 19:print('19 years old.')case _:print('not sure.')
  • case x if x < 10:表示当 age < 10 成立时匹配,且赋值给 x。
  • case 10:仅匹配单个值。
  • case 11|12|...|18:能匹配多个值,用 | 分隔。
3)匹配列表

匹配列表:即在 match 语句的基础上,支持数组匹配。

代码示例如下:

args = ['gcc', 'hello.c', 'world.c']
# args = ['clean']
# args = ['gcc']match args:# 如果仅出现 gcc,报错:case ['gcc']:print('gcc: missing source ')# 出现 gcc,且至少指定了一个文件case ['gcc', file1, *files]:print('gcc compile: ' + file1 + ',' + ','.join(files))# 仅出现 cleancase ['clean']print('clean')case _:print('invalid command.')
  • case ['gcc']:表示列表仅有 ‘gcc’ 一个字符串,没有指定文件名,报错;
  • case ['gcc', file1, *files]:表示列表第一个字符串是 gcc,第二个字符串绑定到变量 file1,后面的任意个字符串绑定到 *files(符号 * 的作用将在 函数的参数 中讲解),它实际上表示至少指定一个文件;
  • case ['clean']:表示列表仅有 clean 一个字符串;
  • case _:表示其他所有情况。

2.6 循环

Python 的循环有两种,一种是 for 循环,另一种是 while 循环。

1)for 循环

for ... in 循环是依次把 List 或 Tuple 中的每个元素迭代出来,看例子:

names = ['Michael', 'Bob', 'Tracy']
for name in names:print(name)

执行这段代码,会依次打印 names 的每一个元素,结果如下:

所以 for x in ... 循环就是把每个元素代入变量 x,然后执行缩进块的语句。

再比如,我们像计算 1~10 的整数之和,可以用一个 sum 变量做累加,代码如下:

sum = 0
for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:sum = sum + x
print(sum)

注意: 如果是在 Python 的交互模式下,或者在编写模块时,for 循环后面是必须要加一个 else 语句的,用于在 for 循环正常结束后(即没有遇到 break)执行,否则会报 SyntaxError: invalid syntax。正确写法如下:

sum = 0
for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:sum = sum + x
else:print(sum)

为了简化操作,Python 提供了一个 range() 函数,可以生成一个整数序列,再通过 list() 函数可以转换为 list。比如 range(5) 生成的序列是从 0 开始小于 5 的整数:

>>> list(range(5))
[0, 1, 2, 3, 4]

那么上述计算 1~10 的整数之和,就可以简写为这样:

sum = 0
for x in range(11):sum = sum + x
print(sum)

执行结果:

2)while 循环

while循环 是指只要条件满足,就不断循环,条件不满足时则退出循环。

比如,我们要计算 100 以内所有奇数之和,可以用 while 循环实现:

sum = 0
n = 99
while n > 0:sum = sum + nn = n - 2
print(sum)

在循环内部变量 n 不断自减,直到变为 -1 时,不再满足 while 条件,循环退出。

整理完毕,完结撒花~ 🌻





参考地址:

1.Python课程,https://liaoxuefeng.com/books/python/introduction/index.html

2.学习Python,这一篇管够(入门|基础|进阶|实战),https://zhuanlan.zhihu.com/p/421726412

3.Python学习——尾递归及装饰器优化,https://cloud.tencent.com/developer/article/1964203

4.【Python】Python变量和函数的命名规范,https://blog.csdn.net/baidu_22713341/article/details/139345722

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/67052.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【MySQL】SQL菜鸟教程(一)

1.常见命令 1.1 总览 命令作用SELECT从数据库中提取数据UPDATE更新数据库中的数据DELETE从数据库中删除数据INSERT INTO向数据库中插入新数据CREATE DATABASE创建新数据库ALTER DATABASE修改数据库CREATE TABLE创建新表ALTER TABLE变更数据表DROP TABLE删除表CREATE INDEX创建…

力扣257(关于回溯算法)二叉树的所有路径

257. 二叉树的所有路径 一.问题描述 已解答 简单 相关标签 相关企业 给你一个二叉树的根节点 root &#xff0c;按 任意顺序 &#xff0c;返回所有从根节点到叶子节点的路径。 叶子节点 是指没有子节点的节点。 示例 1&#xff1a; 输入&#xff1a;root [1,2,3,null,5…

Redis有哪些常用应用场景?

大家好&#xff0c;我是锋哥。今天分享关于【Redis有哪些常用应用场景&#xff1f;】面试题。希望对大家有帮助&#xff1b; Redis有哪些常用应用场景&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Redis 是一个高性能的开源键值对&#xff08;Key-Va…

【2024年华为OD机试】(A卷,100分)- 处理器问题(Java JS PythonC/C++)

一、问题描述 题目描述 某公司研发了一款高性能AI处理器。每台物理设备具备8颗AI处理器&#xff0c;编号分别为0、1、2、3、4、5、6、7。 编号0-3的处理器处于同一个链路中&#xff0c;编号4-7的处理器处于另外一个链路中&#xff0c;不通链路中的处理器不能通信。 如下图所…

设计模式-结构型-组合模式

1. 什么是组合模式&#xff1f; 组合模式&#xff08;Composite Pattern&#xff09; 是一种结构型设计模式&#xff0c;它允许将对象组合成树形结构来表示“部分-整体”的层次结构。组合模式使得客户端对单个对象和组合对象的使用具有一致性。换句话说&#xff0c;组合模式允…

HQChart使用教程30-K线图如何对接第3方数据44-DRAWPIE数据结构

HQChart使用教程30-K线图如何对接第3方数据44-DRAWPIE数据结构 效果图DRAWPIEHQChart代码地址后台数据对接说明示例数据数据结构说明效果图 DRAWPIE DRAWPIE是hqchart插件独有的绘制饼图函数,可以通过麦语法脚本来绘制一个简单的饼图数据。 饼图显示的位置固定在右上角。 下…

Proser:升级为简易的通讯调试助手软件

我本来打算将Proser定位为一个直观的协议编辑、发送端模拟软件&#xff0c;像下面这样。 但是按耐不住升级的心理&#xff0c;硬生生的把即时收发整合了进去&#xff0c;就像这样&#xff01; 不过&#xff0c;目前针对即时收发还没有发送历史、批量发送等功能&#xff0c;…

PyTorch环境配置常见报错的解决办法

目标 小白在最基础的环境配置里一般都会出现许多问题。 这里把一些常见的问题分享出来。希望可以节省大家一些时间。 最终目标是可以在cmd虚拟环境里进入jupyter notebook&#xff0c;new的时候有对应的环境&#xff0c;并且可以跑通所有的import code。 第一步&#xff1a;…

【Linux系列】Curl 参数详解与实践应用

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Web基础-分层解耦

思考&#xff1a;什么是耦合&#xff1f;什么是内聚&#xff1f;软件设计原则是什么&#xff1f; 耦合&#xff1a;衡量软件中各个层 / 各个模块的依赖关联程度。 内聚&#xff1a;软件中各个功能模块内部的功能联系。 软件设计原则&#xff1a;高内聚低耦合。 那我们该如何实现…

算法题(33):长度最小的子数组

审题: 需要我们找到满足元素之和大于等于target的最小子数组的元素个数&#xff0c;并返回 思路&#xff1a; 核心&#xff1a;子数组共有n种起点&#xff0c;nums数组的每个元素都可以充当子数组的首元素&#xff0c;我们只需要先确定子数组的首元素&#xff0c;然后往后查找满…

网络数据通信基本流程

1.基本概念 网络通信就是发送数据、接收数据、处理数据的过程&#xff0c;发送数据时要读数据进行处理&#xff08;封装&#xff09;&#xff0c;接收数据时也要对数据进行处理&#xff08;分用&#xff09;&#xff0c; 1&#xff09;封装 对数据进行加工处理&#xff0c;如…

科创驱动 | 华望系统科技荣膺西湖区年度前沿创新新锐企业

2025年1月3日&#xff0c;由中共西湖区党委、西湖区人民政府主办的“新年第一会”—西湖区科技创新大会在杭州隆重举行。大会现场揭晓了西湖区年度科技创新团队与项目&#xff0c;并发布了“2024西湖区科技十大事件”与“西湖区五大年度科技榜单”。杭州华望系统科技有限公司榜…

Java Web开发基础:HTML的深度解析与应用

文章目录 前言&#x1f30d;一.B/S 软件开发架构简述&#x1f30d;二.HTML 介绍❄️2.1 官方文档❄️2.2 网页的组成❄️2.3 HTML 是什么❄️2.4html基本结构 &#x1f30d;三.HTML标签1.html 的标签/元素-说明2. html 标签注意事项和细节3.font 字体标签4.标题标签5.超链接标签…

点亮一个esp32 的led

最近入了一个ESP32 兄弟们&#xff0c;这玩意还可以&#xff0c;买来肯定是给它点亮啊对吧 我就是点灯侠&#x1f387; &#x1f62d;千万不要不接天线啊&#xff0c;不然你会一直找不到你的wifi 1.点灯第一步你得有IDE Arduino 就是这个绿东西 可是怎么下载安装呢&#xff…

CI/CD 流水线

CI/CD 流水线 CI 与 CD 的边界CI 持续集成CD&#xff08;持续交付/持续部署&#xff09;自动化流程示例&#xff1a; Jenkins 引入到 CI/CD 流程在本地或服务器上安装 Jenkins。配置 Jenkins 环境流程设计CI 阶段&#xff1a;Jenkins 流水线实现CD 阶段&#xff1a;Jenkins 流水…

HTB:Bastion[WriteUP]

目录 连接至HTB服务器并启动靶机 信息收集 使用rustscan对靶机TCP端口进行开放扫描 将靶机TCP开放端口号提取并保存 使用nmap对靶机TCP开放端口进行脚本、服务扫描 使用nmap对靶机TCP开放端口进行漏洞、系统扫描 使用nmap对靶机常用UDP端口进行开放扫描 使用enum4linux…

Springboot——钉钉(站内)实现登录第三方应用

文章目录 前言准备1、创建钉钉应用&#xff0c;并开放网页应用2、配置网页应用各项参数发布版本 前端改造后端逻辑1、获取应用免登录 Access_token2、通过免登录 Access_token 和 Auth_Code 获取对应登录人信息 注意事项 前言 PC端的钉钉中工作台&#xff0c;增加第三方应用&a…

马斯克的Grok-2 Beta APP在苹果应用商店上限了,Grok-2安装尝鲜使用教程

马斯克的Grok-2 Beta APP 已经上线苹果商城了&#xff0c;移动端的Grok挺好用的&#xff01;无需登录即可使用&#xff01; &#xff08;文末有安装教程&#xff09; 实测之后&#xff0c;Grok-2 绘画方面个人感觉比GPT-4的绘画还要强一些。而且速度还挺快&#xff0c;可以多次…

深入理解 C 语言中浮点型数据在内存中的存储

文章目录 一、浮点型数据存储格式&#xff08;IEEE 754 标准&#xff09;二、举例说明单精度浮点数存储过程三、绘图说明四、双精度浮点数存储示例&#xff08;以1.5为例&#xff09; 在 C 语言的世界里&#xff0c;数据类型丰富多样&#xff0c;而浮点型数据用于表示实数&…