手撕python之基本数据类型以及变量

​​​​​​1.基础概念

python就是将不同的数据划分成了不同的类型

就像我们生活中的数据有数字、字符等数据一样

小知识点:

注释:#

全体注释:Alt+F3

取消注释:Alt+F4

2.数值类型

数值类型概括

数值类型分为三种:整型int 浮点型 float 布尔型 bool

整型:1 2 3 4 5 6

浮点型: 1.1 3.1415926 5.20

布尔型:True False

我们在交互模式中输入type(数据)就能显示你所输入的数据的类型

type能够在交互模式查看数据类型

type在交互模式的用法:

123
type(123)     
<class 'int'>type(1.5)     
<class 'float'>type(True)     
<class 'bool'>

在括号内输入你想判断的数据,直接回车就能返回这个数据的类型

对于交互模式中bool值的判断:

123
2>1
True
1<0.5
False
1>2
False

输入我们要判断的表达式,然后系统会对这个表达式进行判断,返回对应的bool值

注意我们这个的bool类型的两个值True和False 开头的字母一定要是大写的,否则是会报错的

为什么这个布尔值是属于数值类型呢?

#为什么这个布尔值是属于数值类型呢?
#我们在交互模式使用True+1就输出了一个2
#使用False+1就是输出的是1
True+1
2
False+1
1

实际上False表示的是0

True表示的是1

我们在交互模式利用上述的加法就能判断出这个结果

所以我们的True除了表示真,还能表示1

False除了表示假,还能表示0

算术运算符

在我们的python中,True和False同时也代表着1和0,我们可以直接进行运算

True+False=1

对于表中的两个操作符:/和//

一个/的话就是编译器会进行小数的保留

两个//的话就是编译器会将小数部分删除,仅仅只保留住整数部分

对于%这个运算符的话,10/3=3….1

那么这个1就是10%3的结果,就是余数

运算符使用方法:

2*3
610**2
10010/3
3.333333333333333510//3
310%3
1

我们的所有运算符符号一定要用英文符号

我们在进行算术运算中,只要我们的连个数据中一个数据是浮点数的话,那么结果一定会是浮点数的

一个数据是浮点数,结果一定是浮点数的:

10//3.0
3.0
10//2.0
5.0

只要有浮点数参与运算,那么结果一定是浮点数

对于负数进行呢取整以及其他的操作:

-10//5
-2
-10/3
-3.3333333333333335
-10//3
-4

如果我们是对负数进行取整的话,假如-10//3=-4

因为我们进行取整的话就是比原先不取整的值小一些

不管是整数还是负数都一样,取整就直接将小数部分剔除了

取余%--两数相处,商为余数,取余数部分

幂运算 *就是几次方 *102=100

-10%3
2
-10//4
-3

为什么-10%3得到的是2呢,因为%是进行求余数的操作的

我们的-10//4=-3 我们这里是直接取整的,后面剩下的我们没要直接舍去

但是-4*3=-12

就是说明我们的余数是2,被丢弃的那一部分是2

那么我们的-12+2=-10

那么-10%3=2

所以说负数取余数的话是有技巧的

就是-12< -10的相隔是2

3.字符串

概念:

字符串有三种定义方式:

1.单引号

2.双引号

3.三引号(三对单引号和三对双引号)

单引号和双引号使用时注意事项

python
Traceback (most recent call last):File "<pyshell#0>", line 1, in <module>python
NameError: name 'python' is not defined
#如果不加引号就是会报错的
'python'
'python'
"python "
'python '

如果我们在交互模式直接输入python这串字符的话,那么是肯定会报错的

我们需要将这串字符用引号包裹起来

如果我们不用引号括起来的,那么编译器就会以为这个是一个名称,就会检查我们这个名字有没有定义过,没有定义是一定会报错的

如果是文本数据的话,我们一定要用引号括起来的,不然是会报错的

英文和中文的引号是不一样的

我们需要的是英文版本的引号

我们利用type()来进行数据类型的判断,这里编译器输出的是str就是字符串

字符串类型的判断:

type('python')
<class 'str'>type("python")
<class 'str'>type('123')
<class 'str'>

单引号和双引号本质上是没有多大的区别的

