实验1 Python开发环境使用和编程初体验

实验任务1

1.print输出的几种用法

# 用法1:用于输出单个字符串或单个变量
print('hey, u')
# 用法2: 用于输出多个数据项,用逗号分隔
print('hey', ' u')
x,y,z = 1,2,3
print(x, y, z)
# 用法3: 用户混合字符串和变量值
print('x = %d, y = %d, z = %d' %(x,y,z)) # 方式1: 传统c风格
print('x = {}, y = {}, z = {}'.format(x,y,z)) # 方式2: s.format()方法
print(f'x = {x}, y = {y}, z = {z}') # 方式3: f-string方式
# 其它: 输出后是否换行
print(x) # 默认输出后换一行
print(y)
print(z)
print(x, end=' ') # 输出结束后,不换行;通过end指定数据项之间的分隔符
print(y, end=' ')
print(z)
 # 用法1:用于输出单个字符串或单个变量
print('hey, u')
# 用法2: 用于输出多个数据项,用逗号分隔
print('hey', ' u')
x,y,z = 1,2,3
print(x, y, z)
# 用法3: 用户混合字符串和变量值
print('x = %d, y = %d, z = %d' %(x,y,z)) # 方式1: 传统c风格
print('x = {}, y = {}, z = {}'.format(x,y,z)) # 方式2: s.format()方法
print(f'x = {x}, y = {y}, z = {z}') # 方式3: f-string方式
# 其它: 输出后是否换行
print(x) # 默认输出后换一行
print(y)
print(z)
print(x, end=' ') # 输出结束后,不换行;通过end指定数据项之间的分隔符
print(y, end=' ')
print(z)

运行截图:

2.使用字符串的format()方法,对输出数据项进行格式化

x1, y1 = 1.2, 3.57
x2, y2 = 2.26, 8.7
# 输出1
print('{:-^40}'.format('输出1')) # {:-^40}控制输出数据格式: 宽度占40列,居中对齐,空白处用-补齐
print('x1 = {}, y1 = {}'.format(x1, y1))
print('x2 = {}, y2 = {}'.format(x2, y2))
# 输出2
print('{:-^40}'.format('输出2')) # {:-^40}控制输出数据格式: 宽度占40列,居中对齐,空白处用-补齐
print('x1 = {:.1f}, y1 = {:.1f}'.format(x1, y1)) # {:.1f}控制小数输出精度,保留1位小数
print('x2 = {:.1f}, y2 = {:.1f}'.format(x2, y2))
# 输出3
print('{:-^40}'.format('输出3')) # {:-^40} 控制输出数据格式: 宽度占40列,居中对齐,空白处用-补齐
print('x1 = {:<15.1f}, y1 = {:<15.1f}'.format(x1, y1)) # {:<15.1f}控制数据输出宽度占15列,小数部分占1列,左对齐,空白处默认补空格
print('x2 = {:<15.1f}, y2 = {:<15.1f}'.format(x2, y2))
# 输出4
print('{:-^40}'.format('输出4')) # {:-^40} 控制输出数据格式: 宽度占40列,居中对齐,空白处用-补齐
print('x1 = {:>15.1f}, y1 = {:>15.1f}'.format(x1, y1)) # {:>15.1f}控制数据输出宽度占15列,小数部分占1列,右对齐,空白处默认补空格
print('x2 = {:>15.1f}, y2 = {:>15.1f}'.format(x2, y2))

运行截图:

3.使用f-string方式输出数据并控制格式

name1, age1 = 'Bill', 19
name2, age2 = 'Hellen', 18
title = 'Personnel Information'
print(f'{title:=^40}') # 输出title的值,=^40指定输出宽度占40列,居中对齐,用=填充空白
print(f'name: {name1:10} age: {age1:3}') # 10和3分别指定数据项输出宽度
print(f'name: {name2:10} age: {age2:3}')
print(40*'=')

运行截图:

实验任务2

1.内置函数eval()

功能:把字符串转换为python表达式

理解:相当于把圆括号中的内容,两侧引号去掉

r1 = eval('1 + 2') # 相当于r1 = 1 + 2
print(type(r1), r1)
r2 = eval('1+2j') #相当于r2 = 1+2j
print(type(r2), r2)
r3 = eval('"python"') # 相当于r3 = "python"
print(type(r3), r3)
r4 = eval('7, 42') # 相当于r4 = 7, 42
print(type(r4), r4)

运行截图:

2.组合使用内置函数eval()和input()

x, y = eval(input('Enter two oprands: ')) # 输入的两个操作数之间用逗号分隔(英文半角输入法下的逗号)
ans = x + y
print(f'{x} + {y} = {ans}')
print(f'{type(x)} + {type(y)} = {type(ans)}')

运行截图:

总结:eval()函数可以自动将字符串对象转换为相应的形式,如整型、浮点型、列表等等。

实验任务3

浮点数简单运算

ans1 = 0.1 + 0.2
print(f'0.1 + 0.2 = {ans1}')
import decimal
ans2 = decimal.Decimal('0.1') + decimal.Decimal('0.2')
print(f'0.1 + 0.2 = {ans2}')

