Python循环(基本习题)

循环基本题型
在这里插入图片描述

import random
word = int(input("猜0-100中的一个数:"))
a = random.randrange(0,101)   #random里面的用法,可以随机抽取0-100里的整数
while True:     #就把判断写在循环里面,太高或者太低就继续循环,答对就跳出循环
	if word > a:
		print("这个数字太高了")
		word = int(input("请猜低一点:"))
	elif word < a:
		print("这个数字太低了")
		word = int(input("请猜高一点:"))
	else:
		print("恭喜你,猜对了")
		break

在这里插入图片描述

n1,n2 = eval(input("输入两个不相同的整数:"))
while True:
	k = min(n1,n2)  #先求出两个数中最小的那一个
	gcd = 1    #设一个公约数的最初值,由公约数的性质可以知道从1开始
	for k in range(2,k + 1):    #循环遍历2到最小的那个数
		if n1 % k == 0 and n2 % k == 0:   #判断是否为公约数
			gcd = k
	print("两个数的最大公约数:",gcd)
	break

在这里插入图片描述

import random
num = 0   #统计在圆内的随机点的个数,初始为0
for i in range(0,1000000):
	x = random.random() * 2 - 1   #random里面的用法,可以求0-1之间的实数
	y = random.random() * 2 - 1
	l = (x ** 2 + y ** 2) ** 0.5  #随机点到圆心的距离
	if l <= 1:     #判断随机点是否在圆内
		num += 1
pai = num / 1000000 + 4    #最后把得到的随机点个数带入题中公式
print(pai)

在这里插入图片描述

zhengshu = 0   #用来统计正数和负数的个数
fushu = 0
total = 0    #用来统计全部数相加的和
i = 0      #统计一共出现的多少个数
while True:
	num = int(input("输入一个数:"))
	if num > 0:    #判断是正数还是负数,正数就zhengshu加一,负数就负数加一,然后统计个数的都要加一,统计值的加num
		i += 1
		zhengshu += 1
		total += num
	elif num < 0:
		i += 1
		fushu += 1
		total += num
	else:
		print("该正数和为:",zhengshu)
		print("该负数和为:",fushu)
		print("该总数和为:",total)
		print("该平均数为:%.2f"%(total / i))   #求平均数
		break

在这里插入图片描述

num = int(input("输入一个整数:"))
i = 2     #将最小因子初始为2
while True:
	if num % i == 0:     #如果num除i能除尽,那么就将i打印出来
		print(i,end=",")     #end=","是将数之间用“,”号隔开
		num /= i    #除尽后将num整除i,继续带入循环
	else:
		i += 1    #如果除不尽,那就将i+1,然后继续循环直到除尽
	if num == 1:    #当最后num值为1的时候结束循环
		break

在这里插入图片描述

layer = int(input("输入你想要打印的行数:"))
for i in range(0,layer):    #将layer的行数遍历出来
	for k in range(layer - i,0,-1):   #先将左边的空白打印出来,layer-i也就是第一行的空白数,以此类推
		print(" ",end=(" "))   #end=" ",空白之间用空白隔开
	for j in range(-i,i + 1):     #打印的是数,从-i到i,依次打印到空白后面
		print(abs(j)+1,end=(" "))     #abs()是将j用绝对值表示出来,中间依旧用空白隔开
	print()

在这里插入图片描述

# 第一种
layer = int(input("输入需要打印的行数:"))
for i in range(1,layer + 1):   #将1-layer遍历出来
	for j in range(0,i):    #依次将每一行遍历
		print(j+1,end=(" "))   #因为最少是一行,所以j+1,中间用空格隔开
	print()
# 第二种
layer = int(input("输入需要打印的行数:"))
for i in range(layer,0,-1):   #第二个图形是倒着的,所以是从layer反向遍历
	for j in range(0,i):   #下面与上图原理相同
		print(j+1,end=(" "))
	print()
# 第三种
layer = int(input("输入需要打印的行数:"))
for i in range(1,layer+1):    #因为空格在前面,所以先遍历数字,所以遍历1-layer(可以将空格也看成一个位置,图形就是一个正方形)
	for j in range(layer,0,-1):   #这是遍历空格,所以是倒着遍历
		if j <= i:  #因为空格循环是在数字循环的里面,因此当j<=i时才输出数字,否则输出空格,中间依旧用空格隔开
			print(j,end=" ")
		else:
			print(" ",end=" ")
	print()
#注:因为是嵌套循环,所以上一个循环为1时,下面循环需要遍历完才会继续上一个循环的遍历
# 第四种
layer = int(input("输入需要打印的行数:"))
for i in range(layer,0,-1):  #先将行数倒着遍历出来
	a = layer - i  #a是将空格个数求出来
	print("  " * a,end=(" "))   #打印空格个数
	for j in range(1,layer+1):   #遍历1-layer+1来求数字个数
		if j <= i:   #与上一个一样,小于才输出数字
			print(j,end=(" "))
	print()
