1.making_decisions
# 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 状态
# 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()