2021年11月18日(作业讲解)

文章目录

    • 任务1、完成猜数游戏
    • 任务2、计算阶乘之和
    • 任务3、用米粒填充国际象棋盘
      • 版本1
      • 版本2
    • 任务4、求20个学生的平均成绩
      • 版本1
      • 改进版本

任务1、完成猜数游戏

  • 游戏规则:程序产生一个[1, 100]之间的随机整数,用户输入整数进行猜测,如果猜对了,就会循环你是否要继续玩游戏;如果猜错了,程序会提示你是猜高了还是猜低了,然后让你继续输入整数进行猜测。
  • 代码
import random

while True:
    target = random.randint(0, 100)
    
    x = int(input("Try to guess the number I'm think of: "))
    
    while True:
        if x > target:
            x = int(input('Too high! Guess again: '))
        elif x < target:
            x = int(input('Too low! Guess again: '))
        else:
            break
        
    choice = input("That's it! Would you like to play again? (yes/no)")
    if choice == 'no':
        break
    
print("Thanks for playing.")
  • 运行结果
    2021年11月18日(作业讲解)_第1张图片

任务2、计算阶乘之和

  • 计算 1! + 2! + 3! + … + 10! 的值
  • 代码
sum = 0

for n in range(1, 11):
    jc = 1
    for i in range(1, n + 1):
        jc = jc * i
    sum = sum + jc

print('1! + 2! + 3! + ...+ 10! = {}'.format(sum))
  • 运行结果
    2021年11月18日(作业讲解)_第2张图片

任务3、用米粒填充国际象棋盘

  • 国际象棋盘中,第1 格放1 粒米,第2 格放2 粒米,第3格放4 粒米,第4 格放8 粒米,第5 格放16粒米,……问:64个格子总共可以放多少粒米?

版本1

  • 代码
sum = 0

for i in range(64):
    sum = sum + 2 **i
    print('{}: {}'.format(i + 1, 2 **i))

print('sum = {}'.format(sum))
  • 运行结果
    2021年11月18日(作业讲解)_第3张图片

版本2

  • 代码
from math import pow

sum = 0

for i in range(64):
    sum = sum + int(pow(2, i))
    print('{}: {}'.format(i + 1, int(pow(2, i))))

print('sum = {}'.format(sum))

任务4、求20个学生的平均成绩

  • 要求每个学生成绩在[0, 100]范围内,输入不正确,提示用户重新输入,直到输入正确为止

版本1

  • 代码
# -*- coding: utf-8 -*-
"""
功能:求20个学生的平均成绩(1)
作者:小小榕
日期:2021年11月18日
"""

sum = 0
for i in range(20):
    score = int(input('输入第{}个学生成绩:'.format(i + 1)))
    sum = sum + score

average = sum / 20

print('平均成绩:{}'.format(round(average, 2)))
  • 运行结果
    2021年11月18日(作业讲解)_第4张图片
  • 并没有防范超出范围的数据输入,所以要改进。

改进版本

  • 代码
sum = 0
for i in range(20):
    while True:
        score = int(input('输入第{}个学生成绩:'.format(i + 1)))
        if 0 <= score <= 100:
            break
        else:
            print('成绩超出范围,必须在[0,100]范围内!')
    sum = sum + score

average = sum / 20

print('平均成绩:{}'.format(round(average, 2)))
  • 运行结果
    2021年11月18日(作业讲解)_第5张图片

你可能感兴趣的:(Python,python)