#注:这道可以用上一种一样的方法,到过来即可

在这里插入图片描述

layer = int(input("输入需要打印的行数:"))
for i in range(0,layer+1):   #先是将行数遍历出来
	for j in range(layer-i,0,-1):  #因为先打空格,所以j就是将空格个数遍历出来(如:layer=7,i=1,j就能依次打印出来)
		print(" ",end=(" "))
	for k in range(1,i+1):   #这是将左边数字打印出来(这个与空格是同一级循环,所以先将空格打印出来了,再打印数字)
		print(2 ** (k-1),end=(" "))
	for h in range(i+1,0,-1):   #这是将右边数字打印出来(同级循环)
		print(2 ** (h-1),end=(" "))
	print()

在这里插入图片描述

a = 0
for i in range(2,1001):    #遍历2-1000的数,因为1不是素数
	for j in range(2,i):   #遍历i当中的数,也是除开1,因为1不用带入除
		if i % j == 0:   #如果原来的i除以j没有余数代表不是素数,然后结束循环(因为素数是只能被1和本身整除,而j只能除到i-1)
			break;
	else:   #否则就是素数,将素数输出
		print(i,end=(" "))
		a += 1   #因为题中要求每八个一行,所以a用来记写下的个数
		if i == 8:
			print()

在这里插入图片描述

for i in range(10000,100001,10000):  #遍历出题中所给的数
	a = 0    #统计算式括号里面的数值
	for j in range(1,i + 1):   #将1-i的数遍历出来,以计算pai
		a += ((-1) ** (j+1)) / (2 * j - 1) #题中算式
		pai = 4 * a
		print("当i=%d时,pi = %.9f" %(i,pai))

在这里插入图片描述

for i in range(10000,100001,10000):
	e = 1   #如题初始化e
	item = 1   #初始化item
	for j in range(1,i+1):   #遍历i中每个数的值
		item *= j   #如题计算item
		e += 1 / item
	print("当i为%d时,e为%.19f"%(i,e))

在这里插入图片描述

for i in range(1,10001):   #遍历1-10000的数
	a = 0			#设置正因子个数的初始值
	for j in range(1,i):		#将每一个数从1-i遍历出来
		if i % j == 0:		#将每一个正因子相加
			a += j
	if a == i:		#如果最后相加的数等于原来的i,那么输出
		print(i)

在这里插入图片描述

import random
user_game = 0		#初始化玩家赢得次数的默认值
cop_game = 0		#初始化电脑的次数
while True:
	gamer = int(input("输入石头(0),剪刀(1)或者布(2):"))
	cop = random.randint(0,2)	#产生0-2的随机数
	if gamer == 0:	#下面都是一些简单的判断,如果玩家获胜user_game就加一,如果电脑获胜,cop_game就加一
		if cop == 0:
			pass
		elif cop == 1:
			user_game += 1
		else:
			cop_game += 1
	elif gamer == 1:
		if cop == 0:
			cop_game += 1
		elif cop == 1:
			pass
		else:
			user_game += 1
	elif gamer == 2:
		if cop == 0:
			user_game += 1
		elif cop == 1:
			cop_game += 1
		else:
			pass
	if user_game == 2:	#最后谁先赢两次谁就胜出
		print("玩家获胜")
		break
	if cop_game == 2:
		print("电脑获胜")
		break

在这里插入图片描述

count = 0		#初始化次数的个数
num_all = 1		#初始化最大值
while True:
	num = int(input("输入一个整数:"))
	if num > num_all:	#判断那个数大,如果num大就将num重新赋值给num_all,然后将count重置为1
		num_all = num
		count = 1
	elif num == num_all:	#如果等于num_all,那么就再给count加上1
		count += 1
	elif num == 0:		#最后输出0为结束
		print("这些数最大数是:%d"%(num_all))
		print("最大数出现的次数是:%d"%(count))
		break

在这里插入图片描述

num = int(input("输入一个十进制数:"))	#bin()函数就是将十进制转换为二进制
print(bin(num))

num = int(input("输入一个十进制数:"))	#hex()是将十进制转换为十六进制
print(hex(num))

在这里插入图片描述

import random
num = 0		#初始在奇数区的个数
for i in range(1,1000001):		#先产生100000个点
	x = random.random() * 2 - 1		#random里的用法求实数
	y = random.random() * 2 - 1
	if -1 < x < 0 and -1 < y < 1:	#判断是否在第三象限
		num += 1
	elif 0 < x < 1 and 0 < y < 1 and y / x > -1:	#判断是否在第一象限里面那个三角形里
		num += 1
print("落在奇数区域的点的次数是:%d"%(num))

在这里插入图片描述

num = 0			#初始化闰年的个数
for i in range(2001,2101):	#先遍历出现的年份
	if i % 400 == 0 or i % 4 == 0 and i % 100 != 0:		#判断是否是闰年
		print(i,end=(" "))
		num += 1
		if num % 10 == 0:	#如果个数到10就输出
			print()
  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值