python编程习题(循环语句)

循环语句

第一题:

分析:

1、使用random随机产生数字

2、提示输入猜测的数字

3、判断语句,判断所猜的数字与随机产生数的大小比较

4、错误或者正确提示

5、输出

代码如下:

import random
number = random.randint(0,100)
# print(number)		测试随机产生一个数
while True:
	guess = int(input("请随机选择一个0到100的数:"))
#判断猜的数字的大小
	if guess < number:
		print("猜的数字小于答案,请你继续猜")
	elif guess > number:
		print("猜的数字大于答案,请你继续猜")
	else:
		print("恭喜你!猜对了!!!")
		break

第二题:

 分析:

1、输入两个数,最大公约数

2、提示输入两个数

3、需要给GCD一个初始值

4、取最小值,此处用       k = min(a,b)     表示

5、做出判断,是否为所输入两个数的公约数

6、存储于GCD

7、输出

代码如下:

a,b = eval(input("请你分别输入a,b,两个数:"))
k = min(a,b)
#初始值
gcd = 1
for i in range(2,k + 1):
	if a % i == 0 and b % i == 0:
		gcd = i
print("%s和%s的最大公约数是%s"%(a,b,gcd))

第三题:

分析:

1、总的点数,落在范围内点数

2、总数先赋值  num = 0

3、循环,1000000

4、使用random随机生成坐标

5、求距离,再作比较

6、如果在坐标范围内,则   num += 1

7、公式计算PI,再输出

代码如下:

import random
num = 0
s = 1000000
for i in range(0,s):
	a = random.random() * 2 - 1
	b = random.random() * 2 - 1
	h = (a ** 2 + b ** 2) ** 0.5	#h表示距离
	if h <= 1:
		num += 1
PI = num / s * 4
print(PI)

第四题:

分析:

1、输入无限个数字

2、输入 0 则结束输入过程

3、将正数和复数赋值 0 ,判断输入的数大于 0 还是小于 0

4、sum 总数的相加

5、avg  平均值的计算

6、分别输出

代码如下:

correct = 0  #正数
negative = 0   #负数
while True:
	num = int(input("请你输入一个数:"))
	if num > 0:
		correct += 1
	elif num < 0:
		negative += 1
	else:
		break
	sum += num
total = correct + negative
avg = sum / total
print("正数的个数为:%s"%correct)
print("负数的个数为:%s"%negative)
print("总共有%s个数:"%total)
print("平均值为:%s"%avg)

第五题:

 分析:

1、提示输入数字

2、使用整除方法

代码如下:

num = int(input("请你输入一个数:"))
i = 2
while True:		#可以将True改成num == 1,这样下边的break就可以不写
	if num % i == 0:
		print(i,end = "")
		num /= i
	else:
		i += 1
	if num == 1:
		break

# for 循环方法
# while num != 1:
# 	for i in range(2,n):
# 		if num % i == 0:
# 			print(i,end="")
# 			num /= i
# 			break

第六题:

分析:

1、提示输入需要打印的层数

2、需要使用到反着打印

3、循环中使用    -1    表示倒着打印,以1为对称轴

4、需要使用        abs()函数,返回数字的绝对值

代码如下:

num = int(input("请你输入你需要打印的行数:"))
for i in range(0,num):
	for j in range(num - i , 0 , -1):	# -1 表示倒着打印
		print(" ",end="")
	for j in range(-i , i + 1):
		print(abs(j) + 1,end="")
	print()

第七题:

分析:

1、如果按照题目要求,就可以直接将循环定于第一层开始到第七曾结束

2、可以使用未知量来,提示用户输入打印的层数,然后打印相应层数

代码如下:

类型A 

while True:
     for i in range (1,7):
         for j in range(1, 7):
             if j <= i:
                 print(j,end="")
         print()
     break;
 print()
