【2019Python二级考试】第四章编程习题

1.输入一个年份,输出是否为闰年。#闰年条件:能被4整除但不能被100整除,或者能被400整除的年份都是闰年。

n=eval(input("输入你要检测的年份"))
if (n%400==0) or (n%4==0 and n%100!=0):
    print(n,"是闰年")
else:
    print(n,"不是闰年")

考察if-else语句的使用。

2.最大公约数计算。获得两个整数求出这两个整数的最大公约数和最小公倍数。最大公约数的计算一般使用辗转相除法,最小公倍数则使用两个数的乘积除以最大公约数。

def max_num(x,y):
    if x>y:
        return x
    else:
        return y
    
def calculate(x,y):
    if y==0:
        return x
    else:
        calculate(y,x%y)

x=int(input("请输入第一个数字"))
y=int(input("请输入第二个数字"))
m=x,n=y
max_num(x,y)
calculate(x,y)
print(m,"和",m,"的最大公约数为",x)

3.统计不同字符数的个数。用户从键盘输入一行字符,编写一个程序,统计并输出其中中英文字符、数字、空格和其他字符的个数。

s=input("请输入你要输入的字符串")
m=len(s)
num_1=0
num_2=0
num_3=0
num_4=0
num_5=0
for i in range(m):
    if (s[i]>='0') and (s[i]<='9'):
        num_3+=1
    elif (s[i]>='a') and (s[i]<='z'):
        num_2+=1
    elif (s[i]>='A') and (s[i]<='Z'):
        num_2+=1
    elif (s[i]>='\u4e00') and (s[i]<='\u9fff'):
        num_1+=2
    elif (s[i]==' '):
        num_4+=1
    else:
        num_5+=1
print("字符串中含有",int(num_1/2),"个中文字符")
print("字符串中含有",num_2,"个英文字符")
print("字符串中含有",num_3,"个数字")
print("字符串中含有",num_4,"个空格")
print("字符串中含有",num_5,"个其他字符")

4.猜数游戏后续。当用户输入的不是整数(如字母、浮点数等)时,程序会中止执行退出,改编题目1中的程序,当用户输入出错时给出“输入内容必须为整数!”的提示,并让用户重新输入。

import random
target=random.randint(0,100)
count=0
while True:
    try:
        guess=int(input("请输入你猜测的数字(0到100)"))
        
    except:
        print("输入内容必须为整数!")
        continue
    count=count+1
    if guess>target:
        print("猜大了")
    elif guess<target:
        print("猜小了")
    else:
        print("猜对了")
        break
print("此轮猜想的次数为:",count)

5.有3扇关闭的门,一扇门后面停着汽车,其余门后是山羊,只有主持人知道每扇门后面是什么。参赛者可以选择一扇门,在开启它之前,主持人会开启另外一扇门,露出门后的山羊,然后允许参赛者更换自己的选择。请问:参赛者更换选择后能否增加猜中车的机会?——这是一个经典问题。请使用random库对这个随机事件进行预测,分别输出参赛者改变选择和坚持选择获胜的概率。

import random
print("一下是关于羊车门问题概率的计算,其中设定有n-1个羊,一个车,羊的数目为随机数")
n=eval(input("请输入羊和车的总和"))
x=random.randint(5000,10000)#测试次数
change=0
nochange=0
for i in range(1,x+1):
    a=random.randrange(1,4)#选手选择的数字(同时设定随机数的范围)
    b=random.randrange(1,4)#车的数字
    if a==b:
        change=change+1
    else:
        nochange=nochange+1
        
print("第一次选择换之后选择为车的概率为",change/x)
print("第一次不换之后选择为车的概率",nochange/x)

猜你喜欢

转载自blog.csdn.net/suu_an/article/details/88219823