我们在交互模式输入"python"和'python' 输出的结果都是'python'

引号是对应匹配的

单引号对单引号

双引号对双引号

单引号带来的错误:

'I'am fine
SyntaxError: invalid syntax
#我们如果是这么写的话那么就会报错的
#因为单引号和双引号是成双成对的进行配对的

对于这个单引号带来的错误

如果我们的句子里面已经有单引号的话,那么我们是需要用双引号进行括起来的

如果我们还是用单引号的话,那么因为匹配的问题我们后面的那个单引号就没有配对成功了,就会报错

所以我们是需要进行一个双引号的包裹的

"I'am fine"   #回车
"I'am fine"

双引号和双引号匹配成功,那么中间的内容就会被括起来的,那么我们编译器就将中间的内容进行输出

'this is "box"'
'this is "box"'

引号是成对出现的,就近匹配的

单包双,双包单

•单引号和双引号区分的原因:为了嵌套【引号里面还有引号】使用,如果有这种情况,需要使用两种不同的引号

三引号使用时注意事项

三引号 三对单引号 三对双引号

'''
dsad d
dfk
dsbfkj
dasdas 
'''
"""
dsad d
dfk
dsbfkj
dasdas 
"""

我们使用三对单引号的话我们是能够实现任意换行的

直接将大型的文本进行注释

包裹在三引号之内的我们能随意换行进行注释

只有三引号能实现换行的操作

单引号和双引号是不能实现这个操作的

字符串加号和星号

数字+数字---相加

字符串+字符串--拼接

字符串的+法使用:

#交互模式
'2'+'3'
'23'
2+3
5

字符1+字符1得到的就是11

就是相当于拼接

数字*数字---两个数字进行相乘

字符串*正整数---字符串重复多少次

字符串的*的使用:

'5201314'*6
'520131452013145201314520131452013145201314'

4.格式化

三种格式化

%格式化

语法:'格式化的字符串'%(填充的数据)

占位符:我们需要在字符串里面占一个位置,用于放后面填充的数据

三种占位符:%s字符串 %d整数 %f浮点数

print('你的成绩是%f'%(12.4))

通过字符串内的占位符,然后我们在字符串外面输入我们要填充的数字

对于%f的话我们这里默认是6位小数

如果我们是想进行小数位的控制的话,那么我们需要在%和f中间加上.n

保留几位小数,这个n就是几

设置小数位的方法:

#设置小数位
print('你的成绩是%f'%(12.4))#默认保留6位小数
print('你的成绩是%.2f'%(12.4))#我们将其设置为2位小数

设置长度,超过我们设置的长度我们就不进行处理

如果没有超过我们设置的长度的话,我们就进行填充处理

默认的话是填充空格的

我们可以使其填充的数字是0

一般是不填充符号类的

#编辑模式
print('%3d'%(1))
print('%d'%(1))
#交互模式1
1
#可见的区别
如何将不足长度的地方设置为0呢?
我们在%3d前面加上0
那么不满足长度的地方就会自动填充为0了

只有长度不够的时候才会进行填充的

我们在表达num1+num2的结果的时候我们也是能用占位符的

输出 数字+数字=和 的格式:

#编辑模式
num1=eval(input("请输入数据1:"))
num2=eval(input("请输入数据2:"))
##print(num1+num2)
#我们使用格式化进行表示最终的结果
print('%d'%(num1+num2))
print('%f+%f=%f'%(num1,num2,num1+num2))
#每个占位符和数据进行对应的#交互模式
请输入数据1:5
请输入数据2:6
11
5.000000+6.000000=11.000000

在这个表达式中对于%f那行代码的另一种写法

print('%s+%s=%s'%(num1,num2,num1+num2))
#我们直接将这个%f替换成%s就行了#交互模式
5+6=11

为什么我们能进行代码中这么交换呢?

就是我们将这个代码中三个占位符对应的数据先转换为字符串

然后在打印的时候我们就能通过print将引号去掉了

但是还是不建议这种写法

如果是写%f的话,我们在前面加上.n进行小数位的控制

'%d'%(数据)

foramt占位符

语法:'格式化的字符串'.format(填充数据)

