第二章python基础学习

第二章 变量与数据类型

2.3认识变量

2.3.1变量的定义

  • 变量的功能:通过一个有意义的标识(变量),将变量与某个具体内容(数值、数组、对象等)进行关联,方便访问。

  • 门牌号与房子、人与人名。

  • 通过变量,不需要记住存放内容的内存物理地址。

  • 在python中,变量存的是记录具体数据的地址。

    代码如下

    message = "hello python world!"#将字符串字面量赋值给message变量
    print(message,type(message))
    
  结果:-----将变量与字面量进行关联,便于访问和使用。-------
  hello python world! <class 'str'>

Jupyter在命令模式下开启cell的行号。快捷键L

添加了一个名为message的变量。每个变量都存储了一个值——与变量相关联的信息。在这里,存储的值为字符串“hello python world!”。

  • 第一行代码,用于代码注释输出。
    • 第二行代码,它将字符串字面量“hello python world!” 与变量message关联起来
    • 第三行代码,它将与变量message关联的的值打印到屏幕。
  print('------在创建或赋值变量时,不需要为变量指定类型-------')
  message = 2019
  print(message,type(message))
  
  
  ------在创建或赋值变量时,不需要为变量指定类型-------
  2019 <class 'int'>
  print('----不能使用未创建的变量----')
  message = 3.14
  print(message1,type(message))
  
  
  
  ----不能使用未创建的变量----
  ---------------------------------------------------------------------------
  NameError                                 Traceback (most recent call last)
  <ipython-input-3-68235e2a257e> in <module>
        1 print('----不能使用未创建的变量----')
        2 message = 3.14
  ----> 3 print(message1,type(message))
  
  NameError: name 'message1' is not defined

修改程序,使其再打印一条信息:

代码如下

  message = "hello python world!"
  print(message)
  
  message = "hello python crash course world"
  print(message)
  
  message = "hello my sweet"
  print(message)

运行结果:

  hello python world!
  hello python crash course world
  hello my sweet

在程序中可随时修改变量的值,而python将始终记录变量的最新值

通过input函数接受用户的输入,注意该函数的返回为str类型

代码如下

  # input 函数的返回是str
  message = input("请输入float类型的数据:")
  message = float(message)#str -->float
  message = message * 10
  print(message,type(message))

运行结果:

  请输入float类型的数据:3.0
  30.0 <class 'float'>
习题
  1. 题目要求:创建变量,将一条消息存储到变量中,再将其打印出来

    代码如下

    message1 = "significant_things"
    print(message1)
    

    运算结果:

    significant_things
    
  2. 题目要求:将一条消息存储到变量中,将其打印出来;再将变量的值修改为一条新消息,并将其打印出来

    代码如下

    message2 = "important_things"
    print(message2)
    

    运算结果:

    important_things
    

    代码如下

    message2 = "essential_things"
    print(message2)
    

    运算结果:

    essential_things
    
  3. 题目要求:使用input()函数,接收外部输入(输入字符),并把结果存到变量中,组织消息内容结果

    代码如下

    message3 = input("输入:")
    print(message3)
    

    运算结果:

    输入:momentous_things
    momentous_things
    
  4. 题目要求:使用input()函数,接收外部输入(输入数字),并把结果存到变量中,对这数进行平方运算,打印结果

    代码如下

    message4 = input("输入:")
    print(message4)
    

    运算结果:

    输入:125
    125
    

2.3.2变量的命名和使用

在python中使用变量时,需要遵守一些规则和指南。违反这些规则将引发错误,而指南旨在让你编写的代码更容易阅读和理解

  • 变量名只能包含字母、数字和下划线。变量名可以字母或下划线打头,但不能以数字打头,例如,可将变量命名为message_1,但不能将其命名为1_message.

  • 变量名不能包含空格,但可使用下划线来分隔其中的单词。例如,变量名greeting_message可行,但变量名greeting message会引发错误。

  • 不要将Python关键字和函数名作变量名,即不要使用python保留用于特殊用途的单词,如print

  • 变量名应既简短又具有描述性。

  • 慎用小写字母I和大写字母O,因为他们可能被人错看成数字1和0

    greeting_message = 111
    print(greeting_message)
    
    输出结果:111
    
习题

题目要求:根据命名规,创建三个正确的变量名和五个错误的变量名,并指出错误的原因

正确的变量名:number1、ShenWen_zeng、nike
错误的变量名:1_name(变量以数字打头)、accelerat e(变量名具有空格)、input(python的函数名)、shen!(变量名不能含有除数字、字母、下划线以外的符号)、anything is _possible(变量名太长)

在python中使用变量时,需要遵守一些规则和指南。违反这些规则将引发错误,而指南旨在让你编写的代码更容易阅读和理解

  • 变量名只能包含字母、数字和下划线。变量名可以字母或下划线打头,但不能以数字打头,例如,可将变量命名为message_1,但不能将其命名为1_message.

  • 变量名不能包含空格,但可使用下划线来分隔其中的单词。例如,变量名greeting_message可行,但变量名greeting message会引发错误。

  • 不要将Python关键字和函数名作变量名,即不要使用python保留用于特殊用途的单词,如print

  • 变量名应既简短又具有描述性。

  • 慎用小写字母I和大写字母O,因为他们可能被人错看成数字1和0

    greeting_message = 111
    print(greeting_message)
    
    输出结果:111
    

2.3.3使用变量时避免命名错误

变量名命名错误

print("------没有被赋值的变量,使用会出现NameError错误------")
message1 = "hello python World!"
print(meaasge)
NameError                                 Traceback (most recent call last)
<ipython-input-5-144d14179514> in <module>
      1 print("------没有被赋值的变量,使用会出现NameError错误------")
      2 message1 = "hello python World!"
----> 3 print(meaasge)

NameError: name 'meaasge' is not defined

掌握变量命名错误的trackback信息

程序存在错误时,python解释器将竭尽所能地帮助你找出问题所在。程序无法成功地运行时,解释器会提供一个trackback。trackback是一条记录,指出了解释器尝试运行代码时,在什么地方陷入了困境。

习题

题目要求:自定义变量,不恰当的使用变量名,引起程序异常,根据trackback提示信息找到解决方案

代码如下

print("------没有被赋值的变量,使用会出现NameError错误------")
message1 = "hello python World!"
print(message)

运算结果:

------没有被赋值的变量,使用会出现NameError错误------

NameError Traceback (most recent call last)
in
1 print(“------没有被赋值的变量,使用会出现NameError错误------”)
2 message1 = “hello python World!”
----> 3 print(message)

NameError: name ‘message’ is not defined

修改代码

print(“------没有被赋值的变量,使用会出现NameError错误------”)
message = “hello python World!”
print(message)

------没有被赋值的变量,使用会出现NameError错误------
hello python World!

2.4.1字符串使用语法

  1. 字符串就是一系列字符,在python中,用引号括起来的都是字符串,其中的引号可以是单引号,也可以是双引号。

  2. 由于引号在Python中有特殊意义,用于标识字符串的起止标识。

    • 如果在 "" 双引号作为标识的字符串中使用 "字符,那么,Python就只能把 "错误地解析为起止标识,而无法解析为该 “ 字符本身,进而引发语法错误。
    • 为了解决此歧义问题,python引入了转移字符技术,即通过转义字符 \'\"来明确告诉python,当前的字符解析为字符本身,而非起止标识。
习题

题目要求:通过print在Jupyter中输出所有内容

代码如下

print("This is a string.")
print("This is also a string.")

运行结果:

This is a string.
This is also a string.

题目要求:使用单引号和双引号分别创建字符串(可以用中文作为字符串内容)。

代码如下

print('我们爱学习!')
print("我们爱学习!")

