2021-04-16

Python语言程序设计第四章课后编程题答案(2021年版)嵩天著

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

year = int(input("请输入年份:"))
if(year % 4 == 0 and year % 100 !=0) or year % 400 ==o:
     print("该年份是闰年!")
else:
     print("该年份不是闰年!")

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

x = int(input('请输入一个整数'))
y = int(input('请输入一个整数'))
m = x*y
if x<y:
    x,y=y,x
n = x%y
while n!=0:
    x,y=y,n
    n=x%y
m/=y
print('它们的最大公约数为{},最小公倍数为{}'.format(y,m))

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

word = 0
num = 0
other = 0
space = 0
a = input("请输入一串字符:")
for k in a:
    if k.isalpha():
        word += 1
    elif k.isdight():
        num += 1
    elif k == ' ':
        space += 1
    else:
        other += 1
print('字母个数是:',word)
print('数字的个数是:',num)
print('空格的个数是:',space)
print('其他字符个数是:',other)

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

import random
secret = random.randint(0,9)
print('------猜数字游戏!------')
guess = -1
N = 0
while guess !=secret:
    temp = input("请输入数字0--9之间:\n")
    if not temp.isdigit():
        print('输入内容必须为整数!!!!\n再来一次\n')
    else:
        N+=1
        guess = int(temp)
        if guess > secret:
            print('遗憾,太大了!\n')
        if guess < secret:
            print('遗憾,太小了!\n')
if guess == secret:
    print('猜测{}次,你猜中了!'.format(N))

5.羊车门问题。有3扇关闭的门,一扇门后面停着汽车,其余门后是山羊,只有主持人知道每扇门后面是什么。参赛者可以选择一扇门,在开启它之前,主持人会开启另外一扇门,露出门后的山羊,然后允许参赛者更换自己的选择。请问:参赛者更换选择后能否增加猜中汽车的机会?

首先进行问题分析,题目要求我们算出更换选择与不更换选择时猜中汽车的概率,然后进行比较。三扇门里选一扇,而且参赛者不知道自己选的门后面是什么,开启之前主持人才打开另外一扇门。
因此我们要列出各种选择后猜中车的情况。

第一种情况:选车,不更换选择,则猜中车。
第两种情况:选羊1,主持人开启羊2的门,更换选择,则猜中车。
第三种情况:先选羊2,主持人开启羊1的门,更换选择,则猜中车。
由此:不更换选择时猜中汽车的概率为1/3,更换选择时猜中汽车的概率为2/3。

from random import *
x=y=0
k=randint(1000,10000)
for i in range(k+1):
    a,b=randrange(1,4),randrange(1,4)
    if a==b:
        x+=1
    else:
        y+=1
print("不更换选择而选中车的概率为:{},更换选择而选中车的概率为:{}。".format(x/k,y/k))
       
  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

现在已经不是小白了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值