A. 求助:用python实现国际单位换算
知道进制就可以换算啦,每一个换算用一种方法实现。如:
def kg2g(kg):
return 1000 * kg
def g2kg(g):
return g / 1000
B. python缩进长度统一吗
Python 对代码的缩进要求非常严格,同一个级别代码块的缩进量必须一样,否则解释器会报 SyntaxError 异常错误。
在 Python 中,对于类定义、函数定义、流程控制语句、异常处理语句等,行尾的冒号和下一行的缩进,表示下一个代码块的开始,而缩进的结束则表示此代码块的结束。
注意,Python 中实现对代码的缩进,可以使用空格或者 Tab 键实现。但无论是手动敲空格,还是使用 Tab 键,通常情况下都是采用 4 个空格长度作为一个缩进量(默认情况下,一个 Tab 键就表示 4 个空格)。
对于 Python 缩进规则,初学者可以这样理解,Python 要求属于同一作用域中的各行代码,它们的缩进量必须一致,但具体缩进量为多少,并不做硬性规定。
更多Python知识请关注Python自学网
C. python有两种单位输出时怎么办
由于底层的UnitRegistry知道不同单位之间的关系,因此您可以使用to()方法将“数量”转换为您选择的单位。
Pint是一个Python软件包,用于定义,操作和操纵物理量:数值和度量单位的乘积。它允许它们之间的算术运算以及不同单位之间的转换。
在python中如果想给计算结果添加单位,当使用不是很频繁,使用字符串格式化输出就很好了,常用的可以考虑继承float类实现专门的计量单位类。
D. python怎么设置页面显示单位
这个没有统一的地方,要看你具体的程序是怎么读取这个显示单位的。
可以尝试下面的做法,不一定可以
进入Python的安装目录中Tools\i18n目录
执行pygettext.py
生成一个messages.pot
修改messages.pot中编码
CHARSET gb2312
ENCODING utf8
编辑messages.pot
添加需要国际化的内容,另存为*.po文件
我这里存成了lang.po
编译lang.po
执行msgfmt.py lang.po
生成lang.mo
在项目中建立目录
\locale\zh_CN\LC_MESSAGES
\locale\en_US\LC_MESSAGES
LC_MESSAGES这个是必须的
同时将刚刚的lang.po、lang.mo放入到zh_CN\LC_MESSAGES\这个目录下。
也可以生成一个英文的对应文件放入到en_US\LC_MESSAGES\目录下
测试下效果,输出用_(str)代替str。成功输出中文
将zh_CN换成en_US如果没有配置默认直接输出原内容,如Hello YY
完整的test.py
# -*- coding: utf-8 -*-
#!/usr/bin/env python
import sys
reload(sys)
sys.setdefaultencoding('utf8')
import gettext
gettext.install('lang', 'F:\Workspaces\server\MobileApiServer\project\locale', unicode=False)
gettext.translation('lang', 'F:\Workspaces\server\MobileApiServer\project\locale', languages=['zh_CN']).install(True)
print _('Hello YY')
项目直接使用,服务启动的时候加载所有的mo文件。
在请求的过滤入口处设置本次请求的语言,后面代码中就可以直接使用啦
E. 假设Python的上手难度为1个单位,那么Java,C#, C++等的难度为多少呢(几个单位)
C# 是 5个
Java据说≈C#
c++ 大概9个吧
F. python的单位转换问题
round()函数用错了啊,你应该写成:
lb = round(fx*2.205, 2)
这样。
round(x[, n])
Return the floating point value x rounded to n digits after the decimal point. If n is omitted, it defaults to zero. Delegates to x.__round__(n).
For the built-in types supporting round(), values are rounded to the closest multiple of 10 to the power minus n; if two multiples are equally close, rounding is done toward the even choice (so, for example, both round(0.5) and round(-0.5) are 0, and round(1.5) is 2). The return value is an integer if called with one argument, otherwise of the same type as x.
G. PYTHON实现对CSV文件多维不同单位数据的归一化处理
1)线性归一化
这种归一化比较适用在数值比较集中的情况,缺陷就是如果max和min不稳定,很容易使得归一化结果不稳定,使得后续的效果不稳定,实际使用中可以用经验常量来代替max和min。
2)标准差标准化
经过处理的数据符合标准正态分布,即均值为0,标准差为1。
3)非线性归一化
经常用在数据分化较大的场景,有些数值大,有些很小。通过一些数学函数,将原始值进行映射。该方法包括log、指数、反正切等。需要根据数据分布的情况,决定非线性函数的曲线。
log函数:x = lg(x)/lg(max)
反正切函数:x = atan(x)*2/pi
Python实现
线性归一化
定义数组:x = numpy.array(x)
获取二维数组列方向的最大值:x.max(axis = 0)
获取二维数组列方向的最小值:x.min(axis = 0)
对二维数组进行线性归一化:
def max_min_normalization(data_value, data_col_max_values, data_col_min_values):
""" Data normalization using max value and min value
Args:
data_value: The data to be normalized
data_col_max_values: The maximum value of data's columns
data_col_min_values: The minimum value of data's columns
"""
data_shape = data_value.shape
data_rows = data_shape[0]
data_cols = data_shape[1]
for i in xrange(0, data_rows, 1):
for j in xrange(0, data_cols, 1):
data_value[i][j] = \
(data_value[i][j] - data_col_min_values[j]) / \
(data_col_max_values[j] - data_col_min_values[j])
标准差归一化
定义数组:x = numpy.array(x)
获取二维数组列方向的均值:x.mean(axis = 0)
获取二维数组列方向的标准差:x.std(axis = 0)
对二维数组进行标准差归一化:
def standard_deviation_normalization(data_value, data_col_means,
data_col_standard_deviation):
""" Data normalization using standard deviation
Args:
data_value: The data to be normalized
data_col_means: The means of data's columns
data_col_standard_deviation: The variance of data's columns
"""
data_shape = data_value.shape
data_rows = data_shape[0]
data_cols = data_shape[1]
for i in xrange(0, data_rows, 1):
for j in xrange(0, data_cols, 1):
data_value[i][j] = \
(data_value[i][j] - data_col_means[j]) / \
data_col_standard_deviation[j]
非线性归一化(以lg为例)
定义数组:x = numpy.array(x)
获取二维数组列方向的最大值:x.max(axis=0)
获取二维数组每个元素的lg值:numpy.log10(x)
获取二维数组列方向的最大值的lg值:numpy.log10(x.max(axis=0))
对二维数组使用lg进行非线性归一化:
def nonlinearity_normalization_lg(data_value_after_lg,
data_col_max_values_after_lg):
""" Data normalization using lg
Args:
data_value_after_lg: The data to be normalized
data_col_max_values_after_lg: The maximum value of data's columns
"""
data_shape = data_value_after_lg.shape
data_rows = data_shape[0]
data_cols = data_shape[1]
for i in xrange(0, data_rows, 1):
for j in xrange(0, data_cols, 1):
data_value_after_lg[i][j] = \
data_value_after_lg[i][j] / data_col_max_values_after_lg[j]
H. 【python】如何把字符串类型的数字统一形式,如:"一亿三千万元"->"130000000元"
#!/usr/bin/envpython
#coding:utf-8
dict={u'零':0,u'一':1,u'二':2,u'三':3,u'四':4,u'五':5,u'六':6,u'七':7,u'八':8,u'九':9,u'十':10,u'百':100,u'千':1000,u'万':10000,
u'0':0,u'1':1,u'2':2,u'3':3,u'4':4,u'5':5,u'6':6,u'7':7,u'8':8,u'9':9,
u'壹':1,u'贰':2,u'叁':3,u'肆':4,u'伍':5,u'陆':6,u'柒':7,u'捌':8,u'玖':9,u'拾':10,u'佰':100,u'仟':1000,u'万':10000,
u'亿':100000000}
defgetResultForDigit(a,encoding="utf-8"):
ifisinstance(a,str):
a=a.decode(encoding)
count=0
result=0
tmp=0
Billion=0
whilecount<len(a):
tmpChr=a[count]
#printtmpChr
tmpNum=dict.get(tmpChr,None)
#如果等于1亿
iftmpNum==100000000:
result=result+tmp
result=result*tmpNum
#获得亿以上的数量,将其保存在中间变量Billion中并清空result
Billion=Billion*100000000+result
result=0
tmp=0
#如果等于1万
eliftmpNum==10000:
result=result+tmp
result=result*tmpNum
tmp=0
#如果等于十或者百,千
eliftmpNum>=10:
iftmp==0:
tmp=1
result=result+tmpNum*tmp
tmp=0
#如果是个位数
eliftmpNumisnotNone:
tmp=tmp*10+tmpNum
count+=1
result=result+tmp
result=result+Billion
returnresult
if__name__=="__main__":
test_map={
'三千五百二十三':3523,
'七十五亿八百零七万九千二百零八':7508079208,
'四万三千五百二十一':43521,
'三千五百二十一':3521,
'三千五百零八':3508,
'三五六零':3560,
'一万零三十':10030,
'':0,
#1digit个
'零':0,
'一':1,
'二':2,
'三':3,
'四':4,
'五':5,
'六':6,
'七':7,
'八':8,
'九':9,
#2digits十
'十':10,
'十一':11,
'二十':20,
'二十一':21,
#3digits百
'一百':100,
'一百零一':101,
'一百一十':110,
'一百二十三':123,
#4digits千
'一千':1000,
'一千零一':1001,
'一千零一十':1010,
'一千一百':1100,
'一千零二十三':1023,
'一千二百零三':1203,
'一千二百三十':1230,
#5digits万
'一万':10000,
'一万零一':10001,
'一万零一十':10010,
'一万零一百':10100,
'一万一千':11000,
'一万零一十一':10011,
'一万零一百零一':10101,
'一万一千零一':11001,
'一万零一百一十':10110,
'一万一千零一十':11010,
'一万一千一百':11100,
'一万一千一百一十':11110,
'一万一千一百零一':11101,
'一万一千零一十一':11011,
'一万零一百一十一':10111,
'一万一千一百一十一':11111,
#6digits十万
'十万零二千三百四十五':102345,
'十二万三千四百五十六':123456,
'十万零三百五十六':100356,
'十万零三千六百零九':103609,
#7digits百万
'一百二十三万四千五百六十七':1234567,
'一百零一万零一百零一':1010101,
'一百万零一':1000001,
#8digits千万
'一千一百二十三万四千五百六十七':11234567,
'一千零一十一万零一百零一':10110101,
'一千万零一':10000001,
#9digits亿
'一亿一千一百二十三万四千五百六十七':111234567,
'一亿零一百零一万零一百零一':101010101,
'一亿零一':100000001,
#10digits十亿
'十一亿一千一百二十三万四千五百六十七':1111234567,
#11digits百亿
'一百一十一亿一千一百二十三万四千五百六十七':11111234567,
#12digits千亿
'一千一百一十一亿一千一百二十三万四千五百六十七':111111234567,
#13digits万亿
'一万一千一百一十一亿一千一百二十三万四千五百六十七':1111111234567,
#14digits十万亿
'十一万一千一百一十一亿一千一百二十三万四千五百六十七':11111111234567,
#17digits亿亿
'一亿一千一百一十一万一千一百一十一亿一千一百二十三万四千五百六十七':11111111111234567,
}
foreachintest_map:
assert(test_map[each]==getResultForDigit(each))
assert的作用是判断getResultForDigit与test_map里的对应key值是否一致
I. 请教高手,python的时间单位是什么
时间单位自然是秒(second)了。
import time
start = time.time()
# do something
end = time.time()
delta = end - start # is a float, unit: second
python中表达时间的函数有很多,包括date, datetime, time, 等等。
日期应该是没有单位的,但是“差”是有单位的:day,hour,minute, second。具体采用什么单位取决你的需求了。不过,second 是“万能”的,可以使用mktime,strptime等函数进行转换或者格式化成你想要的时间。
J. python如何输出单位km
python中,想要实现逆序输出,输出单位km,操作方法如下。
设备:华硕VivoBook15s
系统:win10
软件:python3.9.4
1、首先打开python编辑器,输入想要逆序输出的字符串,比如s='kjekgrg'。