运行结果:

我们爱学习!
我们爱学习!

题目要求:创建含有引号的字符,观察引号错误使用引起的错误。

代码如下

print("我们‘爱学习’")

运行结果:

我们‘爱学习’

代码如下

print("我们"爱学习"")

运行结果:

File "<ipython-input-11-fb71290c8b12>", line 1
    print("我们"爱学习"")
                ^
SyntaxError: invalid syntax

题目要求:创建含有引号的字符串,使用转义字符。

代码如下

print("我们\"爱学习\"")

运行结果:

我们"爱学习"

代码如下

print("我们\'爱学习\"")

运行结果:

我们'爱学习"

2.4.2使用方法修改字符串的大小写

  1. 知识点:

    • 这个方法是Python可对特定类型的特定数据所执行的操作。特定类型:str;特定数据:name。
    • 每个方法后面都跟着一对括号,为方法传入额外的参数(信息)。函数title()不需要额外的信息,因此它后面的括号是空的。
  2. 使用方法upper()和lower()修改字符串大小写

    将字符串改为全部大写或全部小写

    代码如下

    name = "Ada lovelace"
    print(name.upper())
    print(name.lower())
    

    运行结果:

    ADA LOVELACE
    ada lovelace
    
习题

题目要求:使用input()输入字符串,使用上述3个字符串的方法对该字符串进行修改操作,并输出结果

代码如下

name = input("输入:")
print(name.title(),name.upper(),name.lower())

运行结果:

输入:shEN
Shen SHEN shen
  1. 使用方法title()修改字符串为首字母大写

    代码如下

    name = "ada lovelace"
    print(name.title(),type(name))
    

    运行结果:

    Ada Lovelace <class 'str'>
    

2.4.3合并(拼接)字符串

知识点:python使用加号(+)来合并字符串,这种合并字符串的方法称为拼接。通过拼接,可使用存储在变量中的信息来创建完整的消息

代码如下

first_name = "ada"
last_name = "lovelace"
full_name = first_name + " " + last_name
print("hello, "+full_name.title() + "!")

运行结果:

hello, Ada Lovelace!

将字符串拼接的结果存变量中

代码如下

first_name = "ada"
last_name = "lovelace"
full_name = first_name + " " + last_name
message = "hello, "+full_name.title() + "!"
print(message)

运行结果:

hello, Ada Lovelace!

上述的代码也显示消息"hello, Ada Lovelace!",但将这条消息存储在了一个变量中,这让最后的print语句简单的多。

习题
  1. 题目要求:接受键盘输入,将输入字符串储存到变量,然后进行字符串拼接,最后输出"你好,姓名"。

代码如下

message1 = input("输入:")
message2 = input("输入:")
message3 = message1 +" "+message2
print(message3)

运行结果:

输入:你好,
输入:姓名
你好, 姓名

2.4.4制作符或换行符

在程序中,空白泛指任何非打印字符,如空格、制表符和换行符。可使用空白来组织输出,以使其更易读。

在字符串中添加制表符,可以用转义字符\t

代码如下

print("python")
print("\tpython\tpython\tpython\tpython")
print("\tJava\tJava\tJava\tJava")

运行结果:

python
	python	python	python	python
	Java	Java	Java	Java

在字符串中添加换行符,可以使用转义字符\n

代码如下

print("Languages:\npython\nC\nJavaScript")

运行结果:

Languages:
python
C
JavaScript

组合使用:可在同一个字符串中同时包含制表符和换行符。
字符串"\n\t"让python换行到下一行,并在下一行开头添加一个制表符。

下面的示例演示如何使用一个单行字符串来生成四行输出

代码如下

print("Languages:\n\tpython11111\tpython\tpython\n\tC\tC\n\tJava\tJava")

运行结果:

Languages:
	python11111	python	python
	C	    C
	Java	Java