一定要看清楚

format前面有个小数点,别忘了加

占位符:{}

设置小数位数::.nf---保留n位小数 这里是冒号+点+nf 冒号的作用就是区分数据和格式的

format使用方法:

#编辑模式
print('你的大小是{:.2f}'.format(12.4))
print('你的大小是{:03d}'.format(1))
#交互模式
你的大小是12.40
你的大小是001

一定要在花括号里面写冒号

输出 数字+数字=和 的格式

#编辑模式
num1=eval(input("请输入数据1:"))
num2=eval(input("请输入数据2:"))
print('{}+{}={}'.format(num1,num2,num1+num2))
#交互模式
请输入数据1:5
请输入数据2:5
5+5=10

'{:,nf}.format()'

f表达式

这里的f是format的缩写

占位符:{}

语法格式:f'{格式化的数据}'

保留n个小数:

#编辑模式
print(f'{1:.2f}')#打印1保留两位小数
#冒号的作用是分割数据和格式
#交互模式
1.00

'f{格式化的数据:,nf}'

设置数据长度,不足填充数据,超过不做处理

#编辑模式
print(f'{1:05d}')
#交互模式
00001

输出 数字+数字=和 的格式

#编辑模式
num1=eval(input("请输入数据1:"))
num2=eval(input("请输入数据2:"))
print(f'{num1}+{num2}={num1+num2}')print(f'{num1:03}+{num2:03}={num1+num2:03}')
#交互模式
请输入数据1:5
请输入数据2:6
5+6=11
005+006=011

对于花括号中的冒号的话,我们如果对数据有要求的话我们是能对其在冒号后面进行要求的

比如说在冒号后面加03d

如果没有要求的话我们是可以直接在花括号里面写个数据就行了

这三种方法中我感觉f表达式是最简单的格式化

小题目

1.键盘输入用户名,键盘输入密码,将用户名和密码信息进行格式化输出

格式为:'用户xxx你好,你的密码为xxx'

#编辑模式
name=input("请输入你的姓名")
code=input("请输入你的密码")
print('%s你好,你的密码是%s'%(name,code))
print('{}你好,你的密码是{}'.format(name ,code))
print(f'{name}你好,你的密码是{code}')
#交互模式
请输入你的姓名kyk
请输入你的密码666
kyk你好,你的密码是666
kyk你好,你的密码是666
kyk你好,你的密码是666

2.键盘输入用户电话,以及话费,用格式化进行输出了

tel=eval(input("请输入你的电话"))
money=eval(input("请输入话费"))
#因为我们这里输入的money是一个字符串,我们是不能对其小数位作调整的,不然是会报错的
#如果想要调整话费的小数点位的话,我们需要将我们输入的数据转换为浮点型
print(f'用户:{tel:013d},你这个月的话费为{money:.2f}')
#经过打印我们知道如果我们是字符串的话,长度不够的情况下,是在右边进行补空格的操作的
#那么我们将这个字符串类型进行改变,改成整形的话,那么填充的数字就是左边
#我们指定长度为13位,不满的话就填充0

关于不同类型对齐的知识

字符串在打印的时候长度不够的时候是在左边进行空格填充的操作的

整型就是在右边进行填充

那么我们如果进行数据在打印的时候的对齐方式呢?

我们可以在打印的时候使用对齐符

左对齐,右边填充<

右对齐,左边填充>

居中,两边填充^

那么是如何使用这三个符号呢?

字符串对齐符号的使用方式:

#字符串类型在右边填充,整形类型在左边填充
#设置填充数据的对齐方式----填充符   对齐方式   长度   ->      0<5    (长度为5,不足填充0,左对齐)
num=123
#左对齐<
print(f'{num:<5}')  #长度为5不足填充空格
print(f'{num:0<5}')#长度为5不足填充0
#右对齐>
print(f'{num:>5}')
#居中^
print(f'{num:0^5}')#左对齐就在右边填充0,右对齐就在左边填充0,数据居中对齐就是在两边填充0

填充符 对齐方式 长度 -> 0<5 (长度为5,不足填充0,左对齐)

这里是以f表达式为例子

5.变量

变量的命名以及赋值

变量是什么呢?

