循环基本题型
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()