习题
  1. 题目要求:使用制表符和换行符分别自定义创建字符串(可以是中文),并输出结果。

    代码如下

    print("鲜花:\n\t茉莉花\t樱花\t凤凰花")
    

    运行结果:

    鲜花:
    	茉莉花	樱花	凤凰花
    
  2. 题目要求:组合使用字表符(3列)和换行符(2列)自定义创建字符串(可以为中文),并输出结果

    代码如下

    print("铃兰\t兰花\n紫荆花\t茉莉花\n水母雪\t羽裂雪")
    

    运行结果:

    铃兰	兰花
    紫荆花	茉莉花
    水母雪	羽裂雪
    

2.4.5删除字符串中的空白

对程序员来说,'python''python '看起来几乎一样,但对程序来说,他们却是两个不同的字符串。
即程序对字符串中的空白敏感

处理字符串中的空白很重要,因为经常需要比较两个字符串是否相同。
例如,在用户登录网站时检查其用户名。通常对Python的字符串空白删除操作,对用户输入数据中多余空白进行删除。

使用方法rstrip()删除字符串末尾空白

调用字符串方法rstrip(),删除字符串末尾多余的空白

代码如下

favorite_language = ' python '
favorite_language

运行结果:

' python '

代码如下

favorite_language.rstrip()

运行结果:

' python'

代码如下

favorite_language

运行结果:

' python '
  • 存储在变量favorite_language中的字符串末尾包含多余的空白。Jupyter输出可看到末尾的空格。
  • 对变量favorite_language调用方法rstrip()后,这个多余的空格被删除了。
  • 然而,这种删除只是暂时的,在Jupyter输出中输出favorite_language时,会发现它依然包含多余的空白。

要永久删除这个字符串中的空白,必须将删除操作的结果存回到变量中

代码如下

print("-----通过赋值的方式覆盖原字符串----")
favorite_language = ' python '
favorite_language = favorite_language.rstrip()
favorite_language

输出结果:

-----通过赋值的方式覆盖原字符串----
' python'
  • 因为.rstrip()操作不直接修改字符串,而是返回一个新的字符串
  • 在编程中,经常需要修改变量的值,在将新值存回到原来的变量中

python还可以删除字符串开头的空白,或同时剔除字符串两端的空白。为此,可分别使用方法lstrip()strip()

在这个示例中,我们首先创建了一个开头和末尾都有空白的字符串。
接下来,我们分别删除末尾、开头和两端的空格。

print("-----Jupyter对赋值语句结果不输出----")
favorite_language = ' python '
favorite_language
输出结果:-----Jupyter对赋值语句结果不输出----
         ' python '
favorite_language.rstrip()
输出结果:' python'
favorite_language.lstrip()
输出结果:'python '
favorite_language.strip()
输出结果:'python'
习题

题目要求:外部输入含有空格的字符串,使用上述方法对字符串进行空白删除处理。

代码如下

name = input("输入字符串:")
name

运行结果:

输入字符串:" name_speak "
'" name_speak "'

代码如下

name.rstrip()

运行结果:

'" name_speak"'

2.4.6字符串引号引起的语法错误

当程序中包含非法的python代码时,就会导致语法错误。

下面演示了如何正确地使用单引号和双引号。撇号位于两个双引号之间,因此python解释器能够正确地理解这个字符串。

代码如下

message = "One of python's strengths is its diverse community."
print(message)

输出结果:

One of python's strengths is its diverse community.

在用单引号括起来的字符串中,如果包括撇号,就将导致错误。这是因为这会导致Python将第一个单引号和撇号之间的内容视为一个字符串,进而将余下的文本视为python代码,从而引发错误。因为python将无法正确地确定字符串的结束位置。

代码如下

message = 'One of python's strengths is its diverse community.'
print(message)

从上述输出可知,错误发生在第二个单引号后面,这种语法错误表明,在解释器看来,其中的有些内容不是有效的Python代码。

