您的位置:首页 > 编程语言 > Python开发

《Python语言程序设计》前四章学习记录

2015-12-30 20:19 519 查看
1.不换行打印:

print("AAA", end = ' ')
print("BBB", end = '')
print("CCC", end = '**')
#输出
AAA BBBCCC**


2.格式化数字:

format(item, format-specifier)
#"10.2f" 10为域宽度,2为精度,f为转换码
>>> print(format(57.467657, "10.2f"))
57.47
#默认为右对齐,加"<"为左对齐,注意打印结果后面的空格
>>> print(format(57.467657, "<10.2f"))
57.47
---------------------------------
"10.2f"
"10.2e"
"5d"整数
"5x"十六进制数
"5o"八进制数
"5b"二进制数
"10.2%"格式为百分数
"50s"字符串
"<10.2f"向左对齐格式化项目
">10.2f"向右对齐格式化项目


3.最小化数值错误:

在循环继续条件中使用浮点数可能会导致数值错误。

sum = 0
i = 0.01

while i <= 1.0:
sum += i
i += 0.01
print("The sum is", sum)
print('i is',i)
#输出结果
The sum is 49.50000000000003
i is 1.0000000000000007


但正确结果应该为50.5,因为循环的每次迭代中变量i都递增0.01,当循环结束时,i的值稍稍大于1,这导致最后一个i的值没有被加到sum上。

最基本的问题是浮点数被近似表示了。

4.问题:蒙特卡洛模拟

使用随机数和概率来解决问题

例子:求π的近似值

首先绘制一个带外接正方形的圆。

假设这个圆的半径为1,因此,这个圆的面积就是π,而正方形的面积为4,在这个正方形内随机产生一个点,这个点落在圆内的面积为circleArea/squareArea =π/4

import random

NUMBER_OF_TRIALS = 3000000
numberOfHits = 0

for i in range(NUMBER_OF_TRIALS):
x = random.uniform(-1, 1)
y = random.uniform(-1, 1)

if  x ** 2 + y ** 2 <= 1:
numberOfHits += 1

pi = 4 * numberOfHits / NUMBER_OF_TRIALS

print("PI is ", pi)


5.显示素数

在五行李显示前50个素数,每行10个

编程步骤:

先编写代码判定给定的那个数字是否为素数,然后再用一个循环来扩展它,判断其它数字是否为素数。

NUMBER_OF_PRIMES = 50 #总计要显示素数的个数
NUMBER_OF_PRIMES_PER_LINE = 10 #每行10个
count = 0 #素数的个数
number = 2 #素数起始数字
print("The first 50 prime numbers are")
#查找素数
while count < NUMBER_OF_PRIMES:

isPrime = True
divisor = 2
while divisor <= number / 2:
if number % divisor == 0:
isPrime = False
break
divisor += 1

if isPrime:
count += 1
print (format(number, "5d"), end = '')
if count % NUMBER_OF_PRIMES_PER_LINE == 0:
print()

number += 1

#输出结果
The first 50 prime numbers are
2    3    5    7   11   13   17   19   23   29
31   37   41   43   47   53   59   61   67   71
73   79   83   89   97  101  103  107  109  113
127  131  137  139  149  151  157  163  167  173
179  181  191  193  197  199  211  223  227  229
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: