第一题:
分析:
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()