Python--循环语句练习

目录

1.猜数字游戏​编辑

2.计算两个数的最大公约数​编辑

3.蒙特卡罗计算π​编辑

4.计算正负数以及平均值​编辑

5.找整数的因子​编辑

6.数字金字塔​编辑

7.三角形​编辑

8.数字金字塔​编辑

9.找素数​编辑

10.计算π​编辑

11.计算e​编辑

12.查找完全数​编辑

13.剪刀石头布三局两胜制​编辑

14.抓取最大数以及输入的次数​编辑

15.十进制转二进制​编辑

16.十进制转十六进制​编辑

17.蒙特卡罗模拟​编辑

18.显示闰年​编辑


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()

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

.98℃

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值