python头歌练习题2

1.making_decisions

1.1第1关 bmi_calculator
# BMI Calculator

# 定义获取身高函数
def get_height():
    while True:    
        try:
            height = int(input(f'What is your height(cm)? '))
            return height
        except ValueError:
            print('An integer value is required! please input height again!')  


# 定义获取体重函数
def get_weight():
    while True:
        try:
            weight = float(input(f'What is your weight(kg)? '))
            return weight
        except ValueError:
            print('A numeric value is required! please input weight again!')


# 定义计算 BMI 函数
def calculate_bmi(weight, height):
    bmi = weight / ((height / 100) ** 2)
    return round(bmi, 2)
    

# 定义打印 BMI 函数
def print_bmi(bmi):
    print(f'Your BMI is {bmi}')
    

# 定义打印 BMI 状态函数
def print_bmi_status(bmi):
    # initial values
    min_bmi = 18.5
    middle_bmi = 24
    max_bmi = 28
    # make decisions
    if bmi < min_bmi:
        print('You are underweight.')
    elif min_bmi <= bmi < middle_bmi:
        print('You are normal.')
    elif middle_bmi <= bmi < max_bmi:
        print('You are overweight.')
    else:
        print('You are obesity.')


if __name__ == "__main__":
    weight = get_weight()  # 由用户输入获取体重值    
    height = get_height() # 由用户输入获取身高值      
    bmi = calculate_bmi(weight, height) # 计算 BMI 值
    print_bmi(bmi)   # 打印 BMI 值
    print_bmi_status(bmi)   # 打印 BMI 状态
1.2第2关 annual_income_calculator
# Annual income Calculator

# 定义获取月工资的函数
def get_monthly_salary():
    while True:    
        try:
            monthly_salary = input(f'What is your monthly salary(Yuan)? ')
            salary = int(monthly_salary)         # 补充代码进行合适的数据类型转换
            assert salary <= 30000               # 补充代码进行月工资范围断言判断
            return salary
        except ValueError:                       # 补充代码完成值错误异常捕获
            print('An integer value is required! please input monthly salary again!')
        except AssertionError:                       # 补充代码完成断言错误异常捕获
            print('monthly salary is too high! please input monthly salary again!')


# 定义计算年收入的函数
def calculate_annual_income(monthly_salary):    
    return monthly_salary*12    


if __name__ == "__main__":    
    monthly_salary = get_monthly_salary() # 由用户输入获取月工资
    annual_income = calculate_annual_income(monthly_salary) # 计算年收入
    print("your annual income is",annual_income)   # 打印年收入

2.Repetition

2.1adding_numbers
while True:
    try:
        N = int(input("How many numbers you want to add? "))
        break
    except ValueError:
        print("Must be an integer, please enter again!")

total = 0
for i in range(N):
    while True:
        try:
            num = int(input("enter an integer number: "))
            total += num
            break
        except ValueError:
            print("Must be an integer, please enter again!")

print("the total sum is", total)
2.2multiplication_table
# multiplication table---------------

# 循环嵌套
for i in range(13):
    for j in range(13):
        print(f"{i} x {j} = {i*j}") # 补充代码限定外循环范围
      # 补充代码限定内循环范围
     # 补充代码,打印当前行乘法公式
            
        
2.3 guess_number
import random
random.seed(42)

def get_difficulty():
    while True:
        try:
            difficulty = input('Pick a difficulty level (1, 2 or 3): ')
            difficulty = int(difficulty)
            if difficulty in [1, 2, 3]:
                return difficulty
            else:
                print('A valid input is required')
        except ValueError:
            print('A valid input is required')

def create_number(difficulty):
    if difficulty == 1:
        max_number = 10
    elif difficulty == 2:
        max_number = 100
    else:
        max_number = 1000
    random_num = random.randint(1, max_number)
    return random_num

def play():
    difficulty = get_difficulty()
    number = create_number(difficulty)
    print("I have my number. You can start guessing the number.")
    number_of_guesses = 1
    while True:
        try:
            guessed_number = input('What\'s your guess? ')
            guessed_number = int(guessed_number)
            if guessed_number > number:
                print('Too high.', end=" ")
            elif guessed_number < number:
                print('Too low.', end=" ")
            else:
                print(f'You got it in {number_of_guesses} guesses!')
                return
        except ValueError:
            print('A valid input is required')
        finally:
            number_of_guesses += 1

def play_again():
    while True:
        answer = input('play again? ')
        answer = answer.lower()
        if answer == 'y' or answer == 'yes':
            play()
        elif answer == 'n' or answer == 'no':
            print('Goodbye!')
            break
        else:
            print('A valid input is required')

def main():
    print('Let\'s play Guess the number.')
    play()
    play_again()

if __name__ == "__main__":
    main()

猜你喜欢

转载自blog.csdn.net/2303_77045566/article/details/142109280