标准库是自带的库,不需要安装,直接import使用
计算机不能生成随机数,所以用梅森旋转算法生成的伪随机数
random库用于生成随机数
import random
基本随机数函数
random按照系统时间选seed
random.seed()可复现,random.random()不可复现;0-1之间的随机小数
使用seed后面再复现还能复现,同一个seed随机数相同
使用random系统时间是精确的,复现不了,完全随机
random函数生成0-1之间的小数,程序精度为小数点后16位
扩展随机数函数
代码想放在同一行,就用;分隔
圆周率的计算
\代码换行
实例6:圆周率的计算
这是"实例"题,与课上讲解实例相同,请作答检验学习效果。
求解圆周率可以采用蒙特卡罗方法,在一个正方形中撒点,根据在1/4圆内点的数量占总撒点数的比例计算圆周率值。
请以123作为随机数种子,获得用户输入的撒点数量,编写程序输出圆周率的值,保留小数点后6位。
输入示例
1024
输出示例
3.218750
#calpiv2.py import random#用seed不用写成 from random import... random.seed(123) Darts=eval(input()) hits=0.0 for i in range(1,Darts+1): x,y=random.random(),random.random() if pow(x**2+y**2,0.5)<=1: hits=hits+1 pi=4*(hits/Darts)#不能写在format里 print("{:.6f}".format(pi))
整数的加减和
编写程序计算如下数列的值:
1-2+3-4...966
其中,所有数字为整数,从1开始递增,奇数为正,偶数为负
输出示例
111(仅表示输出样式,不是输出结果)
#calseq.py a=0 for i in range(1,967): if i%2==0: i=-i elif i%2!=0: i=i a=i+a print("{}".format(a))
#calseq.py
a=0
for i in range(1,967):
if i%2==0:
i=-i
elif i%2!=0:
i=i
a=i+a
print("{}".format(a))
'''
#calseqv2.py
a=0
for i in range(1,967):
if i%2==0:
a=a-i
elif i%2!=0:
a=a+i
print("{}".format(a))
'''
'''
#calseqv3.py
a=0
for i in range(1,967):
a=a+i*pow(-1,i+1)
print("{}".format(a))
'''
'''
调节符号
i*pow(-1,i) -1 2 -3 4 -5 6....
i*pow(-1,i+1) 1 -2 3 -4 5 -6...
'''
用户登录的三次机会
给用户三次输入用户名和密码的机会,要求如下:
1)如输入第一行输入用户名为‘Kate’,第二行输入密码为‘666666’,输出‘登录成功!’,退出程序;
2)当一共有3次输入用户名或密码不正确输出“3次用户名或者密码均有误!退出程序。”。
输入示例1
Kate 666666
输出示例1
登录成功!
输入示例2
kate 123 alice 456 john 111111
输出示例2
3次用户名或者密码均有误!退出程序。
平均代码量 10 行
#loginthree.py num=0 while True: name=input() mi=eval(input()) if name=="Kate" and mi==666666: print("登录成功!") break else: num+=1 if num==3: print("3次用户名或者密码均有误!退出程序。") break
三位水仙花数
"水仙花数"是指一个三位整数,其各位数字的3次方和等于该数本身。
例如:ABC是一个"3位水仙花数",则:A的3次方+B的3次方+C的3次方 = ABC。
请按照从小到大的顺序输出所有的3位水仙花数,请用"逗号"分隔输出结果。
输出仅表示格式,不表示对错。
输出示例
111,222
平均代码量 6 行
str1 = '' for i in range(100, 1000): A = i // 100 B = i%100//10 C = i%100%10 if A**3 + B**3+ C**3 == i: str1 += f'{i},' print(str1[:-1])
第四周复习