# 类型A方法二
# while True:
# 	num = int(input("请你输入你需要打印的行数:"))
# 	for i in range(1,num + 1):
# 		for j in range(1,num + 1):
# 			if j <= i:
# 				print(j,end = "")
# 		print()
# 	break
# print()

类型B 

 while True:
     for i in range (6,0,-1):
         for j in range(1, 7):
             if j <= i:
                 print(j,end="")
         print()
     break;
 print()

#类型B方法二
# while True:
# 	num = int(input("请你输入你需要打印的行数:"))
# 	for i in range(num,0,-1):
# 		for j in range(1,num + 1):
# 			if j <= i:
# 				print(j,end = "")
# 		print()
# 	break
# print()

类型C 

 while True:
     for i in range (1,7):
         for j in range(6, 0,-1):
             if j <= i:
                 print(j,end="")
             else :
                 print("",end= "")
         print()
     break;
 print()
 
# 类型C 方法二
# while True:
# 	num = int(input("请你输入你需要打印的行数:"))
# 	for i in range(1,num + 1):
# 		for j in range(num,0,-1):
# 			if j <= i:
# 				print(j,end = "")
# 			else:
# 				print("",end = "")
# 		print()
# 	break
# print()

类型D

 while True:
     for i in range (6,0,-1):
         a = 6 - i
         print(" " * a,end ="")
         for j in range(1, 7):
             if j <= i:
                 print(j,end="")
         print()
     break;
 print()
 
# 类型D方法二
# while True:
# 	num = int(input("请你输入你需要打印的行数:"))
# 	for i in range(num,0,-1):
# 		a = num - i
# 		print(" " * a,end = "")
# 		for j in range(1,num + 1):
# 			if j <= i:
# 				print(j,end = "")
# 		print()
# 	break
# print()

第八题:

分析:

1、提示用户输入需要打印的行数,使用for循环

2、在输出时,需要进行计算

3、使用    -1    进行倒着打印

代码如下:

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

第九题:

分析:

1、for循环,2开始,1001结束

2、将总数     sum    初始值0

3、除以2的循环

4、总数的相加

5、sum  %    8 表示每行显示8个数

代码如下:

s = 0
for i in range(2,1001):
	for j in range(2,i):
		if i % j == 0:
			break;
	else:
		print(i,end = " ")
		s += 1
		if s % 8 == 0:
			print()

第十题:

 

 分析:

1、for 循环的表示,以10000开始,100001结束,中间相隔10000

2、s = 0

3、计算PI的值

4、输出

代码如下:

for j in range(10000,100001,10000):
	s = 0
	for i in range(1,j + 1):
		s += ((-1) ** (i + 1)) / (2 * i - 1)
		PI = 4 * s
	print("当i = %s时,PI = %s"%(j,PI))

第十一题:

分析:

1、计算e 的近似值

2、for 循环,以10000开始,100001结束,间隔10000

3、阶乘的表示        item *= i

4、公式计算e

5、输出e

代码如下:

for j in range(10000,100001,10000):
	e = 1
	item = 1
	for i in range(1,j + 1):
		item *= i   #此处表示阶乘
		e += 1 / item
	print("当i = %s时,e = %s"%(j,e))

第十二题:

分析:

1、找出完全数

2、for 循环,1开始,10001结束

代码如下:

for i in range(1,10001):
    s = 0
    for j in range (1,i):
        if i % j == 0:
            s +=j
    if i == s:
        print(i)

第十三题:

分析:

1、石头剪刀布小游戏,判断语句可以书写(前面有展示),此处是循环语句的书写

2、使用random随机产生所出的结果

3、提示玩家输入自己的选择

4、需要进行判断,使用减法判断谁赢谁数,然后分别对赢的一方,总数 +1

5、判断玩家赢的次数是否达到2次

6、玩家赢到2次则进行输出

代码如下:

import random
sum1 = 0
sum2 = 0
while True:
	computer = random.randint(0,2)
	player = int(input("请你选择你要出石头(0),剪刀(1),还是布(2):"))
	if player - computer == -1 or player - computer == 2:
		sum1 += 1
		if sum1 == 2:
			print("玩家赢得游戏!!!")
			break
	elif player - computer == -2 or player - computer == 1:
		sum2 += 1
		if sum2 == 2:
			print("电脑赢得游戏!!!")
			break

第十四题:

分析:

1、输入无限个数字,以0结束,找出最大数,以及计算最大数出现的次数

2、max  初始值赋值0,用于存储最大数

3、count  初始值赋值0,用于存储最大值出现的次数

4、提示输入数字

5、判断数字大小,用于判断最大数

6、最大数 的出现次数的相加

7、输出最大数以及最大数出现次数

代码如下:

max = 0
count = 0
while True:
	num = int(input("请你输入一个数字:"))
	if num == 0:
		break
	if num > max:
		max = num
		count = 1
	elif num == max:
		count += 1
print("最大的数是%s"%max)
print("最大数出现的次数是:%s"%count)

第十五题:

分析:

1、提示用户输入十进制的数字

2、十进制转换为二进制        %2

3、输出

代码如下:

num = int(input("请你输入一个十进制的数:"))
binstr = ""
while num != 0:
	a = num % 2
	binstr = str(a) + binstr
	num //= 2
print(binstr)

第十六题:

分析:

1、提示用户输入十进制的数

2、十进制转换为十六进制         %16

代码如下:

number = int(input("Enter a number:"))
hexStr = ""
while number != 0:
    a = number % 16
    if a < 10:
        hexStr = str(a) + hexStr
    else:
        hexStr = str(87 + a) + hexStr
    number //= 16
print(hexStr)

第十七题:

分析:

1、conut 初始值赋值为0

2、for循环,2001开始,2101结束

3、判断是否为闰年

4、如果是闰年,则 count += 1

5、输出时,count % 10 表示每行显示10个年份

代码如下:

count = 0
for i in range(2001,2100 + 1):
	if i % 400 == 0 or y % 4 == 0 and i % 100 != 0:
		print(i,end = "")
		count += 1
		if count % 10 == 0:
			print()

  • 14
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是三个关于Python循环语句的练习题,每个练习题都有相应的代码示例: 练习题1: 代码如下: num = int(input("请你输入一个数:")) i = 2 while True: if num % i == 0: print(i, end="") num /= i else: i = 1 if num == 1: break 这段代码用来找出一个数的所有公因数。通过一个while循环,不断将该数除以最小的质数,直到该数变为1为止。 练习题2: 代码如下: # 这层for循环找到该数的所有公因数 for j in range(2, 1001): k = [] # n的作用是统计列表元素个数 n = -1 s = j for i in range(1, j): if j % i == 0: n = 1 s -= i k.append(i) # s==0时,刚好满足题目条件 if s == 0: print(j) # n=len(k)-1 for i in range(n): print(str(k[i]), end="") print(' ', end="") print(k[n]) 这段代码用来找出所有在2到1000之间的数中,满足其所有公因数之和等于该数本身的数。通过两层循环的嵌套,找出所有公因数并计算它们的和。 练习题3: 代码如下: num = int(input("请输入要分解的数:")) s = str(num) i = 2 while i <= num: if num % i == 0: if i == num: s = s + str(i) else: s = s + str(i) + " * " num = num // i else: i = i + 1 print(s) 这段代码用来将一个数分解为质因数的乘积。通过一个while循环,不断将该数除以最小的质因数,并将质因数拼接成一个字符串。最后输出这个字符串。 希望以上练习题能帮助你提高对Python循环语句的理解和应用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [python编程习题循环语句)](https://blog.csdn.net/qq_64227183/article/details/124388391)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Python循环经典练习题10例](https://blog.csdn.net/zemuerqi/article/details/106435269)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值