运行截图:

总结:

1.为什么line4输出结果显示存在误差?

1)由于计算机内部以二进制保存,所以十进制的有限位的小数,在计算机内部会是一个无限位的小数。

2)计算机保存浮点数的精度有限,例如float可以保留十进制最多7位(二进制23位)有效数字,double 可以保留十进制15~16位(二进制52位)有效数字。那有效数字以后的就被忽略了。

2.python decimal(小数)模块

实验任务4

1.字符编码相关

# chr()返回unicode编码对应的字符
print(chr(0x1f600), end = " ")
print(chr(0x1f601), end = " ")
print(chr(0x1f602), end = " ")
print(chr(0x1f603), end = " ")
print(chr(0x1f604))
print(chr(10000), end=" ")
print(chr(0x025b), end=" ")
print(chr(0x2708), end=" ")
print(chr(0x00A5), end=" ")
print(chr(0x266b))
# ord()返回字符的unicode编码
print(ord('a'), end = " ")
print(ord('b'), end = " ")
print(ord('c'))
print(ord('A'), end = " ")
print(ord('B'), end = " ")
print(ord('C'))
print(ord('0'), end = " ")
print(ord('1'), end = " ")
print(ord('2'))

运行截图:

实验任务5

1.简单的数学计算

import math
n = float(input('输入一个数:'))
# python中计算开平方的三种方式
ans1 = n**0.5
ans2 = pow(n, 0.5)
ans3 = math.sqrt(n)
print('%.2f的平方根是: %.2f' %(n, ans1)) # 以传统风方式(%)输出
print('{:.2f}的平方根是: {:.2f}'.format(n, ans2)) # 使用str.format()方式输出
print(f'{n:.2f}的平方根是: {ans3:.2f}') # 使用f-string方式输出

运行截图:

2.神奇的pi与大饼

import math
text = '''
好奇心是人的天性。
理想情况下,学习新东西是让人愉快的事。
但学校里的学习似乎有点像苦役。
有时候,需要画一个大饼,每次尝试学一些新鲜的,才会每天变得更好一点点。
'''
print(text)
r = float(input('给学习画一个大饼,大饼要做的很大,半径要这么大: '))
circle = 2*math.pi*r
print(f'绕起来,大饼的圆周有这么长, {circle}, 够不够激发你探索未知的动力...')

运行截图:

实验任务6

1.编写一个计算x的365次方的程序

import math as ma

x=eval(input('x取1.0,1.01,0.99:'))
print(f'{x}的365次方:{pow(x,365)}')

运行截图:

实验任务7

1.煮出完美的鸡蛋

#参数M, ρ, c, K是蛋的性质:M是质量,ρ是密度,c是比热容,K是热导率。
import math as ma