变量:可变的量,值是可以进行改变的

我们通过赋值符号“=”进行赋值

我们可以保存任意类型的数据

这个变量就相当于一个容器,这个容器是可以进行数据的存放的

我们能通过这个这个容易的名字进行数据的调用

定义格式:变量名=值

变量名:自己定义,我们需要遵循命名规则

值:数据

命名规则

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']
'''

6.变量的输出与输入

输出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了

就会报错了

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

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

相关文章

JavaWeb JavaScript ⑤ JS常见对象

某一瞬间&#xff0c;是平静的自我接纳 —— 24.8.27 一、数组 1.创建数组的四种方式 ① new Array() 创建空数组 ② new Array(5) 创建数组时给定长度 ③ new Array(ele1,ele2,…,elen); 创建数组时给定元素值 ④ [ele1,ele2,…,elen] 相当于…

【STM32单片机_(HAL库)】3-4-3【中断EXTI】【智能排队控制系统】排队系统代码框架搭建

3-4-2系统框图及硬件接线 3.软件 beep、exti、gate、LCD1602、led、tasks驱动文件添加GPIO常用函数中断配置流程main.c程序 #include "sys.h" #include "delay.h" #include "led.h" #include "tasks.h" #include "gate.h"…

腾讯浙大提出定制化视频生成框架CustomCrafter,只需通过少量图像就可以完成高质量视频生成!

腾讯联合浙大提出了一种定制化视频生成框架-CustomCrafter&#xff0c;它能够基于文本提示和参考图像生成自定义视频&#xff0c;同时保留运动生成和概念组合的能力。通过设计一系列灵活的模块&#xff0c;使得模型实现了无需额外视频&#xff0c;通过少量图像学习&#xff0c;…

嵌入式:用J-Link Commander和J-Flash进行Flash编程的区别

相关阅读 嵌入式https://blog.csdn.net/weixin_45791458/category_12768532.html?spm1001.2014.3001.5482 J-Link Commander和J-Flash都是用于Flash编程的工具&#xff0c;但它们的功能和应用场景有所不同。以下是两者的区别&#xff1a; J-Link Commander: 类型: 命令行工…

机械学习—零基础学习日志(如何理解概率论4)

当已知一个概率&#xff0c;求解另外一个函数的概率。以下是离散型的概率计算方法。 这里是连续型的&#xff0c;已知概念密度&#xff0c;计算对应的另外一个函数的概率。 这里需要求解对应的原始函数。 这里我们做一道练习题。 《概率论与数理统计期末不挂科|考研零基础入门…

什么是Redis大key问题?如何解决?

目录 Key多大算大呢&#xff1f; 识别big key 处理big key Big Key是Redis中存储了大量的数据的Key&#xff0c;不要误以为big key只是表示Key的值很大&#xff0c;他还包括这个Key对应的value占用空间很多的情况&#xff0c;通常在String、list、hash、set、zset等类型中出…

使用Vue创建cesium项目模版该如何选择?

目录 问题描述模版说明及选用建议小结 问题描述 刚入手这个项目&#xff0c;什么都是一知半解。使用Vue,创建Cesium项目的时候&#xff0c;提示需要选择一个模版&#xff08;如下图所示&#xff09;&#xff0c;该如何选择项目模版选&#xff0c;总结如下&#xff1a; 模版说明…

大模型入门到精通——Prompt Engineering工程

Prompt Engineering 1. Prompt Engineering 的意义 在 LLM&#xff08;大语言模型&#xff09;时代&#xff0c;Prompt Engineering&#xff08;提示工程&#xff09;已经成为开发者与用户的重要技能和概念。随着大模型&#xff08;如 GPT、GLM、BERT 等&#xff09;的快速发…

8.26DEBUG

线程负责监听和处理不同的需求 顾客&#xff1a;代表需要被监控的文件句柄或网络socket&#xff0c;他们可能有各种需求&#xff0c;如点餐&#xff08;发送数据&#xff09;、询问菜品状态&#xff08;读取数据&#xff09;或需要帮助&#xff08;异常处理&#xff09; 菜单…

数据结构(邓俊辉)学习笔记】串 05——KMP算法:理解next[]表

文章目录 1.快速移动2.避免回溯3.通配哨兵 1.快速移动 在接下来这节&#xff0c;就让我们从严格的意义上来理解 next 表的具体含义及其原理。 我们已经切实地看到&#xff0c; KMP 算法的优化效果首先体现在它可以使模式串得以快速地后移&#xff0c;而不是如蛮力算法那样只…

【STM32单片机_(HAL库)】3-4-4【中断EXTI】【智能排队控制系统】项目实现

3-4-2系统框图及硬件接线 3-4-3系统代码框架搭建 4.软件—tasks.c文件编写 排队控制系统状态机 tasks.c #include "tasks.h" #include "led.h" #include "beep.h" #include "exti.h" #include "lcd1602.h" #include &…

22. K8S及DevOps

22. K8S及DevOps 一. 章节简介二. DevOps1. 简介2. CICD三. Kubernetes[1. 官网](https://kubernetes.io/zh-cn/)--------------------------------------------------------------------------------------------------------一. 章节简介 二. DevOps 1. 简介 2. CICD

【C语言】文件操作 (详细!!)

1、为什么使用文件 使用文件的原因&#xff1a;使用文件主要是为了在程序的执行过程中保存、读取和交换数据。文件提供了一种持久化存储数据的方式&#xff0c;使得程序在关闭后&#xff0c;数据不会丢失&#xff0c;可以被其他程序或后续的程序执行周期重新读取和处理。 1.0 什…

Spring Boot启用GZIP压缩

1.为什么是需要gzip压缩&#xff1f; 经常我们都会与服务端进行大数据量的文本传输&#xff0c;例如 JSON 就是常见的一种格式。通过 REST API 接口进行 GET 和 POST 请求&#xff0c;可能会有大量的文本格式数据提交、返回。然后对于文本&#xff0c;它有很高的压缩率&#x…

神经网络——最大池化

1.Pooling Layers讲解&#xff1a; 最大池化有时也被称为下采样&#xff0c;对应的有上采样。注意ceil_mode参数的使用 2.代码实战&#xff1a; import torch from torch import nn from torch.nn import MaxPool2dinputtorch.tensor([[1,2,0,3,1],[0,1,2,3,1],[1,2,1,0,0],…

react 的学习随记

npx create-react-app my-app 创建一个名叫my-app的react的项目 npm run eject 运行 显示config 文件夹 react jsx &#xff08;使用时将babel 将jsx转为js&#xff09; 单页面时需要引用 1&#xff0c;样式&#xff08;在虚拟dom时&#xff09; 1. 引用样式时 用classNa…

ESP8266通过WiFiManager实现Web配网

背景 一个项目中使用到了一款压力传感器,需要通过单片机实现数据的采集并发送到远程的服务器上,单片机采用的时ESP8266,通过WiFiManager实现局域网配置,以及远端服务器IP地址和服务端口的配置。发布此文章记录一下使用WiFiManager实现配网的方法。 程序流程图 示例代码 …

NLP发展脉络-->特征优化阶段

NLP特征优化阶段 文本预处理特征提取降维与特征选择特征组合与扩展特征选择与评估特征工程的优化模型可解释性偏统计和规则的特征化阶段优缺点优点缺点 这是NLP的一个发展阶段。今天&#xff0c;我们就来了解一下NLP的特征优化阶段。特征优化在NLP的发展中曾经是一个至关重要的…

day-40 合并区间

思路 将二维数组按照第一列升序排列&#xff0c;把intervals[0][0]作为第一个区间的起点&#xff0c;将 intervals[0][1]和intervals[1][0]进行比较&#xff0c;如果intervals[0][1]<intervals[1][0]&#xff0c;则不能合并&#xff0c;否则可以合并&#xff0c;将Math.max(…

基于OpenCV+MFC的KCF测速软件

基于OpenCVMFC的KCF测速软件 引言原理介绍使用介绍&#xff08;1&#xff09;主界面&#xff08;2&#xff09;打开视频&#xff08;3&#xff09;点击KCF测速&#xff08;4&#xff09;框选待检测目标&#xff08;5&#xff09;测速结果 资源链接&#xff08;包含源码&#xf…