5-1 条件测试:编写一系列条件测试;将每个测试以及你对其结果的预测和实际结果都打印出来。你编写的代码应类似于下面这样:
car = ‘subaru’
print(“Is car == ‘subaru’? I predict True.”)
print(car == ‘subaru’)
print("\nIs car == ‘audi’? I predict False.")
print(car == ‘audi’)
car = 'subaru'
print("Is car == 'subaru'? I predict True.")
print(car == 'subaru')
print("\nIs car == 'audi'? I predict False.")
print(car == 'audi')
运行结果:
Is car == 'subaru'? I predict True.
True
Is car == 'audi'? I predict False.
False
5-2 更多的条件测试:你并非只能创建 10 个测试。如果你想尝试做更多的比较,可再编写一些测试,并将它们加入到 conditional_tests.py 中。对于下面列出的各种测试,至少编写一个结果为 True 和 False 的测试。
#检查两个字符串相等和不等。
str1 = 'python'
str2 = 'java'
print('Is str1 == str2?')
print(str1 == str2)
print('Is str1 != str2?')
print(str1 != str2)
#使用函数 lower()的测试。
str3 = 'Python'
print('Is str1 == str3.lower()?')
print(str1 == str3.lower())
#检查两个数字相等、不等、大于、小于、大于等于和小于等于。
num1 = 11
num2 = 22
print('Is num1 == num2?')
print(num1 == num2)
print('Is num1 != num2?')
print(num1 != num2)
print('Is num1 > num2?')
print(num1 > num2)
print('Is num1)
print(num1 < num2)
print('Is num1 >= num2?')
print(num1 >= num2)
print('Is num1 <= num2?')
print(num1 <= num2)
#使用关键字 and 和 or 的测试。
flag1 = True
flag2 = False
print('flag1 and flag2 = '+str(flag1 and flag2))
print('flag1 or flag2 = '+str(flag1 or flag2))
#测试特定的值是否包含在列表中。
languages = ['java','python','c']
print('Is python in languages?')
print('python' in languages)
#测试特定的值是否未包含在列表中。
languages = ['java','python','c']
print('Is php in languages?')
print('php' in languages)
运行结果:
Is str1 == str2?
False
Is str1 != str2?
True
Is str1 == str3.lower()?
True
Is num1 == num2?
False
Is num1 != num2?
True
Is num1 > num2?
False
Is num1= num2?
False
Is num1 <= num2?
True
flag1 and flag2 = False
flag1 or flag2 = True
Is python in languages?
True
Is php in languages?
False
5-3 外星人颜色 #1:假设在游戏中刚射杀了一个外星人,请创建一个名为alien_color 的变量,并将其设置为’green’、 ‘yellow’或’red’。
alien_color = 'green'
#编写一条 if 语句,检查外星人是否是绿色的;如果是,就打印一条消息,指出玩家获得了 5 个点。
if alien_color == 'green':
print('you win 5 points!')
#编写这个程序的两个版本,在一个版本中上述测试通过了,而在另一个版本中未通过(未通过测试时没有输出)。
alien_color = 'red'
if alien_color == 'green':
print('you win 5 points!')
运行结果:
you win 5 points!
5-4 外星人颜色#2:像练习 5-3 那样设置外星人的颜色,并编写一个 if-else 结构。
alien_color = 'green'
#编写一条if语句,检查外星人是否是绿色的;如果是,就打印一条消息,
#指出玩家获得了5个点。如果不是,指出玩家获得了10个点。
if alien_color == 'green':
print('you win 5 points!')
else:
print('you win 10 points!')
#编写这个程序的两个版本,在一个版本中执行 if 代码块,而在另一个版本中执行 else 代码块。
alien_color = 'red'
if alien_color == 'green':
print('you win 5 points!')
else:
print('you win 10 points!')
运行结果:
you win 5 points!
you win 10 points!
5-5 外星人颜色#3:将练习 5-4 中的 if-else 结构改为 if-elif-else 结构。
alien_color = 'green'
#如果外星人是绿色的,就打印一条消息,指出玩家获得了 5 个点。
#如果外星人是黄色的,就打印一条消息,指出玩家获得了 10 个点。
#如果外星人是红色的,就打印一条消息,指出玩家获得了 15 个点。
if alien_color == 'green':
print('you win 5 points!')
elif alien_color == 'yellow':
print('you win 10 points!')
else:
print('you win 15 points!')
#编写这个程序的三个版本,它们分别在外星人为绿色、黄色和红色时打印一条消息。
alien_color = 'yellow'
if alien_color == 'green':
print('you win 5 points!')
elif alien_color == 'yellow':
print('you win 10 points!')
else:
print('you win 15 points!')
alien_color = 'red'
if alien_color == 'green':
print('you win 5 points!')
elif alien_color == 'yellow':
print('you win 10 points!')
else:
print('you win 15 points!')
运行结果:
you win 5 points!
you win 10 points!
you win 15 points!
5-6 人生的不同阶段: 设置变量 age 的值, 再编写一个 if-elif-else 结构, 根据 age
的值判断处于人生的哪个阶段。
#如果一个人的年龄小于 2 岁,就打印一条消息,指出他是婴儿。
#如果一个人的年龄为 2(含)~4 岁,就打印一条消息,指出他正蹒跚学步。
#如果一个人的年龄为 4(含)~13 岁,就打印一条消息,指出他是儿童。
#如果一个人的年龄为 13(含)~20 岁,就打印一条消息,指出他是青少年。
#如果一个人的年龄为 20(含)~65 岁,就打印一条消息,指出他是成年人。
#如果一个人的年龄超过 65(含) 岁,就打印一条消息,指出他是老年人
ages = input('input your age:')
age = int(ages)
if age < 2:
print('baby')
elif age >= 2 and age < 4:
print('learn to walk')
elif age >=4 and age <13:
print('child')
elif age >=13 and age<20:
print('teenager')
elif age >= 20 and age <65:
print('adult')
elif age >=65:
print('old man')
运行结果:
input your age:25
adult
5-7 喜欢的水果:创建一个列表,其中包含你喜欢的水果,再编写一系列独立的 if
语句,检查列表中是否包含特定的水果。
#将该列表命名为favorite_fruits,并在其中包含三种水果
favorite_fruits = ['apple','banana','orange']
#编写 5 条 if 语句,每条都检查某种水果是否包含在列表中,如果包含在列表中,
#就打印一条消息,如“You really like bananas!”。
if 'apple' in favorite_fruits:
print('you really like apple.')
if 'banana' in favorite_fruits:
print('you really like banana.')
if 'orange' in favorite_fruits:
print('you really like orange.')
if 'peer' in favorite_fruits:
print('you really like peer.')
if 'strawberry' in favorite_fruits:
print('you really like strawberry.')
运行结果:
you really like apple.
you really like banana.
you really like orange.
5-8 以特殊方式跟管理员打招呼:创建一个至少包含 5 个用户名的列表,且其中一
个用户名为’admin’。想象你要编写代码,在每位用户登录网站后都打印一条问候消息。
遍历用户名列表,并向每位用户打印一条问候消息。
#如果用户名为'admin',就打印一条特殊的问候消息,
#如“Hello admin, would youlike to see a status report?”。
#否则,打印一条普通的问候消息,如“Hello Eric, thank you for logging in again”。
usernames = ['admin','aaa','bbb','ccc','ddd']
for username in usernames:
if username == 'admin':
print('Hello admin,would you like to see a status report?')
else:
print('Hello ' + username.title() + ' thank you for logging again.')
运行结果:
Hello admin,would you like to see a status report?
Hello Aaa thank you for logging again.
Hello Bbb thank you for logging again.
Hello Ccc thank you for logging again.
Hello Ddd thank you for logging again.
5-9 处理没有用户的情形:在为完成练习 5-8 编写的程序中,添加一条 if 语句,检
查用户名列表是否为空。
#如果为空,就打印消息“We need to find some users!”。
#删除列表中的所有用户名,确定将打印正确的消息。
usernames = []
if usernames:
for username in usernames:
if username == 'admin':
print('Hello admin,would you like to see a status report?')
else:
print('Hello ' + username.title() + ' thank you for logging again')
else:
print('We need to find some users!')
运行结果:
We need to find some users!
5-10 检查用户名:按下面的说明编写一个程序,模拟网站确保每位用户的用户名
都独一无二的方式
#创建一个至少包含 5 个用户名的列表,并将其命名为 current_users。
current_users = ['aaa','bbb','ccc','ddd','eee','fff']
#再创建一个包含 5 个用户名的列表,将其命名为 new_users,
#并确保其中有一两个用户名也包含在列表 current_users 中。
new_users = ['bbb','EEE','abc','def','ghj']
#遍历列表 new_users,对于其中的每个用户名,都检查它是否已被使用。
#如果是这样,就打印一条消息,指出需要输入别的用户名;
#否则,打印一条消息,指出这个用户名未被使用。
#确保比较时不区分大消息;换句话说,如果用户名'John'已被使用,应拒绝用户名'JOHN'。
for new_user in new_users:
if new_user.lower() in current_users:
print(new_user + ' This username has been used!')
else:
print(new_user + ' This username has not been used!')
运行结果:
bbb This username has been used!
EEE This username has been used!
abc This username has not been used!
def This username has not been used!
ghj This username has not been used!
5-11 序数:序数表示位置,如 1st 和 2nd。大多数序数都以 th 结尾,只有 1、 2 和 3
例外。
#在一个列表中存储数字 1~9。
numbers = range(1,10)
#遍历这个列表。
#在循环中使用一个 if-elif-else 结构,以打印每个数字对应的序数。输出内容应为
#1st、 2nd、 3rd、 4th、 5th、 6th、 7th、 8th 和 9th, 但每个序数都独占一行。
or number in numbers:
if number == 1:
print(str(number) + 'st')
elif number == 2:
print(str(number) + 'nd')
elif number == 3:
print(str(number) + 'rd')
else:
print(str(number) + 'th')
运行结果:
1st
2nd
3rd
4th
5th
6th
7th
8th
9th