Python循环(基本习题)

本文通过一系列Python编程实例,展示了循环结构(while循环、for循环)和条件判断(if...else...)在猜数字游戏、求最大公约数、随机点分布、数列计算、数字打印等场景中的应用,涵盖了基础的算法和逻辑控制。通过这些例子,读者可以加深对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()

您可能感兴趣的与本文相关的镜像

Python3.11

Python3.11

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

### Python 循环与判断语句练习题 以下是几个关于 Python循环与判断语句的经典练习题及其示例代码: #### 1. 猜数字游戏(无限次机会) 编写一个程序,让用户猜测计算机随机生成的一个介于 1 到 100 的整数。每次猜测后给出提示:“大了”或“小了”,直到用户猜中为止,并显示总共猜测了多少次。 ```python import random num = random.randint(1, 100) # 计算机生成的随机数 count = 0 # 初始化计数器 flag = True # 控制循环标志 while flag: guess_num = int(input("输入你要猜测的数字:")) count += 1 # 每次猜测增加一次计数 if guess_num == num: # 如果猜中 print("恭喜你,猜中了!!!") flag = False # 停止循环 elif guess_num > num: # 如果猜大了 print("你猜的大了") else: # 如果猜小了 print("你猜的小了") print(f"你总共猜测了{count}次") # 输出总次数 ``` 此代码实现了基本的猜数字功能[^1]。 --- #### 2. 死循环打印字符串 创建一个简单的死循环程序,不断打印指定的字符串,除非手动中断程序。 ```python while True: # 条件始终为True print('死循环') # 不断执行的操作 ``` 这段代码展示了如何使用 `while` 实现一个永远不会停止的循环[^2]。 --- #### 3. 判断回文数 编写一个程序,提示用户输入一个三位正整数,然后判断其是否是一个回文数。如果从左到右和从右到左读取相同,则称为回文数。 ```python number = int(input("请输入一个三位数:")) # 提取百位和个位 hundreds_digit = number // 100 # 百位上的数值 ones_digit = number % 10 # 个位上的数值 if hundreds_digit == ones_digit: # 判断首尾是否相等 print("该数是回文数") else: print("该数不是回文数") ``` 上述代码利用除法运算符 (`//`) 和模运算符 (`%`) 提取出所需位置的数字并进行比较[^3]。 --- #### 4. 打印乘法表 设计一段代码来打印九九乘法表,展示嵌套循环的应用场景。 ```python for i in range(1, 10): # 外层控制行号 for j in range(1, i + 1): # 内层控制列号 print(f"{j} * {i} = {i*j}", end="\t") print() # 换行操作 ``` 通过两重 `for` 循环可以轻松构建完整的九九乘法表格结构。 --- #### 5. 质数检测 写一个函数用于验证某个给定自然数 n 是否属于质数范畴。质数定义为仅能被自己或者 1 整除的大于等于2的整数。 ```python def is_prime(n): if n <= 1: # 排除小于等于1的情况 return False for k in range(2, int(n ** 0.5)+1): if (n % k) == 0: # 若存在其他因子则返回假 return False return True # 否则确认为素数 test_number = int(input("Enter a positive integer to check prime status: ")) result = is_prime(test_number) if result: print(f"{test_number} 是质数.") else: print(f"{test_number} 不是质数.") ``` 这里采用试除法原理优化性能至平方根级别复杂度。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值