Python循环语句简单练习题及答案解析

1.这里的问题是猜出电脑里存储的数字是什么。你将要编写一个能够随机生成一个0到100之间且包括0和100的数字的程序。这个程序提示用户连续地输入数字直到它与那个随机生成的数字相同。对于每个用户输人的数字,程序会提示它是否过高还是过低,所以,用户可以更明智地选择下-一个输人的数字。

import random
com = random.randint(0, 100)
while True:
    num = int(input("请输入一个0-100之间的整数: "))
    if num == com:
        print("恭喜你!!!答对了,奖励你一根棒棒糖")
        break
    elif num > com:
        print("你猜的数过大")
    else:
        print("你猜的数过小")

运行结果:
在这里插入图片描述
2.两个整数4和2的最大公约数(GCD)是2。整数16和24的最大公约数是8。怎样找出最大公约数呢?假设输人的两个整数是nl和n2。你知道数字1是它们的公约数,但它并不是最大公约数。所以,你要检测k (k=2、3、4、…)是否为n1和n2的公约数,直到k大于n1或n2。把公约数存储在一个名为gcd的变量中。初始状态时,gcd的值为1。每找到一个新的公约数就把它赋给gcd。当你检测完从2到n1或从2到n2的所有可能公约数后,存储在gcd中的值就是最大公约数。

num1,num2 = eval(input("请输入两个数: "))
a = min(num1,num2)#选取两个数中较小的数
b = max(num1,num2)#选取两个数中较大的数
for gcd in range(0,a+1):#定义公约数在0到较小数之间取
	gcd += 1#定义公约数从0开始,依次加一直到a
	if a % gcd == 0 and b % gcd == 0:#判断a是否能被两数整除
		gcd1 = gcd#若能整除,则将数赋给新数gcd1
	elif a % gcd != 0:
		gcd = gcd#若不能整除,则还是原数
print("%s和%s的最大公约数是: %s"%(num1,num2,gcd1))

运行结果:
在这里插入图片描述
3,.蒙特卡罗模拟使用随机数和概率来解决问题。它在计算机数学、物理、化学和经济方面都有非常广泛的应用。现在,我们看一个使用蒙特卡罗模拟来估计π的例子。
首先,绘制一个带外接正方形的圆。
假设这个圆的半径为1。因此,这个圆的面积就是π,而矩形的面
积为4。在这个正方形内随机产生一个点。这个点落在圆内的概率为
circleArea/squareArea=π/4
编写一个程序,在正方形内随机产生1 000 000个点,使用numberOfHits表示落人圆内点的个数。所以,numberOfHits 大约就是1 000 000* ( π/4)。π就可以被近似表示为4*numberOfHits/1 000 000。

import random
for num in range(0,1000000):#定义选取0到1000000随机数
	x = random.random() * 2 - 1
	y = random.random() * 2 - 1
	a = (x ** 2 + y ** 2) ** 0.5#计算半径
	if a <= 1:#判断是否在圆内
		num += 1
pi = num * 4 / 1000000
print(pi)

运行结果:在这里插入图片描述
4.(统计正数和负数的个数然后计算这些数的平均值)编写一个程序来读人不指定个数的整数,然后决定已经读取的整数中有多少个正数和多少个负数并计算这些输入值(不统计0)的总和,最终得出它们的平均值。这个程序以输入值0来结束。使用浮点数显示这个平均值。下面是一个简单的示例运行。
在这里插入图片描述

p = 0 
n = 0
sum = 0
while True:#建立while循环
	num = int(input("请输入数值: "))#定义不断输入数
	if num > 0:#判断是否为正
		p += 1
	elif num < 0:#判断是否为负
		n += 1
	elif num == 0:#只有输入0,才会停止输入数值
		break;
	sum += num
total = p + n#求和
mean = sum / total#求平均值
if total == 0:
	print("不得行")
else:
	print("正数个数是: ",p) 
	print("负数个数是: ",n)
	print("和是: ",sum)
	print("平均数是: ",mean)

运行结果:
在这里插入图片描述
5.(找出一个整数的所有因子)编写程序读取-个整数,然后显示它所有的最小因子,也称之为素因子。例如:如果输人整数为120, 那么输出应该如下所示。
2,2,2,3,5

n = int(input("输入一个整数: "))
i = 2 #定义从2开始验证是否能整除
print("该数的素因子有: ")
while True:
	if n % i == 0:#定义循环,依次往下除,
		print(i,end = " ")
		n /= i
	else:
		i += 1
	if n == 1:
		break

运行结果:
在这里插入图片描述
6.(显示-一个金字塔)编写程序提示用户输人-一个在1到15之间的整数,然后显示一个金字塔,示例运行如下所示。
在这里插入图片描述

n = int(input("请输入你要打印的行数: "))
for i in range(0,n):
	spce_num = n - i
	for k in range(0,spce_num):#定义空格数
		print(" ",end="")
	for j in range(-i,i+1):
		print(abs(j)+1,end="")'''从负数开始取,加个绝对值+1可以达到题目的效果
		例:若i=2(表示第3行),则取-2到2为,加绝对值+1则为3,2,1,2
		,3'''
	print("")

运行结果:
在这里插入图片描述
7.(使用循环显示四种模式)使用嵌套循环在四个独立的程序中显示下面四种模式。
在这里插入图片描述
模式A
代码:

n = int(input("请输入你要打印的行数: "))
for i in range(1,n+1):
	spce_num = n - i
	for k in range(spce_num,0):
		print(" ",end="")
	for j in range(1,i+1):
		print(j,end=" ")
	print("")

运行结果:
在这里插入图片描述
模式B
代码:

n = int(input("请输入你要打印的行数: ")) 
for i in range(n,0,-1):
	spce_num = n - i
	for k in range(spce_num,0):
		print(" ",end="")
	for j in range(1,i+1):
		print(j,end=" ")
	print("")

运行结果:
在这里插入图片描述
模式C
代码:

n = int(input("请输入你要打印的行数: "))
for i in range(1,n+1):
	spce_num = n - i
	for k in range(0,spce_num):
		print(" ",end="")
	for j in range(i,0,-1):
		print(j,end="")
	print("")

运行结果:
在这里插入图片描述
模式D
代码:

n = int(input("请输入你要打印的行数: "))
for i in range(n,0,-1):
	spce_num = n - i
	for k in range(0,spce_num):
		print(" ",end="")
	for j in range(1,i+1):
		print(j,end="")
	print("")

运行结果:
在这里插入图片描述
8.(在金字塔模式中显示数字)编写一个嵌套for循环来显示下面的输出。
在这里插入图片描述
代码:

n = int(input("请输入你要打印的行数: "))
for i in range(0,n):
	spce_num = n - i
	for k in range(spce_num,0,-1):
		print("",end="\t")
	for j in range(1,i+1):
		print(2 ** (j-1),end="\t")
	for k in range(i+1,0,-1):
		print(2 ** (k-1),end="\t")
	print()

运行结果:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值