【10月更文挑战第5天】
1.变量
变量的命名以及赋值
变量是什么呢?
变量:可变的量,值是可以进行改变的
我们通过赋值符号“=”进行赋值
我们可以保存任意类型的数据
这个变量就相当于一个容器,这个容器是可以进行数据的存放的
我们能通过这个这个容易的名字进行数据的调用
定义格式:变量名=值
变量名:自己定义,我们需要遵循命名规则
值:数据
命名规则
1.只能有数字、字符、下划线_
2.不能以数字开头
3.不能有特殊的字符,如标点符号等
定义一个变量来存放名字
这个名字是一个文本,算是字符串,我们用双引号或者单引号包裹
使用变量格式:变量名
#编辑模式
name='小明'
#交互模式
name 回车
'小明'
我们在编辑模式对这个name进行定义,然后运行进入到交互模式里面,然后直接输入name 回车,编译器输出的就是我们之前对name的定义的数据
通过变量名我们是可以获取对应的数据的
#编辑模式
print(name)
#交互模式
小明
变量名我们是需要先进行定义我们才能进行使用的
文本数据被定义的话我们一定要用引号进行括起来的
如果我们用print进行打印的话,编译器会直接过滤掉引号
但是我们直接将变量拿出来到交互模式的话那么就不会去引号的
变量的多重定义,那么最后一次定义的就是我们最终变量里面存储的
#编辑模式
name='小明'
print(name)
name =1
print(name)
name ='小妹'
print(name)
#交互模式
小明
1
小妹
每次定义都是重新定义的,不管之前这个变量名有没有被定义,都以最后一次为基准
最后一次被定义的是啥,这个变量里面存的就是啥
就是新的值会将旧的值进行替换
这个就是重新赋的概念
同时定义多个变量:左边变量名数量和右边的值数量一定要一致
#编辑模式
a,b,c=1,2,3
print(a)
print(b)
print(c)
#交互模式
1
2
3
多个变量进行命名,我们一定要数量对应好
姓名和数据要对应好
官方式命名法:用下划线连接两个英文组成的名称
'''
假设现在猪肉 15块钱一斤,西兰花 6块一斤,辣椒 12块钱一斤
现在买2斤猪肉,1斤西兰花,2斤辣椒需要多少钱?
'''
zhurou=15
xilanhua=6
lajiao=12
print(zhurou*2+xilanhua*1+lajiao*2)
然后编译器输出的就是60
'''
第二天猪肉涨价为18块钱一斤
买同样的材料需要多少钱?
那么我们现在只需要将这个猪肉的价格进行修改就行了
'''
zhurou=18
print(zhurou*2+xilanhua*1+lajiao*2)
编译出来的就是66
关键字和内置函数
我们在对变量进行命名的时候我们是不能用关键字进行命名的
那么我们是怎么进行关键字的查看呢?
查看关键字的方式:
#查看关键字
import keyword
print(keyword.kwlist)
'''
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await',
'break', 'class', 'continue', 'def', 'del', 'elif', 'else',
'except', 'finally', 'for', 'from', 'global', 'if', 'import',
'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise',
'return', 'try', 'while', 'with', 'yield']
关键字:保留字,回赋予一些特殊的含义
我们是不能用这些关键字进行变量名字的定义的
举例:我们之前学到的True就是真,表示的是1
但是现在我们将这个进行重新赋值,那么这个表示的大小就被重新替换掉了
那么这个就对代码产生了极大的危害
我们是没有这个权限对关键字进行重新赋值的
但是true和false是可以进行变量的命名的
因为开头字母是小写的,不是关键字
关键字的颜色一般是橙色的
我们的变量名一般就是黑色的
紫色的就是python里面的内置函数,也是不能用来对变量进行命名
查看内置函数的方式:
#编辑模式
print(dir(__builtins__))
#交互模式
'''
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BaseExceptionGroup', 'BlockingIOError', 'BrokenPipeError', 'BufferError', 'BytesWarning', 'ChildProcessError', 'ConnectionAbortedError', 'ConnectionError', 'ConnectionRefusedError', 'ConnectionResetError', 'DeprecationWarning', 'EOFError', 'Ellipsis', 'EncodingWarning', 'EnvironmentError', 'Exception', 'ExceptionGroup', 'False', 'FileExistsError', 'FileNotFoundError', 'FloatingPointError', 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError', 'ImportWarning', 'IndentationError', 'IndexError', 'InterruptedError', 'IsADirectoryError', 'KeyError', 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'ModuleNotFoundError', 'NameError', 'None', 'NotADirectoryError', 'NotImplemented', 'NotImplementedError', 'OSError', 'OverflowError', 'PendingDeprecationWarning', 'PermissionError', 'ProcessLookupError', 'RecursionError', 'ReferenceError', 'ResourceWarning', 'RuntimeError', 'RuntimeWarning', 'StopAsyncIteration', 'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'TimeoutError', 'True', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning', 'ValueError', 'Warning', 'WindowsError', 'ZeroDivisionError', '__build_class__', '__debug__', '__doc__', '__import__', '__loader__', '__name__', '__package__', '__spec__', 'abs', 'aiter', 'all', 'anext', 'any', 'ascii', 'bin', 'bool', 'breakpoint', 'bytearray', 'bytes', 'callable', 'chr', 'classmethod', 'compile', 'complex', 'copyright', 'credits', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'exec', 'exit', 'filter', 'float', 'format', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'license', 'list', 'locals', 'map', 'max', 'memoryview', 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', 'quit', 'range', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'vars', 'zip']
'''
2.变量的输出与输入
输出print
输出我们用的是print函数
print(要输出的内容)
将括号内的内容进行一个打印,打印到交互面板
如果我们通过print函数来输出字符串的话那么编译器就是自动将引号省略
输出引号内的内容
我们的括号里面还能放表达式,编译器会在计算之后将其进行输出的
但是我们如果要输出多个数据应该怎么做呢?
多内容的打印方式:
#编辑模式
print('abcd',1+1,4**2)
#交互模式
abcd 2 16
我们在print的括号内用逗号将多个内容进行隔离
print(内容一,内容二,内容三)
打印出来的数据就是:内容一 内容二 内容三
分隔符---sep
换行是怎么操作的呢?我想要多个数据各为一行
设置多个数据时,数据之间的分隔符
sep是可以设置分隔符的,就是数据与数据之间用什么进行分开,我们是可以控制的
sep的位置通常在打印括号内的最后一个位置
sep来控制分隔符号:
#编辑模式
print('abcd',1+1,4**2,sep=";")#设置以分号进行分割
print('abcd',1+1,4**2,sep=":")#设置一冒号进行分割
print('abcd',1+1,4**2,sep="6")#设置一6进行分割
#交互模式
abcd;2;16
abcd:2:16
abcd62616
如果我们是不设置分隔符的话那么默认的分隔符就是一个空格
如果我们想换行,怎么用sep实现呢?
#编辑模式
print('abcd',1+1,4**2,sep="\n")
#交互模式
abcd
2
16
我们将分隔符设置为'\n'就行了
\n就是换行的操作,就是编译器帮我们进行回车的操作
想要被打印的数据之间用什么符号进行间隔,我们通过sep='分隔符'这个操作就能进行实现了
end的使用
为什么我们的每个单独的print函数的后面好像是有个换行符一样,我们不需要进行写sep就能换行
#编辑模式
print(1)
print(2)
print(3)
#交互模式
1
2
3
设置内容回输出完毕之后以什么内容结尾
end='结尾符',结尾默认是换行
我们这里的print的结尾符默认是换行\n
我们没有在括号内设置的,系统堆print是默认是换行的
一句print就是一行的
但是我们现在不想默认换行了怎么办,我么想用其他的符号进行运用
#编辑模式
print(1,end="+")
print(2)
print(3)
print(3,end="*")
print(4)
#交互模式
1+2
3
3*4
我们在这里没有以换行符进行结尾
我们以+和*进行结尾
那么我们输出的就是
1+2
3
3*4
我们将默认的换行符变为其他的符号进行结尾
end和sep的区别
区别:
#编辑模式
print(1,sep="!")
print(1,end="+")
#交互模式
1
1+
我们的sep只有在多个数据存在的时候才能发挥作用
只有一个数据的话是不会生效的,两个及以上的数据才会生效
但是我们的end就不一样,end是直接在结尾设置我们想要的符号,不管是几个数据
不管是end还是sep,前面的逗号一定要是英文逗号,不能是中文逗号
输入input
格式:input("提示内容")
我们能在交互模式通过键盘输入数据
作用:你想给计算机什么信息,则使用输入函数录用,通过排变量进行保存
注意:input接收到的所有数据都是字符串类型,可以通过类型转换为对应的数据类型
input返回的是字符串类型,所以我们需要进行类型转换,转换为对应的类型进行正确的操作
name=input("请输入你的名字:")#定义变量,存放输入的数据
print(name)
input括号内的是输入我们的提示信息,提醒用户输入
在输入数据之后,这个数据就被存放到了name里面了
然后我们将其进行打印,然后就得到了我们输入的东西了
我们需要按下回车键告诉编译器我们已经输入完了,然后由编译器进行后面的其他操作
我们一定是要在input后面的括号内输入提示信息,不然后面代码量提高了就很不方便的
一定要在交互模式进行键盘的输入数据,输入完数据需要回车才能结束等待输入的状态
#键盘输入两个数字,进行加法操作,并将值给他进行输出
#编辑模式
num1=input("请输入第一个数字")
num2=input("请输入第二个数字")
print(num1+num2)
#交互模式
请输入第一个数字12
请输入第二个数字12
1212
为什么我们最后的的结果是1212呢?
好像就是将我们输入的两个值进行了拼接一样
怎么和字符串的加法一样呢?
对于input来说,我们不管输入什么,系统都会将我们输入的看作是一个字符串
所以我们这里的结果就是和字符串拼接效果是一样的
为了能使用我们输入的数字进行加法操作,我们需要将我们输入的数据转换为整型类型的数据
然后就能进行整型的相加了
下面我们就介绍转换数据类型
转换数据类型
数据类型:整型(Int)浮点型(float)字符串(str)
如果我们需要将浮点型转换为整型该怎么操作呢?
int(我们写的浮点型)
int(12.4)
那么转换出来的就是12
只保留整数部分,舍去小数部分
将字符串转换为整型进行输出
print(int('123'))
输出123
str()将输入的数据转换为字符串
整形转换为为浮点型就是在后面添加小数部分
字符串转换为浮点型其实都差不多
对于字符串转换为整型的时候,我们字符串引号里面的字符只能够是数字
不能够是字母,因为我们字母是不能变成数字的
那么回到上面的题目我们就能将我们输入的进行相加
##键盘输入两个数字,进行加法操作,并将值给他进行输出
num1=input("请输入第一个数字")
num2=input("请输入第二个数字")
print(int(num1)+int(num2))
我们直接在打印的括号里面将我们输入的数字进行转换为整型
任何数据转换为字符串直接将数据用引号括起来
我们不仅可以在输入的时候进行转换,我们也可以在使用的时候进行打印的时候转换
##键盘输入两个数字,进行加法操作,并将值给他进行输出
num1=int(input("请输入第一个数字"))
num2=int(input("请输入第二个数字"))
print(num1+intnum2)
直接在我们输入完就进行转换为整型
然后两个整型的相加
eval--将字符串的引号去除
eval(字符串):将字符串的引号去除,只显示引号里面的数据
我们现在想实现输入的是什么数据就准确转换什么数据
eval的使用:
num=eval(input("请输入数据"))
print(type(num))
print(num)
我们直接利用eval在输入的时候将字符串的引号进行去除
我们输入的数据为字符串类型的话,那么我们就不能使用eval了
就会报错了