习题
  1. 题目要求:个性化消息:将用户的姓名存到一个变量中,并向该用户显示一条消息。显示的消息应非常简单

    代码如下

    name = "Eric"
    print("Hello Eric,would you like to learn some python today")
    

    运行结果:

    Hello Eric,would you like to learn some python today
    
  2. 题目要求:调整名字的大小写:将一个人名存储到一个变量中,再以小写、大写和首字母大写的方式显示这个人名。

    代码如下

    name = "maxwell_SMISS"
    print(name.lower())
    print(name.upper())
    print(name.title())
    

    运行结果:

    maxwell_smiss
    MAXWELL_SMISS
    Maxwell_Smiss
    
  3. 题目要求:名言:找一句你钦佩的名人说的名言,将这个名人的姓名和他的名言打印出来。输入应类似于下面这样(包括引号):Albert Einstein once said,“A person who never made a mistake never tried anything news.”

    代码如下

    print("Golgi once said,'Books are the ladder of human progress'")
    

    运行结果:

    Golgi once said,'Books are the ladder of human progress'
    
  4. 题目要求:名言2:重复练习2-5,但将名人的姓名存储在变量famous_person中,在创建要显示的消息,并将其存储在变量message中,然后打印这条消息。

代码如下

famous_person = "Golgi"
message = "Books are the ladder of human progress"
print(message)

运行结果:

Books are the ladder of human progress
  1. 题目要求:剔除人名中的空白:存储一个人名,并在其开头和末尾都包含一些空白字符。务必至少使用字符组合\t\n各一次。打印这个人名,以显示其开头和末尾的空白。然后,分别使用剔除函数lstrip()、rstrip()和strip()对人名进行处理,并将结果打印出来。

代码如下

name = " Shen Wenzeng "
name.rstrip()

运行结果:

' Shen Wenzeng'

代码如下

name.lstrip()

运行结果:

'Shen Wenzeng '

代码如下

name.strip()

运行结果:

'Shen Wenzeng'

2.5数值类型

2.5.1整数类型

在Python中,可对整数执行加(+)减(-)乘(*)除(/)等运算

在终端会话中,python直接返回运算结果。python使用两个乘号表示乘方运算

python还支持运算次序,因此你可在同一个表达式中使用多种运算。你还可以使用括号来修改运算次序,让python按你指定的次序执行运算

习题

题目要求:数字8:编写四个表达式,它们分别使用加法、减法、、乘法和除法运算,但结果都是数字8。为使用print语句来显示结果,务必将这些表达式用括号括起来,也就是说,你应该编写4行类似下面的代码:print(5 + 3)。输出应为4行,其中每行都只包含数字8

代码如下

print(3 + 5)
print(10 - 2)
print(2 * 4)
print(16 / 2)

运行结果:

8
8
8
8.0

2.5.2浮点数类型

python中将带有小数点的数字都称为浮点数

由于计算机采用二进制工作,很多小数都没法被二进制准确表示。因此pyt的浮点数小数位并不精确。

print('-----浮点数是不确定数,所以不能用==等号判断,两个浮点数相等-----')
print('-----整数是确定数,所以能用==等号判断,两个整数相等-----')
0.2 + 0.1
显示结果:0.30000000000000004
3 * 0.1
显示结果:0.30000000000000004

如何正确比较两个浮点数大小

a = 0.2 + 0.1
b = 3 * 0.1
(a - b) <= 10**(-6)

结果显示:True

不仅仅是python,其他所有语言的浮点数都存在误差

习题
  1. 题目要求:使用input()函数。键盘输入两个数,然后再对这两个数进行上述运算的操作。注意类型转换。

    代码如下

    x = float(input("输入第一个参数:"))
    y = float(input("输入第二个参数:"))
    x + y
    

    运行结果:

    输入第一个参数:2.0
    输入第二个参数:3.0
    5.0
    
  2. 题目要求:使用input()函数。键盘输入两个数,比较这两个数大小。并输出结果。

    代码如下

    x = float(input("输入第一个参数:"))
    y = float(input("输入第二个参数:"))
    if (x > y):
        print(x)
    else:
        print(y)
    

    运行结果:

    输入第一个参数:2.0
    输入第二个参数:3.0
    3.0
    

