目录
1.猜数字游戏
import random
num = random.randint(0,100)
print("猜数字游戏!!!")
guess = int(input("请输入一个数字:"))
while guess != num :
if guess < num :
guess = int(input("您输入的数字偏小,请重新输入:"))
else :
guess = int(input("您输入的数字偏大,请重新输入:"))
print("恭喜您,猜正确!!!")
2.计算两个数的最大公约数
gcd = 1
num1,num2 = eval(input("请输入要求公约数的两个整数:"))
if num1 < num2 :
min = num1
else :
min = num2
for i in range(2,min+1) :
if (num1 %i == 0) and (num2 %i ==0) :
gcd = i
print("%s,%s的最大公因数是%s"%(num1,num2,gcd))
3.蒙特卡罗计算π
import random
import math
numberOFHits = 0
for i in range(1,1000000,1) :
x = random.uniform(-1,1)
y = random.uniform(-1,1)
# random.uniform(n,m)随机生成n到m的随机数
distance = math.sqrt(x*x + y*y)
if distance <= 1 :
numberOFHits += 1
pi = 4 * numberOFHits / 1000000
print("Pi = ",pi)
4.计算正负数以及平均值
这个题对于题意理解有一点偏差,但是展现的是差不多的算法。
positive = 0
minus = 0
total_positive = 0
total_minus = 0
num = int(input("请输整数(输入0结束):"))
if num == 0 :
print("您没有输入任何数!!!")
else :
while num != 0 :
if num > 0 :
positive += 1
total_positive += num
else :
minus += 1
total_minus += num
num = int(input("请输整数(输入0结束):"))
mean_po = total_positive / positive
mean_mi = total_minus / minus
print("正数有%s个,负数有%s个"%(positive,minus))
print("正数的总和:%s,平均值为:%s"%(total_positive,mean_po))
print("负数的总和:%s,平均值为:%s"%(total_minus,mean_mi))
5.找整数的因子
num = int(input("请输入一个整数:"))
for i in range(2,num) :
if num % i == 0 :
break
else :
print("%s为素数"%num)
print("%s的素因子为:"%num)
for i in range(num-1,0,-1) :
consult = int(num / i)
if num % i == 0 :
print(consult)
num = i
6.数字金字塔
num = int(input("请输入1~15的任意一个整数:"))
for i in range(1,num+1) :
for j in range(i,num) :
print(" ",end=" ")
for k in range(i,0,-1) :
print(k,end=" ")
for l in range(2,i+1) :
print(l,end=" ")
print()
7.三角形
print("模式A")
for i in range(1,7) :
for j in range(1,i+1) :
print(j,end=" ")
print()
print("模式B")
for i in range(7,1,-1) :
for j in range(1,i) :
print(j,end=" ")
print()
print("模式C")
for i in range(1,7) :
for j in range(1,7-i) :
print(" ",end=" ")
for k in range(i,0,-1) :
print(k,end=" ")
print()
print("模式D")
for i in range(1,7) :
for j in range(1,i) :
print(" ",end=" ")
for k in range(1,8-i) :
print(k,end=" ")
print()
8.数字金字塔
layer = int(input("请输入层数:"))
for i in range(1,layer+1) :
for j in range(1,layer-i+1) :
print(" ",end=" ")
for k in range(1,i+1) :
num1 = 2 ** (k - 1)
if 0 <= num1 < 10 :
print(" ",end="")
elif num1 < 100 :
print(" ",end="")
elif num1 < 1000 :
print(" ",end="")
elif num1 < 10000 :
print(" ",end="")
print(num1,end="")
for l in range(i,1,-1) :
num2 = 2 ** (l-2)
if 0 <= num2 < 10 :
print(" ",end="")
elif num2 < 100 :
print(" ",end="")
elif num2 < 1000 :
print(" ",end="")
elif num2 < 10000 :
print(" ",end="")
print(num2,end="")
print()
9.找素数
k = 0
for i in range(2,1001) :
for j in range(2,i) :
if (i % j == 0) :
break
else :
print(i,end=" ")
k +=1
if k %8 == 0 :
print()
10.计算π
factor = 0
i = int(input("估算pi值,请输入i的大小:"))
for j in range(1,i+1) :
factor += (((-1)**(j+1))/((2*j)-1))
pi = 4 * factor
print("pi = ",pi)
11.计算e
e = 1
num = int(input("请输入估值长度:"))
for i in range(1,num+1) :
denominator = 1
for j in range(1,i+1) :
denominator *= j
e += (1 / denominator)
print("e = ",e)
12.查找完全数
for i in range(2,10001) :
total = 0
for j in range(2,i+1) :
if i % j == 0 :
total += ( i/j )
else :
if total == i :
print("小于10000的完全数有:",total)
13.剪刀石头布三局两胜制
import random
a = 0
b = 0
print("下面将进行划拳游戏(三局两胜)!!!(0代表剪刀,1代表石头,2代表布)")
while 1 :
rand = random.randint(0,2)
num = int(input("请输入您要出的手势:"))
if rand == 0 :
print("对面出的剪刀!")
elif rand == 1 :
print("对面出的石头!")
else :
print("对面出的布!")
if num == 0 :
print("您出的剪刀!")
elif num == 1 :
print("您出的石头!")
else :
print("您出的布!")
if num == rand :
print("这是平局!!!")
elif (num == 0) and (rand == 2) :
print("您赢一局!!!")
a += 1
elif (num == 1) and (rand == 0) :
print("您赢一局!!!")
a += 1
elif (num == 2) and (rand == 1) :
print("您赢一局!!!")
a += 1
else :
print("您输一局!!!")
b += 1
if a == 2 :
print("恭喜您,您赢了!!!")
break
elif b == 2 :
print("很遗憾,您输了!!!")
break
print("-------------------------------")
14.抓取最大数以及输入的次数
max = 0
count = 0
while 1 :
num = int(input("请输入一个整数(输入0结束):"))
if num == 0 :
break
if max < num :
max = num
count = 1
elif max == num :
count += 1
print("最大数是%s,出现了%s次"%(max,count))
15.十进制转二进制
factor = 1
binnary = 0
print("十进制转二进制数!!!")
num = int(input("请输入十进制数:"))
print("十进制数 %s 转为二进制数是:"%num,end="")
while num != 0 :
remainder = num % 2 #余数
num = num // 2 #商
binnary += (remainder * factor) #进行拼接
factor *= 10
print(binnary)
16.十进制转十六进制
array = [0,0,0,0,0,0,0,0,0,0]
i = 0
print("十进制转十六进制数!!!")
num = int(input("请输入十进制数:"))
while num != 0 :
array[i] = remainder = num % 16 #余数
num = num // 16 #商
if remainder == 10 :
array[i] = 'A'
elif remainder == 11 :
array[i] = 'B'
elif remainder == 12 :
array[i] = 'C'
elif remainder == 13 :
array[i] = 'D'
elif remainder == 14 :
array[i] = 'E'
elif remainder == 15 :
array[i] = 'F'
i += 1
for j in range(9,-1,-1) :
print(array[j],end=" ")
17.蒙特卡罗模拟
import random
time = 0
for i in range(1,1000001) :
x = random.uniform(-2,2)
y = random.uniform(-2,2)
yLine = 2-x
if -2 <= x < 0 :
time += 1
elif 0 <= x < 2 :
if 0 <= y < yLine :
time += 1
prb = time / 1000000
print("点出现在基数区的概率为:",prb)
18.显示闰年
print("从2001年到2100之间闰年有:")
time = 0
for i in range(2001,2101) :
if (i % 400) == 0 :
print(i,end=" ")
time += 1
if (time % 10 == 0) :
print()
elif (i % 4) == 0 and (i % 100) != 0:
print(i,end=" ")
time += 1
if (time % 10 == 0) :
print()