p=1.038
c=3.7
k=5.4*(10**(-3))
m1=47
m2=67
t_w=100
t_y=70
t0=eval(input('t0:'))
t=(m2**(2/3)*c*p**(1/3))/(k*(ma.pi)**2*(4*(ma.pi)/3)**(2/3))*ma.log(0.76*(t0-t_w)/(t_y-t_w))
min=round(t//60)
sec=round(t-min*60)
print(f'T0={t0}℃,t={min}分{sec}秒')

 运行截图:

实验任务8

家用电器销售系统

1.格式化操作符

"""
家用电器销售系统
v1.0
"""

#欢迎信息
print('欢迎使用家用电器销售系统!')

#产品信息列表
print('产品和价格信息如下:')
print('*********************************************************')
print('%-10s'%'编号','%-10s'%'名称','%-10s'%'品牌','%-10s'%'价格','%-10s'%'库存数量')
print('---------------------------------------------------------')
print('%-10s'%'0001','%-10s'%'电视机','%-10s'%'海  尔','%-15.2f'% 5999.00,'%d'% 20)
print('%-10s'%'0002','%-11s'%'冰  箱','%-9s'%'西门子','%-15.2f'% 6998.00,'%d'% 15)
print('%-10s'%'0003','%-10s'%'洗衣机','%-9s'%'小天鹅','%-15.2f'% 1999.00,'%d'% 10)
print('%-10s'%'0004','%-11s'%'空  调','%-10s'%'格  力','%-15.2f'% 3900.00,'%d'% 0)
print('%-10s'%'0005','%-10s'%'热水器','%-10s'%'美  的','%-15.2f'% 688.00,'%d'% 30)
print('%-10s'%'0006','%-10s'%'笔记本','%-10s'%'联  想','%-15.2f'% 5699.00,'%d'% 10)
print('%-10s'%'0007','%-10s'%'微波炉','%-9s'%'苏泊尔','%-15.2f'% 480.50,'%d'% 33)
print('%-10s'%'0008','%-10s'%'投影仪','%-10s'%'松  下','%-15.2f'% 1250.00,'%d'% 12)
print('%-10s'%'0009','%-10s'%'吸尘器','%-9s'%'飞利浦','%-15.2f'% 999.00,'%d'% 9)
print('---------------------------------------------------------')

#用户输入信息
product_id=input('请输入您要购买的产品编号:')
price=float(input('请输入您要购买的产品价格:'))
count=int(input('请输入您要购买的产品数量:'))

#计算金额
print('购买成功,您需要支付',price*count,'元')

#退出系统
print('谢谢您的光临,下次再见!')

运行截图:

2.format()格式化输出

"""
家用电器销售系统
v1.0
"""

#欢迎信息
print('欢迎使用家用电器销售系统!')

#产品信息列表
print('产品和价格信息如下:')
print('**************************************************************')
print('{:10s}{:10s}{:10s}{:10s}{:10s}'.format('编号','名称','品牌','价格','库存数量'))
print('--------------------------------------------------------------')
print('{:10s}{:10s}{:10s}{:<10.2f}{:^10s}'.format('0001','电视机','海  尔',5999,'20'))
print('{:10s}{:11s}{:9s}{:<10.2f}{:^10s}'.format('0002','冰  箱','西门子',6998,'15'))
print('{:10s}{:10s}{:9s}{:<10.2f}{:^10s}'.format('0003','洗衣机','小天鹅',1999,'10'))
print('{:10s}{:11s}{:10s}{:<10.2f}{:^10s}'.format('0004','空  调','格  力',3900,'0'))
print('{:10s}{:10s}{:10s}{:<10.2f}{:^10s}'.format('0005','热水器','美  的',688,'30'))
print('{:10s}{:10s}{:10s}{:<10.2f}{:^10s}'.format('0006','笔记本','联  想',5699,'10'))
print('{:10s}{:10s}{:9s}{:<10.2f}{:^10s}'.format('0007','微波炉','苏泊尔',480.5,'33'))
print('{:10s}{:10s}{:10s}{:<10.2f}{:^10s}'.format('0008','投影仪','松  下',1250,'12'))
print('{:10s}{:10s}{:9s}{:<10.2f}{:^10s}'.format('0009','吸尘器','飞利浦',999,'9'))
print('--------------------------------------------------------------')

#用户输入信息
product_id=input('请输入您要购买的产品编号:')
price=float(input('请输入您要购买的产品价格:'))
count=int(input('请输入您要购买的产品数量:'))

#计算金额
print('购买成功,您需要支付',price*count,'元')

#退出系统
print('谢谢您的光临,下次再见!')

运行截图:

3.使用f''格式化输出

"""
家用电器销售系统
v1.0
"""

#欢迎信息
print('欢迎使用家用电器销售系统!')

#产品信息列表
print('产品和价格信息如下:')
print('**************************************************************')
print(f"{'编号':<10s}{'名称':<10s}{'品牌':<10s}{'价格':<10s}{'库存数量':<10s}")
print('--------------------------------------------------------------')
print(f"000{'1':<7s}{'电视机':<10s}{'海  尔':<10s}{5999:<15.2f}{'20':<10s}")
print(f"000{'2':<7s}{'冰  箱':<11s}{'西门子':<9s}{6998:<15.2f}{'15':<10s}")
print(f"000{'3':<7s}{'洗衣机':<10s}{'小天鹅':<9s}{1999:<15.2f}{'10':<10s}")
print(f"000{'4':<7s}{'空  调':<11s}{'格  力':<10s}{3900:<15.2f}{'0':<10s}")
print(f"000{'5':<7s}{'热水器':<10s}{'美  的':<10s}{688:<15.2f}{'30':<10s}")
print(f"000{'6':<7s}{'笔记本':<10s}{'联  想':<10s}{5699:<15.2f}{'10':<10s}")
print(f"000{'7':<7s}{'微波炉':<10s}{'苏泊尔':<9s}{480.5:<15.2f}{'33':<10s}")
print(f"000{'8':<7s}{'投影仪':<10s}{'松  下':<10s}{1250:<15.2f}{'12':<10s}")
print(f"000{'9':<7s}{'吸尘器':<10s}{'飞利浦':<9s}{999:<15.2f}{'9':<10s}")

print('--------------------------------------------------------------')

#用户输入信息
product_id=input('请输入您要购买的产品编号:')
price=float(input('请输入您要购买的产品价格:'))
count=int(input('请输入您要购买的产品数量:'))

#计算金额
print('购买成功,您需要支付',price*count,'元')

#退出系统
print('谢谢您的光临,下次再见!')

运行截图:

实验总结

1.print()格式化输出的三种方式,在实验8中体现的尤为明显。但在此实验中我发现一个问题,就是在用“%-10s”在字符串右侧补齐空格时,我发现无论如何也无法对齐,在一番查资料后,我发现一个汉字和空格一样都是视作一个字符,而一个汉字所占的长度是空格的二倍,就是因为这个原因导致无法对齐,所以我又调整了补齐空格的个数,终于让它们对齐了。

2.非常推荐使用jupyter notebook来做笔记,如果在命令行里,只能编写简单的代码;如果新建一个py文件,一个程序还好,如果是几十个程序,那就要新建几十个py文件,而jupyter notebook可以实现一个文件记录多个程序,且支持markdown,以下为两张示例:

posted @ 2023-03-14 20:32  风自然  阅读(48)  评论(1编辑  收藏  举报