2.5.3str()使用

字符串不能和数值类型拼接

常常需要在消息中使用字符串拼接,在构造完整的消息信息。例如,要祝某人生日快乐,可能会编写代码打印一条简单的生日祝福语:happy 23rd birthday!。但如果你运行这些代码,将发现他们会引发错误:

age = 23
message = "happy " + age + "rd Birthday!"
print(message)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-8-4eec9febaeeb> in <module>
      1 age = 23
----> 2 message = "happy " + age + "rd Birthday!"
      3 print(message)

TypeError: can only concatenate str (not "int") to str

这是一个类型错误(TypeError),意味着python无法识别你使用的信息。

在示例中,python发现你使用了一个值为整数(int)的变量,但它不知道该如何解读这个值。python知道,这个变量表示的可能是数值23,也可能是字符2和3.

解决方法,需要显示地指出你希望Python将这个整数用作字符串。为此,可调用函数str(),它让python将非字符串值表示为字符串:

age = 23
message = "happy " + str(age) + "rd Birthday!"
print(message)
happy 23rd Birthday!
习题

题目要求:最喜欢的数字:将你最喜欢的数字存储在一个变量中,再使用这个变量创建一条消息,指出你最喜欢的数字,然后将这条消息打印出来。

favorite_number = 125
message = str(favorite_number) + " is my favorite number"
print(message)
125 is my favorite number

2.6运算符

+(加)、-(减)、*(乘)、/(除)、%(取余)

2.7注释

大多数编程语言中,注释都是一项很有用的功能。注释让你能够用自然的语言在程序中添加说明

在python中,注释用井号(#)标识。井号后面的内容都会被python解释器忽略

注释快捷键:ctrl+/

# 向大家问好
print("hello pythom people!")
hello pythom people!

python解释器将忽略第一行,只执行第二行

习题

题目要求:添加注释:选择你编写的两个程序,在每个程序中都至少添加一条注释。

代码如下

#2020/3/14
print("hello world")

运行结果:

hello world

e = "happy " + age + “rd Birthday!”
3 print(message)

TypeError: can only concatenate str (not “int”) to str


这是一个类型错误(TypeError),意味着python无法识别你使用的信息。

在示例中,python发现你使用了一个值为整数(int)的变量,但它不知道该如何解读这个值。python知道,这个变量表示的可能是数值23,也可能是字符2和3.

解决方法,需要显示地指出你希望Python将这个整数用作字符串。为此,可调用函数str(),它让python将非字符串值表示为字符串:

age = 23
message = "happy " + str(age) + “rd Birthday!”
print(message)


happy 23rd Birthday!


#### 习题

题目要求:最喜欢的数字:将你最喜欢的数字存储在一个变量中,再使用这个变量创建一条消息,指出你最喜欢的数字,然后将这条消息打印出来。

favorite_number = 125
message = str(favorite_number) + " is my favorite number"
print(message)


125 is my favorite number


## 2.6运算符

+(加)、-(减)、*(乘)、/(除)、%(取余)



## 2.7注释

大多数编程语言中,注释都是一项很有用的功能。注释让你能够用自然的语言在程序中添加说明

在python中,注释用井号`(#)`标识。井号后面的内容都会被python解释器忽略

注释快捷键:`ctrl+/`

向大家问好

print(“hello pythom people!”)

hello pythom people!

python解释器将忽略第一行,只执行第二行

习题

题目要求:添加注释:选择你编写的两个程序,在每个程序中都至少添加一条注释。

代码如下

#2020/3/14
print("hello world")

运行结果:hello world

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值