Python数据与变量、进制转换、输入输出函数、基本运算,基础语法编程练习
第一节 数据与变量
程序 = 数据 + 指令
1.1 内置基本数据类型
(1)数值型
整数(int):用于表示整数,注意一点Python中int数据可以存储任意大小整数,不会像其他语言(C\C++ Java)会存在整型溢出的问题
>>> print(1010101010101010101118923986192673987123 + 1)
1010101010101010101118923986192673987124
>>> print(99999999999999999*9999999999999999999999999)
999999999999999989999999900000000000000001
>>> print(12)
12
>>> print(0b1011) # 二进制
11
>>> print(0o123) # 八进制
83
>>> print(0x1A2B3C) # 十六进制
1715004
浮点数(float):用于表述小数,浮点数存在科学计数法,由于小数实际上用二进制存储的,可能会存在误差(如果要进行非常精确的小数运算时,浮点数就不适用)
>>> print(3.14)
3.14
>>> print(3.14e10)
31400000000.0
>>> print(3.14e-5)
3.14e-05
>>> print(3.14e-3)
0.00314
复数:由实部和虚部构成数字,a + bj
>>> 3 + 1j
(3+1j)
>>> 1 + 2j
(1+2j)
>>> (3 + 2j) * (2 - 3j)
(12-5j)
(2)布尔类型(bool)
只有两个值 True
和False
,常用于逻辑判断。Python中 True
表示真,False
表示假,但是从实际而言,就是用1和0来表示的。
>>> print(True + 1)
2
>>> print(False - 1)
-1
(3)字符串类型(str)
字符串是由零个或多个字符组成的不可变序列,可以使用单引号、双引号、三单引号、三双引号表示字符串。
字符串主要表现的是文本数据。
>>> print("123")
123
>>> print("123 + 123")
123 + 123
>>> print('''Hello'''')File "<stdin>", line 1print('''Hello'''') # 非法结束符错误^
SyntaxError: unterminated string literal (detected at line 1)
>>> print('''Hello''')
Hello
>>> print("""Hello""")
Hello
>>> print('Hello') # 单引号在C\C++ Java 表示字符数据 在Python一律当成字符串来处理
Hello
>>> print("") # 空串 没有字符的字符串
(4)空置类型
None
是Python中一个特殊值,表示空或者无意义。
>>> print(None)
None
>>> None + 1
Traceback (most recent call last):File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'
1.2 变量与数据类型
(1)变量的定义与赋值
变量,表示程序中临时存储数据的容器
在Python,变量是不需要声明类型的,直接赋值即就是创建变量,赋值用=
表示,把=
右边的结果赋值给左边
>>> age = 25 # int age = 25
>>> name = "张三" # 是第一次出现 创建变量
>>> name = "李四" # name已经有了 修改变量
>>> name
'李四'
(2)变量命名规则,标识符
就是给程序当中某些数据进行命名,自定义名称
- 变量名只能包含字母、数字、下划线,且不能以数字开头
- 变量名是区分大小写的,age、Age,AGE其实三个变量
- 不能使用Python的关键字作为变量名
(3)关键字
在Python语法当中,已经给一些单词赋予了特殊的含义,我们就不能随意使用了
以下是Python所有的关键字:
>>> import keyword
>>> 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 = 3.14File "<stdin>", line 1True = 3.14^^^^
SyntaxError: cannot assign to True
>>> if = 1File "<stdin>", line 1if = 1^
SyntaxError: invalid syntax
(4)标识符的命名规范
- 变量和函数的命名:变量和函数名称通常使用小写字母,单词之间用下划线分隔,蛇形命名法。
my_age
last_time
first_run()# 小驼峰写法 除了第一个单词首字母小写外 其他单词首字母都大写
myAge
lastTime
firstRun
- 类命名:大驼峰 所有单词的首字母大写
MyAge
YourBoyFriend
- 常量命名:所有的单词字母都大写,单词之间用下划线分隔
MAX_VALUE
SUM_OF_ARR
(5)内置函数名称也不要随便乱用
Python当中的变量由于没有类型的约束,所以存啥都可以,甚至是函数\类\对象
把内置函数的名称当成一个变量看待就行了
>>> print(1 + 2)
3
>>> num = print
>>> print = 1
>>> print + 1
2
>>> num(1 + 2)
3
(6)数据类型
可以使用内置函数type()
来去查看变量或数据的类型
>>> type(1)
<class 'int'>
>>> num = 1
>>> type(num)
<class 'int'>
>>> num = 3.14
>>> type(num)
<class 'float'>
>>> num = "Hello"
>>> type(num)
<class 'str'>
>>> num = True
>>> type(num)
<class 'bool'>
>>> num = 3 + 1j
>>> type(num)
<class 'complex'>
>>> num = None
>>> type(num)
<class 'NoneType'>
Python中的变量赋值是动态的,虽然很灵活,但是你得注意变量的运算
>>> num = 1
>>> num + 1
2
>>> num = "Hello"
>>> num + 1
Traceback (most recent call last):File "<stdin>", line 1, in <module>
TypeError: can only concatenate str (not "int") to str
(8)变量的多重赋值与交换
可以同时给多个变量进行赋值,也可以进行快速变量交换的问题
>>> a,b,c = 1,2,3 # 多重赋值
>>> a
1
>>> b
2
>>> c
3
>>> a = b = c = 3 # 链式赋值
>>> a
3
>>> b
3
>>> c
3>>> a = 3
>>> b = 10
>>> temp = a
>>> a = b
>>> b = temp
>>> a
10
>>> b
3>>> a,b = b,a
>>> a
3
>>> b
10
1.3 基本数据类型转换
在Python中,数据类型转换主要有两种,隐式转换,显式转换
(1)隐式转换
Python会在某些运算中自动进行数据类型转换,以保证运算的顺利进行,通常是将低精度的类型转为高精度的类型
>>> num = 1
>>> type(num)
<class 'int'>
>>> num = num + 3.14
>>> num
4.140000000000001 #正数+小数转换为精度高的小数
>>> type(num)
<class 'float'>
(2)显示转换
使用内置函数来操作
- 转为整数
>>> num = 3.9
>>> int(3.9) # 将小数转为整数 直接砍掉小数部分
3>>> num = "123"
>>> int(num) + 1 # 将数字字符串转为小数
124>>> num = "123abc" #默认转换为10进制,这里出现了abc所以报错
>>> int(num)
Traceback (most recent call last):File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '123abc' >>> int("1011",2) # 2指定字符串为二进制数字字符串来进行解析 -> 十进制
11>>> int("123",4)
27>>> int("1234",3) # 3和4 不属于三进制范围(0~2)
Traceback (most recent call last):File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 3: '1234'>>> int("jahsgdjkhvasaz123g213",36)
257879087050173629504097140435271>>> int("jahsgdjkhvasaz123g213",36)
257879087050173629504097140435271
最小二进制,最大三十六
>>> int("00000",1)
Traceback (most recent call last):File "<stdin>", line 1, in <module>
ValueError: int() base must be >= 2 and <= 36, or 0 (默认十进制)
>>> int("1",0)
1
>>> int("5",0)
5
- 转浮点数
>>> num = 1
>>> num = num + 0.0
>>> num
1.0
>>> num = 1
>>> float(num) # 整数转小数 加小数点.0
1.0>>> num = "3.14"
>>> float(num) # 小数字符串转小数
3.14
>>> float(num,2) # 不支持指定进制
Traceback (most recent call last):File "<stdin>", line 1, in <module>
TypeError: float expected at most 1 argument, got 2
- 转字符串
任意数据加str()函数一套即可
>>> num = 1
>>> str(num)
'1'
>>> num = 3.14
>>> str(num)
'3.14'
>>> num = True
>>> str(num)
'True'
#任何数据都可以转字符串
- 转换为布尔类型
以下数据转为布尔类型时为 False:0
、0.0
、None
、""
其他均为 True
>>> bool(0)
False
>>> bool(1)
True
>>> bool(-1)
True
第二节 进制转换
2.1 十进制与二进制互转
(1)十进制 转 二进制
将131转二进制
131 ÷ 2 = 65 mod 1
65 ÷ 2 = 32 mod 1
32 ÷ 2 = 16 mod 0
16 ÷ 2 = 8 mod 0
8 ÷ 2 = 4 mod 0
4 ÷ 2 = 2 mod 0
2 ÷ 2 = 1 mod 0
1 ÷ 2 = 0 mod 1
二进制为 10000011 余数从下往上
(2)二进制 转 十进制
将 10000011 转 十进制
1 × 20 + 1 × 21 + 0 × 22 + 0 × 23 + 0 × 24 + 0 × 25 + 0 × 26 + 1 × 27
1 + 2 + 128 = 131
(3)二进制特点规律
二进制 | 十进制 |
---|---|
0 | 0 |
1 | 1 |
10 | 2 |
11 | 3 |
100 | 4 |
101 | 5 |
110 | 6 |
111 | 7 |
1000 | 8 |
1010 | 2 + 8 = 10 |
一个二进制为 为bit 比特 表示两种数据 0 、1
8个bit 的二进制 10101101 为 1字节 byte (1b)
1kb = 1024b
1mb = 1024kb
1gb = 1024mb
1tb = 1024gb
2.2 十进制与八进制互转
(1)十进制 转 八进制
将 131 转 八进制
131 ÷ 8 = 16 mod 3
16 ÷ 8 = 2 mod 0
2 ÷ 8 = 0 mod 2
八进制为 203
(2)八进制 转 十进制
将八进制 203 转十进制
3 × 80 + 0 × 81 + 2 × 82
3 + 128 = 131
十进制 131
2.3 十进制与十六进制互转
0~9 A~F
(1)十进制 转 十六进制
444 ÷ 16 = 27 mod 12 (C)
27 ÷ 16 = 1 mod 11 (B)
1 ÷ 16 = 0 mod 1
十六进制为 1BC
(2)十六进制 转 十进制
十六进制的 1BC 转 十进制
12 × 160 + 11 × 161 + 1 × 162
12 + 176 + 256 = 444
十进制为 444
2.4 N进制与M进制互转
(1)通用思路
有一个 五进制 1024 转 七进制 以十进制为桥梁
五进制 转 十进制
4 × 50 + 2 × 51 + 0 × 52 + 1 × 53
4 + 10 + 125 = 139
十进制 转 七进制
139 ÷ 7 = 19 mod 6
19 ÷ 7 = 2 mod 5
2 ÷ 7 = 0 mod 2
七进制为 256
(2)特殊情况
如果是二进制、四进制、八进制、十六进制 之间相互转换的化
二进制 10101101 转 四进制 10-10-11-01 = 2231 反之亦然
二进制 10101101 转 八进制 010-101-101 = 255 反之亦然
二进制 10101101 转 十六进制 1010-1101 = AD 反之亦然
2.5 进制转换内置函数
(1)bin()函数
转二进制
num = 10
print(bin(num))
# 0b1010 字符串形式
(2)oct()函数
转八进制
num = 10
print(oct(num))
# 0o12 字符串形式
(3)hex()函数
转十六进制
num = 10
print(hex(num))
# 0xa 字符串形式
第三节 输入输出函数
3.1 print()函数详解
(1)基本用法
print() 函数主要用于将数据对象打印到控制台(默认,后续也可以将数据对象打印到文件中)
函数的原型:
print(*objects, sep = " ", end = "\n", file = sys.stdout, flush = False)
- *objects:就是要打印的数据对象,
*
可以存在打印多种数据对象 - sep = " ":指的就是数据之间的分隔符,默认为空格
- end = “\n”:指的是打印完数据之后,以那个字符串为结尾,默认为"\n" 换行
- file = sys.stdout:输出的文件,默认为控制台,了解即可
- flush = False : 是否强制刷新输出缓冲区,默认是 False,了解即可
print("Hello", "Python", "World", 123, 3.14)
# 输出:Hello Python World 123 3.14
print("Hello", "Python", "World", sep = "#")
# 输出:Hello#Python#World
print("Hello", "Python", "World", sep = "#", end = "妙妙屋")
print("Hello", "Python", "World", sep = "#", end = "米老鼠")
# 输出:Hello#Python#World妙妙屋Hello#Python#World米老鼠
(2)格式化输出
主要负责将变量和字符串进行拼接进行输出,同时也可以进行对齐、截取小数点等操作
旧式字符串格式化,它和C语言当中的输出很像 printf("有一个数字为:%d",num)
name = "张三"
age = 30
height = 1.8578901
print("我叫 %s,今年 %d 岁,身高 %.2f 米" % (name, age, height))
新式字符串格式化,使用 {}
作为占位符,通过format()
函数传入参数
name = "张三"
age = 30
height = 1.8578901
# {:.2} 存在四舍五入
# 位置参数
print("我叫 {} ,今年 {} 岁,身高 {:.2} 米".format(name, age, height))
# 关键字参数
print("我叫 {name} ,今年 {age} 岁,身高 {height:.2} 米".format(name = "李四", age = 18, height = 1.2789))
print("我叫 {name} ,今年 {age} 岁,身高 {height:.2} 米".format(name = name, age = age, height = height))
# 索引参数
print("我叫 {1} ,今年 {2} 岁, 身高 {0:.2f} 米".format(height, name, age))
f-字符串,就是在字符串之前加一个f 或 F,在 {}
中直接使用变量名即可
name = "张三"
age = 30
height = 1.8578901
print(f"我叫{name},今年{age}岁,身高{height:.2f}米")# 对齐操作
num = 123456
print(f'[{num:10}]') [ 123456] # 右对齐 宽度为10
print(f'[{num:>10}]') [ 123456] # 右对齐 宽度为10
print(f'[{num:<10}]') [123456 ] # 左对齐 宽度为10
print(f'[{num:^10}]') [ 123456 ] # 居中 宽度为10
3.2 input()函数详解
(1)基本用法
input()
函数的基本功能就是暂停程序的运行,等待用户输入一行数据,然后将用户输入的内容 作为字符串返回,意味着所有的输入内容 均为 字符串!
num = input()
# input(提示信息)
num = input("请输入一个数字:")
num = int(num)
print(type(num))# 可以一句话解决
num = int(input("请输入一个数字:"))
需要注意的是,输入的是字符串,后续该得需要将字符串转为所需要的数据类型
(2)多值输入处理
多值输入的第一个解法,一个一个输入
num1 = int(input("请输入第一个数字:"))
num2 = int(input("请输入第二个数字:"))
print(num1 + num2)
多值输入都在同行,得进行分割,用的是split(分割符)函数
# "1,2,3" => ["1" ,"2" ,"3"] => 数组
# 比较灵活 可以任意匹配分隔符
num1, num2, num3 = input("请输入三个数字:").split("#")
num1 = int(num1)
num2 = int(num2)
num3 = int(num3)
print(num1 + num2 + num3)
目前为止,每个数据都要进行转换,比较麻烦,可以使用 map()函数来进行统一的操作
num1, num2, num3 = map(int, input("请输入三个数字:").split(" "))
print(num1 + num2 + num3)
# map的含义是 把分割好的字符串们,统一进行 int 操作
(3)eval()函数(谨慎使用)
eval()
函数可以将字符串作为Python表达式进行求值。结合input()
函数使用,可以达到多值输入的目的。
# eval 可以将字符串转为Python代码 并执行了
num = eval("1 + 2 + 3")
print(num)
eval("print('hello world!')")# 输入的数据只能以英文的逗号 , 做分隔符
a, b, c = eval(input("请输入三个数字:"))
print(a + b + c)
为甚谨慎使用,因为它可以执行代码
# 输入 exit()
a, b, c = eval(input("请输入三个数字:"))
print(a + b + c)
3.3 初识异常处理
(1)异常概念
所谓的异常,就是在代码的编译期间和运行期间出现的一些错误,会导致程序终止运行。
异常处理的目的就是提前捕获可能出现的问题,再提供一些备选的方案,尽量让程序正常运行。
(2)try-except 语句
# 尝试 将可能出现问题的代码 写到 try语句中
try:num1 = int(input("请输入一个数字:"))num2 = int(input("请输入一个数字:"))print(num1 / num2)
# 捕获异常 可以针对不同的问题来进行不同的处理
except ValueError: print("输入数据错误")
except ZeroDivisionError:print("分母不能为0")
前期为了方便使用,可以不用捕获具体的异常错误
# 尝试 将可能出现问题的代码 写到 try语句中
try:num1 = int(input("请输入一个数字:"))num2 = int(input("请输入一个数字:"))print(num1 / num2)
# 捕获异常 可以针对不同的问题来进行不同的处理
except:print("输入数据错误")
(3)try-except-else 语句
try:num1 = int(input("请输入一个数字:"))num2 = int(input("请输入一个数字:"))print(num1 / num2)
except:print("输入数据错误")
else:print("没有发生异常,执行else的内容")
(4)try-except-finally 语句
try:num1 = int(input("请输入一个数字:"))num2 = int(input("请输入一个数字:"))print(num1 / num2)
# except 和 else 其实互斥的
except:print("输入数据错误")
else:print("没有异常,执行else")
# 绝对执行的
finally:# 一般是用于关闭资源、进程、其他占用内存的代码的print("不管有没有发生异常,都执行finally的内容")
第四节 基本运算
4.1 算数运算符
(1)加法运算符 +
- 如果是对两个数值类型进行加法,数学加法
- 如果是对两个序列类型进行加法,拼接
num1 = 3
num2 = 4
print(num1 + num2)
s1 = "Hello"
s2 = "迪丽热巴"
print(s1 + s2) # 拼接
print(num1 + s2) # TypeError: unsupported operand type(s) for +: 'int' and 'str'
(2)减法运算符 -
- 如果是对两个数值类型进行减法,数学减法
- 如果是对两个集合进行减法,求差集
num1 = 3
num2 = 4
print(num1 - num2)
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}
# 差集 set1中存在但set2中不存在的数据
print(set1 - set2)
print(set2 - set1)
(3)乘法运算符 *
- 如果是对两个数值类型进行乘法,数学乘法
- 如果是序列和数值类型,重复
num1 = 3
num2 = 4
print(num1 * num2)
s = "Hello"
print(s * 5)
print(s * s) # TypeError: can't multiply sequence by non-int of type 'str'
**(4)除法运算符 /
与 //
**
/
:除法运算,结果为小数//
:除法运算,结果为整数,商;如果存在小数,结果为整小数
print(3 / 2)
print(4 / 2)
print(3 // 2)
print(4 // 2)
print(4.0 // 2)
print(4 // 2.0)
print(4.2 // 2.2)
(5)取余运算符 %
就是求余数
print(10 % 3)
print(9 % 3)
(6)幂运算符 **
print(2 ** 3) # 2^3
print(16 ** 0.5) # 16开平方
注意,注意,注意
Python当中 不存在 ++ –
int i = 1;
i++;
4.2 位运算符
主要用于对整数进行二进制的运算
(1)按位与运算符 &
两个整数,对二进制为进行 与 运算;全真则真,有假则假
print(13 & 6)
"""
1101
0110 &
0100 = 4
"""
(2)按位或运算符 |
两个整数,对二进制为进行 或 运算;全假则假,有真则真
print(13 | 6)
"""
1101
0110 |
1111 = 15
"""
(3)按位异或运算符 ^
两个整数,对二进制为进行 异或 运算;相同为假,不同为真
print(13 ^ 6)
"""
1101
0110 ^
1011 = 11
"""
(4)按位取反运算符 ~
将二进制1变0,0变1。在Python中,整数是有符号的,结果 -(x + 1)
num = 13
"""
01101
~
10010 -16 + 2 = -14
"""
num = 21
print(bin(21))
"""
010101
~
101010 -32 + 8 + 2 = -22
"""
print(~num) # -22
(5)左移运算符 <<
就是给二进制右边加若干个0
num = 3
"""
11
<< 3
11000
"""
print(num << 3) # num * 2 ** 3
(6)右移运算符 >>
就是给二进制右边去掉若干个bit
num = 37
print(bin(num))
"""
100101
>> 3
100
"""
print(num >> 3) # num / (2 ** 3)
位运算的的主要应用场景:
(1)乘除:以2的次幂为目标
(2)图形计算:矩阵计算
(3)Linux权限
4.3 赋值运算符
n += 1 # n++n -= 1 # n--
(1)加法赋值运算符 +=
将变量的值加上右侧表达式的值,然后将结果重新赋给该变量。
num = 10
num += 4 # num = num + 4
print(num)
(2)减法赋值运算符 -=
将变量的值减去右侧表达式的值,然后将结果重新赋给该变量。
num = 10
num -= 4
print(num)
(3)乘法赋值运算符 *=
将变量的值乘以右侧表达式的值,然后将结果重新赋给该变量。对于字符串、列表等可迭代对象则是进行重复操作。
# 数字相乘
num = 6
num *= 2
print(num) # 字符串重复
str1 = "abc"
str1 *= 3
print(str1)
(4) 除法赋值运算符 /=
将变量的值除以右侧表达式的值,然后将结果(浮点数)重新赋给该变量。
num = 15
num /= 3
print(num)
(5)整除赋值运算符 //=
将变量的值除以右侧表达式的值,取整后将结果重新赋给该变量。
num = 15
num //= 4
print(num)
(6)取模赋值运算符 %=
将变量的值除以右侧表达式的值,取余数后将结果重新赋给该变量。
num = 15
num %= 4
print(num)
(7)幂赋值运算符 **=
将变量的值进行右侧表达式指定次幂的运算,然后将结果重新赋给该变量。
num = 2
num **= 3
print(num)
(8)按位与赋值运算符 &=
对变量和右侧表达式的值进行按位与运算,然后将结果重新赋给该变量。
a = 5 # 二进制: 0101
b = 3 # 二进制: 0011
a &= b
print(a) # 二进制: 0001,十进制: 1
(9)按位或赋值运算符 |=
对变量和右侧表达式的值进行按位或运算,然后将结果重新赋给该变量。
a = 5 # 二进制: 0101
b = 3 # 二进制: 0011
a |= b
print(a) # 二进制: 0111,十进制: 7
(10)按位异或赋值运算符 ^=
对变量和右侧表达式的值进行按位异或运算,然后将结果重新赋给该变量。
a = 5 # 二进制: 0101
b = 3 # 二进制: 0011
a ^= b
print(a) # 二进制: 0110,十进制: 6
(11)左移赋值运算符 <<=
将变量的值向左移动右侧表达式指定的位数,然后将结果重新赋给该变量。
num = 2 # 二进制: 0010
num <<= 2
print(num) # 二进制: 1000,十进制: 8
(12)右移赋值运算符 >>=
将变量的值向右移动右侧表达式指定的位数,然后将结果重新赋给该变量。
num = 8 # 二进制: 1000
num >>= 2
print(num) # 二进制: 0010,十进制: 2
第五节 【基础语法编程练习】
程序员的自我修养
(1)遇到一个编程问题,一定要仔细阅读题目,找出关键的数据和具体的操作流程。
(2)一定要先分析题目的求解过程,千万不要直接上来写代码开干。
(3)必须写注释,将求解的过程以注释的形式先列出来。
Python当中有单行注释,主要以#
开头,直到换行为止都为注释内容
# 这是一个注释内容
num = 3 # 定义一个变量 存储 整数 3
Python中其实没有对于多行注释的定义,但是我们可以使用三引号字符串的形式充当多行注释。
也可以看做是文档说明
"""
这是一个多行注释(文档说明 代码的说明书)
定义一个变量num存储整数3
打印这个变量
"""
num = 3
print(num)
# 提取文档注释中的内容
print(__doc__)
(4)对变量、函数、类起名时,一定要有意义,最好用英文单词、英文简写来表示,实在不行就拼音
(5)编码规范
- 遇到运算符的时候,记得给运算符的两边加空格
- 在序列或者多数据情况下,会用逗号
,
进行分割,逗号后面也加空格 - 由于Python中不用
{}
表示层级,而是用缩进来表示,所以一定要注意代码的从属问题,缩进最好用tab
键去写,不要用空格
练习01 摄氏温度转化为华氏温度
题目描述
输入一个摄氏温度的值,将它转变为华氏温度,并将结果输出
转换的公式为如下:
f a h r e n h e i t = ( 9 / 5 ) ∗ c e l s i u s + 32 fahrenheit=(9/5)*celsius+32 fahrenheit=(9/5)∗celsius+32
输入输出描述
输入一个值表示摄氏温度celsius
输出华氏温度fahrenheit ,结果保留一位小数点
示例
输入:
43
输出:
109.4
"""
数据:cel 摄氏度 fah 华氏度
操作:
1. 输入 cel
2. 根据提供的公式 计算 fah
3. 输出fah 保留一位小数点
"""
cel = float(input())
fah = (9 / 5) * cel + 32
print(f'{fah:.1f}')
练习02 计算圆柱体的体积
题目描述
输入圆柱的半径和高,并利用如下公式计算圆柱体的底面积和体积。
a r e a = r a d i u s ∗ r a d i u s ∗ π area=radius*radius*π area=radius∗radius∗π
v o l u m e = a r e a ∗ l e n g t h volume=area*length volume=area∗length
输入输出描述
分别输入圆柱的半径radius和高度length,两个数据之间用空格分隔
输出两行,第一行为圆柱底面积area,第二行为圆柱体积volume,结果保留两位小数点
示例
输入:
5.5 12
输出:
95.03
1140.41
import math
# 1.输入半径和高
radius, length = map(float, input().split(" "))
# 2.计算底面积
area = math.pi * radius ** 2
# 3.计算体积
volume = area * length
# 4.输出底面积和体积
print(f'{area:.2f}')
print(f'{volume:.2f}')
练习03 对一个整数中的各位数字求和
题目描述
读取一个0到1000之间的整数,并计算它各位数字之和
输入输出描述
输入一个(0,1000)之间的整数
输出该数字的各位数字之和
示例1
输入:
999
输出:
27
解释:
999各位数之和为9 + 9 + 9 = 27
示例2
输入:
12
输出:
3
"""
123 % 10 = 3
12 % 10 = 2
1 % 10 = 1
"""
try:# 1.输入一个[1,999]的数字num = int(input())
except:print("输入非法数据,必须1~999")
else:# 2.取个位数gewei = num % 10# 3.取十位数num //= 10shiwei = num % 10# 4.取百位数baiwei = num // 10# 5.相加result = gewei + shiwei + baiwei# 6.输出相加结果print(result)
练习04 计算三角形的面积
题目描述
输入三角形的三个顶点坐标,并计算其面积,计算公式如下
s = ( s i d e 1 + s i d e 2 + s i d e 3 ) / 2 a r e a = s ( s − s i d e 1 ) ( s − s i d e 2 ) ( s − s i d e 3 ) s=(side1+side2+side3)/2 \\ area = \sqrt{s(s-side1)(s-side2)(s-side3)} s=(side1+side2+side3)/2area=s(s−side1)(s−side2)(s−side3)
输入输出描述
输入六个数据,分别表示三角形三个顶点的坐标x1、y1、x2、y2、x3和y3,数据之间用空格分隔
输出三角形的面积,结果保留一位小数
示例
输入:
1.5 -3.4 4.6 5 9.5 -3.4
输出:
33.6
# 1.输入三个点的坐标
x1, y1, x2, y2, x3, y3 = map(float, input().split(" "))# 2.计算三边
side1 = ((x1 - x2) ** 2 + (y1 - y2) ** 2) ** 0.5
side2 = ((x1 - x3) ** 2 + (y1 - y3) ** 2) ** 0.5
side3 = ((x3 - x2) ** 2 + (y3 - y2) ** 2) ** 0.5# 3.计算半周长
s = (side1 + side2 + side3) / 2# 4.计算面积
area = pow(s * (s - side1) * (s - side2) * (s - side3), 0.5) # 5.输出面积
print(f'{area:.1f}')
练习05 显示当前时间
题目描述
输入你所在的时区,并输出当前的时间
输入输出描述
输入时区,如东八区为8,西五区为-5
输出二十四小时制的时间,格式为 时:分:秒
示例
输入:
8
输出:
21:43:12
import time
# 0.获取时区数字
zone = int(input())
# 返回的是UNIX时间点
# 从1970年1月1日 00:00:00 开始至今的秒数
# 1.获取所有的秒数
total_seconds = int(time.time())# 2.计算当前的秒数
current_seconds = total_seconds % 60# 3.计算所有的分钟数
total_minutes = total_seconds // 60# 4.计算当前的分钟数
current_minutes = total_minutes % 60# 5.计算所有的小时数
total_hours = total_minutes // 60# 6.计算当前的小时数
current_hours = total_hours % 24
current_hours = (current_hours + zone) % 24
# 7.拼接输出 hh:mm:ss
print(f'{current_hours}:{current_minutes}:{current_seconds}')
练习06 最小数量的硬币
题目描述
假设硬币种类分为:一元硬币、两角五分硬币、一角硬币、五分硬币、一分硬币
输入总金额,并将总金额兑换成若干个硬币,并保证所兑换的硬币个数最少
输入输出描述
输入总金额
输出每种硬币的个数
示例
输入:
11.56
输出:
11个一元硬币
2个两角五分硬币
0个一角硬币
1个五分硬币
1个一分硬币
# 1.输入总金额
money = float(input())# 2.换算成分
total_fen = int(money * 100)# 3.计算一元硬币个数 100分
yiyuan = total_fen // 100# 4.计算两角五分个数 25分
total_fen = total_fen % 100
liangjiaowufen = total_fen // 25# 5.计算一角个数 10分
total_fen = total_fen % 25
yijiao = total_fen // 10# 6.计算五分个数 5分
total_fen = total_fen % 10
wufen = total_fen // 5# 7.计算1分个数 1分
total_fen = total_fen % 5
yifen = total_fen# 8.输出
print(yiyuan)
print(liangjiaowufen)
print(yijiao)
print(wufen)
print(yifen)
相关文章:
Python数据与变量、进制转换、输入输出函数、基本运算,基础语法编程练习
第一节 数据与变量 程序 数据 指令 1.1 内置基本数据类型 (1)数值型 整数(int):用于表示整数,注意一点Python中int数据可以存储任意大小整数,不会像其他语言(C\C Java࿰…...
联邦学习(Federated Learning)
1. 概念 联邦学习(Federated Learning, FL)是一种分布式机器学习技术,它允许多个参与方(如设备、机构或企业)在不共享原始数据的情况下协同训练机器学习模型。联邦学习通过本地计算模型参数聚合的方式,保护…...
AI大模型核心原理(二)
一、人工智能的兴起。 1、前序。 艾伦麦席森图灵; 是计算机科学之父。 著名英国数学家、计算机科学家、逻辑学家和密码分析学家,被誉为计算机科学与人工智能之父。 阿兰・图灵(Alan Turing) 是译名(简称)…...
数据结构篇——线索二叉树
一、引入 遍历二叉树是按一定规则将二叉树结点排成线性序列,得到先序、中序或后序序列,本质是对非线性结构线性化,使结点(除首尾)在线性序列中有唯一前驱和后继;但以二叉链表作存储结构时,只能获…...
【蓝桥杯】742合唱队形(DP LIS)
思路 借这题复习一下LIS,实际上是LIS的升级版,求一个\/形或者/\行,用两次最长上升子串即可。 先从前往后求递增,再从后往前求递减。 先把满足要求的最长队形求出来,总人数减去队形人数就是要出列的数目。 code impo…...
MySQL二进制日志格式有哪几种
目录 一、二进制日志格式类型1. **STATEMENT 格式(SBR: Statement-Based Replication)**2. **ROW 格式(RBR: Row-Based Replication)**3. **MIXED 格式(混合模式)**二、二进制日志事件详解三、如何选择二进制日志格式?四、配置与查看二进制日志格式五、注意事项在 MySQL…...
VUE管理后台开发-vue-element-admin
# 克隆项目 git clone https://github.com/PanJiaChen/vue-element-admin.git # 进入项目目录 cd vue-element-admin # 安装依赖 npm install # 速度过慢可以使用下面方法进行指定下载镜像原 # 也可以使用nrm选择下载镜像原 # 建议不要用 cnpm 安装 会有各种诡异的bug 可以通…...
计算机网络原理
网络发展史 起初,计算机之间是相互独立的,分别完成不同的工作,效率较为低下.随着时代的发展,计算机开始协同完成任务,就有了网络互连.网络互连是指将多台计算机连接在一起,完成数据共享.根据网络互联的规模不同,可以划分为局域网和广域网.局域网,简称LAN.局域网内的主机可以互相…...
速盾:如何利用CDN静态加速匹配尾缀提升网站性能?
在当前数字化时代,网站性能对于用户体验至关重要。尤其是对于包含大量静态资源(如图片、CSS、JavaScript文件等)的网站来说,如何高效地管理和加速这些资源成为了一个重要课题。本文将介绍如何利用CDN静态加速匹配尾缀的方法来提升…...
【H2O2 | 软件开发】前端深拷贝的实现
目录 前言 开篇语 准备工作 正文 概述 JSON方法 递归 其他 结束语 前言 开篇语 本系列为短篇,每次讲述少量知识点,无需一次性灌输太多的新知识点。该主题文章主要是围绕前端、全栈开发相关面试常见问题撰写的,希望对诸位有所帮助。…...
C#语法基础总结
输入和输出 输入 Console.Read(); 从屏幕读取一个字符,并返回该字符所对应的整型数字 Console.ReadLine(); 从屏幕读取一串字符,并返回该字符串 输出 Console.WriteLine(); 输出内容,并换行 Console.Write(); 输出内容,不换行…...
《深度学习》—— 模型部署
文章目录 模型部署模型准备选择部署平台部署配置与服务化测试与验证优化与维护常用工具与框架Flask本地部署模型 模型部署 模型部署是将训练好的机器学习或深度学习模型投入实际生产环境,使其能够处理实时数据并提供预测或推理服务的过程。 模型准备 模型格式转换…...
E902基于bash与VCS的仿真环境建立
网上看见很多E902仿真的文章,但用到的编译器是类似于这种Xuantie-900-gcc-elf-newlib-x86_64-V3.0.1-20241120,而我按照相应的步骤与对应的编译器,仿真总会报错。后面将编译器换成riscv64-elf-x86_64-20210512,反而成功了。现在开…...
挖矿------获取以太坊测试币
文章目录 挖矿------获取以太坊测试币通过水龙头获取以太坊测试币了解Sepolia是什么?水龙头(Faucet)是什么?Gitcoin Passport是什么? 操作1.MetaMask钱包2.将MetaMask切换到Sepolia测试网络3.用MetaMask连接Gitcoin Pa…...
MySQL事务详解:从理论到实践,保障数据一致性
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、为什么需要事务?二、事务的四大特性(ACID)三、MySQL事务的使用方法1. 基本语法2. 自动提交的设置3. 保存点(…...
在家用台式机上部署 DeepSeek-R1:低成本高性能的 CPU 推理方案---不到 4 万元
近年来,随着大模型技术的飞速发展,开源模型如 DeepSeek-R1 的出现为技术爱好者提供了更多探索人工智能的机会。然而,这类模型动辄数百亿参数,传统意义上需要昂贵的 GPU 集群才能运行,让许多个人开发者望而却步。最近,腾讯玄武实验室基于 CPU 的硬件方案优化,成功将 Deep…...
神经网络量化3-全连接层实现量化
本节,我们模拟下全连接层实现量化,原理上为了方便计算,全连接矩阵采用动态量化的方法,而输入由于不断在变化,我们采用静态量化的方法,直接给出代码: import torch import numpy as np import m…...
12 File文件对象:创建、获取基本信息、遍历文件夹、查找文件;字符集的编解码 (黑马Java视频笔记)
文章目录 File >> 存储数据的方案1. 认识File2. File操作2.1 创建File对象2.2 File操作1)对文件对象的信息的操作2)文件/文件夹的创建/删除3)⭐⭐对文件夹的遍历 3. 方法递归3.1 认识递归3.2 递归算法及其执行流程1) 案例:2…...
【软件工程】03_软件需求分析
3.1 系统分析 1. 系统分析概述 系统分析是一组统称为计算机系统工程的活动。它着眼于所有的系统元素,而非仅仅局限于软件。系统分析主要探索软件项目的目标、市场预期、主要的技术指标等,其目的在于帮助决策者做出是否进行软件项目立项的决定。 2. 可行性分析(Feasibility …...
词向量+位置编码=语义+语序?Transformer如何让相加操作不丢失原意?
在Transformer模型中,词向量(Token Embedding)和位置编码(Position Encoding)通过相加的方式结合,而模型能够同时保留词本身的语义信息和位置信息,这主要得益于以下机制: 为什么相加…...
Spring(7)——MyBatis入门(1)
一、MyBatis入门 1.1 什么是MyBatis MyBatis是一款优秀的持久层框架,用于简化JDBC的开发。 1.2 如何操作MyBatis 在application.properties进行配置 #驱动类名称 spring.datasource.driver-class-namecom.mysql.cj.jdbc.Driver #数据库连接的url spring.datasou…...
C语言文件操作入门
本节重点 理解文件的形式与基本概念二进制文件与文本文件文件的打开与关闭文件读写函数、文件缓冲区 正文开始--------------------------------------------------------------------------------------------------------------------- 一、为什么使用文件 程序运行时数据存…...
Java返回多个参数的方法
背景 在写代码的过程中,因有一些复杂的业务逻辑,需要返回多个结果。比如:需要增加一个true或者false,另外在加一个真正的结果值这样的类型。可能会有人用到数组以及Map等作为结果返回,当然这样确实是可以完成这样的功…...
微软开源神器OmniParser V2.0 介绍
微软开源的OmniParser V2.0是一款基于纯视觉技术的GUI智能体解析工具,旨在将用户界面(UI)截图转换为结构化数据,从而实现对计算机屏幕上的可交互元素的高效识别和操控。这一工具通过结合先进的视觉解析技术和大型语言模型…...
Java基础关键_023_IO流(一)
目 录 一、概述 二、分类 1.根据数据流向 2.根据读写数据形式 3.根据流在 IO 操作中的作用和实现方式 三、FileInputStream 1.说明 2.常用方法 (1)read() (2)read(byte[] b) (3)read(byte[] b, …...
Lora 中 怎么 实现 矩阵压缩
Lora 中 怎么 实现 矩阵压缩 1. 导入必要的库 import torch import re from datasets import Dataset from transformers import AutoTokenizer, AutoModelForCausalLM, TrainingArguments, Trainer, \get_cosine_schedule_with_warmup, EarlyStoppingCallback from peft...
lombok不起作用
xml <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.32</version> <scope>provided</scope> </dependency> - **作用**:引入 L…...
【实战ES】实战 Elasticsearch:快速上手与深度实践-附录-1-常用命令速查表-集群健康检查、索引生命周期管理、故障诊断命令
👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 附录-常用命令速查表 1-Elasticsearch 运维命令速查表(集群健康检查、ILM管理、故障诊断)一、集群健康检查与监控1.1 集群健康状态核心命令1.2 节点级健康诊断…...
探讨Deveco Studio常见问题及解决方案,分享快速排障方法
以下是针对 DevEco Studio 开发工具的常见问题、解决方案及快速排障方法,覆盖环境配置、编译运行、调试等多个环节,助您高效解决开发中的“拦路虎”。 一、环境配置问题 1. 安装失败或卡顿 现象: 安装时进度条卡住,或提示“Faile…...
Spring设计模式 八股速记 高层模块底层模块 依赖倒置原则 开闭原则 接口隔离原则
目录 高层模块底层模块 一、定义与核心思想 二、实现方式 三、优点与价值 四、典型应用场景 五、与其他原则的关系 示例说明 依赖倒置原则 一、定义与核心思想 二、实现方式 三、优点与价值 四、典型应用场景 五、与其他原则的关系 示例说明 自己理解 开闭原则 …...
RISCV虚拟化环境搭建
概要 本文记搭建 RISCV 虚拟化环境的流程。 整体架构 我们使用 QEMU 来模拟 RISCV 的各种硬件扩展环境,通过 QEMU 启动 Ubuntu 作为我们的 Host 来在 Host 之中通过 KVMTOOL 来运行 Guest,学习 RISCV 的虚拟化。 目前我的 X86_64 主机使用的是 Ubunt…...
数据结构——串、数组和广义表
串、数组和广义表 1. 串 1.1 串的定义 串(string)是由零个或多个字符组成的有限序列。一般记为 S a 1 a 2 . . . a n ( n ≥ 0 ) Sa_1a_2...a_n(n\geq0) Sa1a2...an(n≥0) 其中,S是串名,单引号括起来的字符序列是串的值, a i a_i a…...
vue3 elementUi table自由渲染组件
文章目录 前言CustomTable如何使用tableColumn 属性h函数创建原生元素创建组件动态生成 前言 elementui中的table组件,表格中想要自由地渲染内容,是一种比较麻烦的事情,比如你表格中想要某一列插入一个button按钮,是不是要用插槽…...
Centos离线安装gcc
文章目录 Centos离线安装gcc1. gcc是什么?2. gcc下载地址3. gcc的安装4. 安装结果验证 Centos离线安装gcc 1. gcc是什么? GCC(GNU Compiler Collection)是 GNU 项目下的开源编译器套件,主要用于将 C、C 等编程语言的源…...
odbus TCP转Modbus RTU网关快速配置案例
Modbus TCP 转Modbus RTU网关快速配置案例 在工业自动化领域,Modbus 协议以其简洁和高效而著称,成为众多设备通信的首选。 随着技术的发展和应用场景的变化,Modbus 协议也发展出了不同的版本,其中 Modbus TCP 和 Modbus RTU 是两种…...
Unity3D开发AI桌面精灵/宠物系列 【一】 窗口透明化 背景剔除 、去边框、去Logo动画UI正常显示
Unity3D 交互式AI桌面宠物开发系列【一】 文章主要介绍怎么制作AI桌面宠物的流程,我会从项目开始创建初期到最终可以和AI宠物进行交互为止,项目已经开发完成,我会仔细梳理一下流程,分步讲解。 这篇文章主要讲初期一些设置和部署。…...
Vue 自定义指令深度解析与应用实践
文章目录 1. 自定义指令概述1.1 核心概念1.2 指令生命周期 2. 自定义指令基础2.1 指令注册2.2 指令使用 3. 指令钩子函数详解3.1 钩子函数参数3.2 钩子函数示例 4. 自定义指令应用场景4.1 表单自动聚焦4.2 权限控制4.3 图片懒加载 5. 高级应用技巧5.1 动态指令参数5.2 指令修饰…...
基于SpringBoot+Vue的幼儿园管理系统+LW示例参考
1.项目介绍 系统角色:管理员、教师、普通用户功能模块:用户管理、教师管理、班级管理、幼儿信息管理、会议记录管理、待办事项、职工考核、请假信息、缴费信息、体检管理、资源管理、原料管理、菜品信息管理等技术选型:SpringBoot࿰…...
超级课程表项目结尾
L3-17-05-main.py def __init__(self):app QApplication([])self.window QMainWindow()self.window.setWindowTitle("超级课程表")cusWidget CourseWidget()self.window.setCentralWidget(cusWidget)self.showCourse()self.showNotes()# 1. 创建菜单栏self.menuba…...
Spring Retry
1. Spring Retry 的工作原理 内部机制 Spring Retry 主要通过 AOP(面向切面编程)实现重试逻辑。以下是 Spring Retry 的内部工作流程: AOP 拦截器:当一个方法被标记为需要重试,并且该方法抛出了指定类型的异常时&am…...
16.使用读写包操作Excel文件:XlsxWriter 包
一 XlsxWriter 的介绍 XlsxWriter 只能写入 Excel 文件。 OpenPyXL 和 XlsxWriter 的区别在笔记 15 。 二 如何使用 XlsxWriter 1.导包 import datetime as dtimport xlsxwriterimport excel 2.实例化工作簿 book xlsxwriter.Workbook("xlxswriter.xlsx") book.clo…...
【最新版】智慧小区物业管理小程序源码+uniapp全开源
一.系统介绍 智慧小区物业管理小程序,包含小区物业缴费、房产管理、在线报修、业主活动报名、在线商城等功能。为物业量身打造的智慧小区运营管理系统,贴合物业工作场景,轻松提高物业费用收缴率,更有功能模块个性化组合,助力物业节约成本高效运营。 二.搭建环境 系统环…...
音视频入门基础:RTP专题(18)——FFmpeg源码中,获取RTP的音频信息的实现(上)
由于本文篇幅较长,分为上、下两篇。 一、引言 通过FFmpeg命令可以获取到SDP描述的RTP流的的音频压缩编码格式、音频压缩编码格式的profile、音频采样率、通道数信息: ffmpeg -protocol_whitelist "file,rtp,udp" -i XXX.sdp 而由《音视频入门…...
基于SpringBoot+Vue的驾校预约管理系统+LW示例参考
1.项目介绍 系统角色:管理员、普通用户、教练功能模块:用户管理、管理员管理、教练管理、教练预约管理、车辆管理、车辆预约管理、论坛管理、基础数据管理等技术选型:SpringBoot,Vue等测试环境:idea2024,j…...
基于k3s部署Nginx、MySQL、PHP和Redis的详细教程
先决条件 一台Linux服务器(或本地虚拟机),建议Ubuntu/CentOS基础命令行操作能力确保服务器有至少2GB内存和10GB磁盘空间 1. 安装k3s(极简Kubernetes) 1.1 一键安装 # 用root用户或sudo权限执行以下命令 curl -sfL h…...
21.多态
一、多态概念 多种形态。 静态多态:编译时多态。(函数重载) 动态多态:运行时多态。(继承关系下,调用父类指针或引用,对于不同的对象有不同的行为) 二、多态的定义及实现 1ÿ…...
无再暴露源站!群联AI云防护IP隐匿方案+防绕过实战
一、IP隐藏的核心原理 群联AI云防护通过三层架构实现源站IP深度隐藏: 流量入口层:用户访问域名解析至高防CNAME节点(如ai-protect.example.com)智能调度层:基于AI模型动态分配清洗节点,实时更新节点IP池回…...
新版AndroidStudio / IDEA上传项目到Gitee
目录 1.Gitee创建仓库 2.填写仓库的信息 3.创建成功后复制仓库的地址 4.检查AndroidStudio是否配置Git 5.点击测试 6.之后Create Git Repository 7.添加到本地仓库 8.提交项目 9.添加上传仓库的地址 10.上传成功 11.去Gitee上刷新检查 1.Gitee创建仓库 2.填写仓库的…...
学习threejs,使用MeshFaceMaterial面材质容器
👨⚕️ 主页: gis分享者 👨⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.MeshFaceMaterial 二…...
python微分方程求解,分别用显式欧拉方法、梯形法、改进欧拉方法、二阶龙格库塔方法、四阶龙格库塔方法求解微分方程
微分方程在自然科学、工程技术、社会科学等多个领域都有着广泛而重要的应用。而求解微分方程是数学与应用数据领域一大难题,对于一些复杂的微分方程无法通过计算推导计算其精确的方程表达式与 结果,因此,我们通过数学理论。迭代,微…...