0401.输入一个年份,输出是否为闰年。#闰年条件:能被4整除但不能被100整除,或者能被400整除的年份都是闰年。
#0401
n = eval(input())
if (n % 4 == 0 and n % 100 != 0) or n % 400 == 0:
print('{}年是闰年'.format(n))
else:
print('{}年不是闰年'.format(n))
0402.最大公约数计算。获取两个整数,求出这两个整数的最大公约数和最小公倍数,最大公约数的计算一般使用辗转相除法,最小公倍数则使用两个数的乘积除以最大公约数。
#0402
a,b = input().split()#输入两数,以空格隔开
a,b = int(a),int(b)
mul = a*b
e = max(a,b)%min(a,b)#余数e
#辗转相除法
while e != 0:
a,b = min(a,b),e
e = max(a,b)%min(a,b)
print("最大公约数是:{} 最小公倍数是:{}"\
.format(min(a,b),int(mul/(min(a,b)))))
0403.统计不同字符个数。用户从键盘键入一行字符,编写一个程序,统计并输出其中英文字符、数字、空格和其他字符的个数。
#0403
str1 = input()
n1,n2,n3,n4 = 0,0,0,0
for c in str1:
#中文的汉字会被 isalpha 判定为 True,
#如果想区分中文和英文可以使用 unicode。中文的范围为:['/u4e00','/u9fa5']
if c.encode('UTF-8').isalpha():
n1 += 1
elif c.isdigit():
n2 += 1
elif c.isspace():
n3 += 1
else:
n4 += 1
print("英文字符数:{} 数字数:{} 空格数:{} 其他字符数:{}"\
.format(n1,n2,n3,n4))
0404.猜数游戏续。当用户输入的不是整数(如字母、浮点数等)时,程序会终止执行退出。改编题目1中的程序,当用户输入出错时给出“输入内容必须为整数!”的提示,并让用户重新输入。
#0404
import random
target = random.randint(1,1000)
count = 0
while True:
try:
guess = eval(input('请输入一个猜测的整数(1至1000):'))
a = bin(guess)#避免出现元组、字典、浮点数等类型的的数据
except:
print('输入内容必须为整数!请重试,本次不计入猜测次数。')
continue
count = count + 1
if guess > target:
print('猜大了')
elif guess < target:
print('猜小了')
else:
print('猜对了')
break
print("此轮的猜测次数是:", count)
0405.羊车门问题。有三扇关闭的门,一扇门后面停着汽车,其余门后是山羊,只有主持人知道每扇门后面是什么。参赛者可以选择一扇门,在开启它之前,主持人会开启另外一扇门,露出门后的山羊,然后允许参赛者更换自己的选择。请问,参赛者更换选择后能否增加猜中汽车的机会?——这是一个经典问题。请使用random库对这个随机事件进行预测,分别输出参赛者改变选择和坚持选择获胜的概率。
#0405
from random import *
def choices():
nL = [0,1,2]#0,1,2分别对应'羊','羊','汽车'
nL1 = [0,1]#主持人的选择范围
cddt = choice(nL)#参赛者的选择
if cddt == 2:
host = choice(nL1)#主持人开启的门
else:
nL1.remove(cddt)
host = choice(nL1)
nL.remove(cddt)
nL.remove(host)
return cddt,nL[0]
while True:
n = input("请输入试验次数(按q退出):")
if n == 'q':
print("试验结束!")
break
n = int(n)
count1 = 0#不改变选择,猜中汽车的次数
count2 = 0#改变选择,猜中汽车的次数
for i in range(n):
a,b = choices()
if a == 2:
count1 += 1
if b == 2:
count2 += 1
print("坚持选择获胜概率:{:.2%}".format(count1/n))
print("改变选择获胜概率:{:.2%}".format(count2/n))
实验结果为: