一、实验目的:
(1)掌握python数字类型的使用方法
(2)掌握将数学表达式转换成python语言表达式的方法及注意
(3)掌握有关运算符号的特殊要求
(4)掌握输入、输出函数的使用方法
(5)掌握格式字符串的使用方法
(6)掌握使用格式字符串进行数制转换的方法
二、实验环境
内部预装Windows 7或更高版本的操作系统,并集成安装了Python 3.7的IDLE开发环境,为您提供便捷高效的编程体验。
三、实验内容:
1、输出整数500的浮点数、二进制数、八进制数和十六进制数。
2、编写程序求多项式ax3+bx2+c的值(a=2,b=3,c=4,x=1.414)
3、编写程序求下列复合赋值后a的值,并输出a=2;a+=a;a-=2;a=a*2+3;a//=a+a;
4、编写程序求表达式3.5+(9/2*(3.5+6.7)/2)%4
5、a=3,b=4a,c=5,x=1.414,y=1,732,z=2.712,编写程序,要求按以下格式输出 a=3 b=4 c=5 x=1.414 y=1.732 z=2.712
6、编写程序,将十进制数20、64、127分别转换为八进制数和十六进制数,并输出
7、编写程序,计算并输出1/3的小数值,保留6位小数且带%(如:0;333333%)
扩展:整数的拆分。从键盘任意输入一个3位正整数num,拆分出个位、十位和百位数字,并输出。
四、实验步骤与结果:
1. 新建文件夹并命名。
2. 安装 Python 解释器Python 3.7 集成开发环境IDLE,并进入IDLE。
3. 依次执行编好的程序实验内容源程序,分别命名为sy1_1.py - sy1_7.py 并保存至已建好的文件夹中。
4. 检查已输入的程序是否有错(包括输入时输错的和编程中的错误),如发现有错,及时改正。
5. 运行程序并分析运行结果是否合理。在运行时要注意当输入不同的数据时所得结果是否正确,应测试两组以上数据,分别检查在不同情况下结果是否正确。
4.1 输出整数500的浮点数、二进制数、八进制数和十六进制数。
在Python中,可以使用内置的float(), bin(), oct(), 和 hex() 函数来将整数转换为浮点数、二进制数、八进制数和十六进制数。下面是如何实现这一点的示例代码:
# 整数500 integer_value = 500 # 转换为浮点数 float_value = float(integer_value) print(f"浮点数: {float_value}") # 转换为二进制数 binary_value = bin(integer_value) print(f"二进制数: {binary_value}") # 转换为八进制数 octal_value = oct(integer_value) print(f"八进制数: {octal_value}") # 转换为十六进制数 hexadecimal_value = hex(integer_value) print(f"十六进制数: {hexadecimal_value}")
当你运行这段代码时,它会输出以下结果:
注意:bin(), oct(), 和 hex() 函数返回的字符串是以"0b", "0o", 和 "0x"为前缀的,分别表示二进制、八进制和十六进制数。如果你想要去除这些前缀,可以使用字符串切片或lstrip()方法:
# 整数500 integer_value = 500 # 转换为浮点数 float_value = float(integer_value) print(f"浮点数: {float_value}") # 转换为二进制数并去除前缀 binary_value = bin(integer_value)[2:] print(f"去除前缀的二进制数: {binary_value}") # 转换为八进制数并去除前缀 octal_value = oct(integer_value)[2:] print(f"去除前缀的八进制数: {octal_value}") # 转换为十六进制数并去除前缀 hexadecimal_value = hex(integer_value)[2:] print(f"去除前缀的十六进制数: {hexadecimal_value}")
当你运行这段代码时,它会输出以下结果:
2.2 编写程序求多项式ax3+bx2+c的值(a=2,b=3,c=4,x=1.414)
以下是一个简单的Python程序,用于计算多项式 ax^3 + bx^2 + c 的值,其中 a=2, b=3, c=4, x=1.414
这个程序首先定义了多项式中的系数和x的值,然后使用这些值来计算多项式的值,并将结果存储在result变量中。最后,它使用print函数输出计算结果。
# 定义多项式中的系数和x的值 a = 2 b = 3 c = 4 x = 1.414 # 计算多项式的值 result = a * x**3 + b * x**2 + c # 输出结果 print(f"多项式的值为:{result}")
当你运行这段代码时,它会输出以下结果:
2.3 编写程序求下列复合赋值后a的值,并输出a=2;a+=a;a-=2;a=a*2+3;a//=a+a;
在Python中,复合赋值语句如 +=, -=, *=, //= 等可以简化变量的赋值操作。这些复合赋值语句分别表示加法赋值、减法赋值、乘法赋值和整除赋值。
给定的复合赋值语句序列如下:
a = 2;
a += a;
a -= 2;
a = a * 2 + 3;
a //= a + a;
下面是Python实现这些复合赋值语句并输出最终a的值的代码:
# 初始化变量a a = 2 # 执行复合赋值语句 a += a # a = a + a a -= 2 # a = a - 2 a = a * 2 + 3 # a = a * 2 + 3 a //= a + a # a = a // (a + a) # 输出变量a的值 print(f"最终a的值为:{a}")
当你运行这段代码时,它会输出以下结果:
当你运行这段代码时,它会按照给定的复合赋值语句序列执行,并输出最终a的值。
注意:最后一个复合赋值语句 a //= a + a 使用了整除赋值(//=),它表示 a 会被更新为其自身除以 a + a 的商(整数部分)。这可能会导致a的值变成一个较小的整数,具体取决于之前步骤中a的值。
2.4 编写程序求表达式3.5+(9/2*(3.5+6.7)/2)%4
这段代码首先计算括号内的部分 (3.5 + 6.7),然后将结果乘以 9 / 2,接着将结果再除以 2,最后对结果进行取模运算 % 4。最后,将上述结果加到 3.5 上,并打印出最终的结果。
1. result = 3.5 + (9 / 2 * (3.5 + 6.7) / 2) % 4 2. print(result)
当你运行这段代码时,它会输出以下结果:
2.5 a=3,b=4a,c=5,x=1.414,y=1,732,z=2.712,编写程序,要求按以下格式输出 a=3 b=4 c=5 x=1.414 y=1.732 z=2.712
在Python中,你可以创建一个程序来声明这些变量并按照指定的格式输出它们的值。以下是一个简单的实现:
# 定义变量 a = 3 b = 4 * a c = 5 x = 1.414 y = 1.732 z = 2.712 # 格式化输出 print(f"a={a:<10}b={b:<10}c={c:<10}") print(f"x={x:<10.4f}y={y:<10.4f}z={z:<10.4f}")
在这个程序中,我们使用了f-string(格式化字符串文字)来定义输出格式。< 是一个对齐修饰符,它表示左对齐,10 定义了字段宽度为10个字符。对于浮点数 x, y, 和 z,我们使用了 .4f 来指定输出小数点后四位。
当你运行这段代码时,它会输出以下结果:
注意:由于浮点数的小数位数和表示可能会因计算机和Python解释器的实现而略有不同,输出可能会有些许差异,但通常这些差异是微不足道的,并且不影响结果的正确性。如果你需要确保输出的小数位数完全一致,你可以使用 round 函数来四舍五入到指定的小数位数。
2.6 编写程序,将十进制数20、64、127分别转换为八进制数和十六进制数,并输出
在Python中,你可以使用内置的oct()和hex()函数来将十进制数转换为八进制和十六进制数。以下是一个简单的程序,它将十进制数20、64、127转换为八进制和十六进制数,并输出它们:
# 定义要转换的十进制数 decimal_numbers = [20, 64, 127] # 遍历十进制数列表 for decimal in decimal_numbers: # 转换为八进制并移除前面的'0o' octal = oct(decimal)[2:] # 转换为十六进制并移除前面的'0x' hexadecimal = hex(decimal)[2:] # 输出结果 print(f"十进制数 {decimal} 转换为八进制是 {octal}, 转换为十六进制是 {hexadecimal}")
在输出中,oct()函数返回的字符串以'0o'开头,表示这是一个八进制数;hex()函数返回的字符串以'0x'开头,表示这是一个十六进制数。我们使用了切片操作[2:]来移除这些前缀,只保留转换后的数字部分。
当你运行这段代码时,它会输出以下结果:
2.7 编写程序,计算并输出1/3的小数值,保留6位小数且带%(如:0;333333%)
在Python中,你可以使用格式化字符串来得到带有固定小数位数和百分比的输出。以下是一个简单的程序,计算1/3的小数值,并保留6位小数且带百分号:
# 计算1/3的小数值 decimal_value = 1 / 3 # 将小数转换为百分比,并保留6位小数 percentage = "{:.6%}".format(decimal_value) # 输出结果 print(percentage)
当你运行这段代码时,它会输出以下结果:
扩展
整数的拆分。从键盘任意输入一个3位正整数num,拆分出个位、十位和百位数字,并输出。
使用Python来实现这个任务。以下是一个简单的程序,它接受一个3位正整数作为输入,然后拆分出个位、十位和百位数字,并输出它们。
# 获取用户输入的3位正整数 num = int(input("请输入一个3位正整数:")) # 确保输入的是3位正整数 if 100 <= num <= 999: # 拆分数字 units = num % 10 # 个位数字 tens = (num // 10) % 10 # 十位数字 hundreds = num // 100 # 百位数字 # 输出结果 print(f"个位数字是:{units}") print(f"十位数字是:{tens}") print(f"百位数字是:{hundreds}") else: print("输入错误,请输入一个3位正整数。")
当你运行这个程序时,它会提示你输入一个3位正整数。输入后,它会拆分这个数字并输出个位、十位和百位上的数字。
例如,如果你输入数字123,输出将会是:
五、总结:
5.1 实验过程中的问题及解决方法:
1.使用 float() 函数时的问题
问题:尝试将一个非数字字符串转换为浮点数。
解决方法:在尝试转换之前,使用try-except块捕获ValueError异常,以确保输入是有效的数字字符串。
2.使用 bin(), oct(), 和 hex() 函数时的问题
问题:这些函数只能接受整数作为输入,如果传入非整数类型,会抛出TypeError。
解决方法:确保你传递给这些函数的值是整数类型。如果值可能是其他类型,可以先使用int()函数进行转换。
5.2 实验收获
1.转换类型的深入理解
通过实践,我深入理解了这些函数如何将整数转换为浮点数、二进制、八进制和十六进制数。这加深了我对Python数据类型转换的认识,也提升了我处理不同类型数据的能力。
2. 错误处理的重要性
在实验中,我遇到了类型转换失败的情况,例如尝试将非数字字符串转换为浮点数或尝试将非整数类型转换为二进制、八进制和十六进制数。通过使用try-except块捕获异常,我学会了如何优雅地处理这些错误情况,提高了代码的健壮性。
3. 格式化输出的技巧
实验中,我了解到bin(), oct(), 和 hex()函数返回的字符串可能不包含足够的前导零,这影响了输出的可读性。通过使用字符串格式化,我学会了如何控制输出的格式,确保输出的字符串具有固定长度和适当的前导零。
4. 扩展应用的可能性
通过本次实验,我不仅掌握了基本的类型转换技巧,还思考了这些函数在更复杂场景中的应用。例如,在处理二进制数据时,我可以使用bin()函数来查看整数的二进制表示;在调试或分析内存占用时,我可以使用hex()函数来查看内存地址的十六进制表示。
5. 编程实践和问题解决能力的提升
通过动手实验,我不仅巩固了理论知识,还提升了自己的编程实践能力和问题解决能力。在遇到问题时,我学会了如何分析问题的原因,寻找解决方案,并通过实践验证解决方案的有效性。