Python 3 教程 在线

1048Python3 字符串

python字符串格式化符号:

%g 是 %f 和 %e 的简写是什么意思?到底是 %f 还是 %e?

对此我用代码测试了一下:

>>> a=100000
>>> print("%g"%(a))
100000
>>> a=10000000
>>> print("%g"%(a))
1e+07
>>> a=1000000
>>> print("%g"%(a))
1e+06

可以发现,%g 是自动选择输出格式的,在六位数的情况下就会以科学计数法方式输出,文章中说 %g 是 %f 和 %e 的简写,但是我发现上述不是科学计数法方式输出的时候输出的是一个整数,于是又进行了如下测试:

>>> a=100000.0
>>> print("%g"%(a))
100000
>>> print("%f"%(a))
100000.000000
>>>

发现 %g 在不是用 %e 输出的情况下和%f还是有区别的

对此我又做了如下测试:

>>> a=100000.1
>>> print("%g"%(a))
100000
>>> a=1.0
>>> print("%g"%(a))
1
>>> a=1.1
>>> print("%g"%(a))
1.1

发现在 a=100000.1 的时候输出的数并没有小数点后面的 1,对此我对比了 C 语言 %g 的格式输出,猜想 python 中应该如同 C 语言一样,%g 用于打印数据时,会去掉多余的零,至多保留六位有效数字。

1047Python3 字符串

python字符串格式化符号 %f 可指定小数点后的精度。

>>> num=18.7254
>>> print("the price  is  %.2f" %num)
the price  is  18.73
>>> 

1046Python3 字符串

字符串截取字符补充:

# 0、a,b为参数。从字符串指针为a的地方开始截取字符,到b的前一个位置(因为不包含b)
var1 = "hello world";
print(var1[a: b]);

# 1、如果a,b均不填写,默认取全部字符。即,下面这两个打印结果是一样的
print(var1[: ]);  # hello world
print(var1);      # hello world

# 2、如果a填写,b不填写(或填写的值大于指针下标),默认从a开始截取,至字符串最后一个位置
print(var1[3: ]); # lo world

# 3、如果a不填写, b填写,默认从0位置开始截取,至b的前一个位置
print(var1[: 8]); # hello wo

# 4、如果a为负数,默认从尾部某一位置,开始向后截取
print(var1[-2: ]); # ld

# 5、如果a>=b, 默认输出为空。
print(var1[3: 3]);
print(var1[3: 2]);

1045Python3 数字(Number)

随机数函数中缺少 randint,sample

random.randint(x,y) #随机生一个整数int类型,可以指定这个整数的范围

实例

>>> random.randint(1000,9999)
8449

random.sample(sequence,length) 可以从指定的序列中,随机的截取指定长度的片断,不修改原序列。

实例

>>> lst = random.sample('abcd1234',4)
>>> strs = ''.join(lst)
>>> strs
'a432'
>>>

1044Python3 数字(Number)

python 不支持复数转换为整数或浮点数

>>> float(4.5+0j)
Traceback (most recent call last):
  File "<pyshell#5>", line 1, in <module>
    float(4.5+0j)
TypeError: can't convert complex to float

>>> int(4+0j)
Traceback (most recent call last):
  File "<pyshell#6>", line 1, in <module>
    int(4+0j)
TypeError: can't convert complex to int
>>>