python之第四周作业
- 统计大写和小写字母
- 打印前t行的杨辉三角
- 模拟猜数游戏
- 计算字符匹配率
- 24点游戏实现
第一题
要求: 编写函数,接收字符串参数,
返回一个元组,其中第一个元素为大写字母个数,
第二个元素为小写字母个数。参考:
将ASCII字符转换为对应的数值即‘a’–>65,使用ord函数,ord(‘a’)
实例:
def CountAlphabet( strings):
UAlphabet_list= [] #大写字母
LAlphabet_list= [] #小写字母
list_str = list(str(strings))
for i in list_str:
# 大写字母的ascll值
if ord(i) in range(65,91):
UAlphabet_list.append(i)
elif ord(i) in range(97,123):
LAlphabet_list.append(i)
return (len(UAlphabet_list),len(LAlphabet_list))
if __name__ == "__main__":
result=CountAlphabet("scnasSCBACaca6s54598465787#$%^&*((##$HVjhvcsa")
print(result)
结果:
第二题
要求:
设计程序,编写函数,接收一个整数t为参数,
打印杨辉三角前t行。
第二种方法:
使用collections标准库的defaultdict实现上例的功能。
第一种方法参考:
递推公式:f[1][1]=1 , f[i][j]=f[i-1][j-1]+f[i-1][j]
**说明:**第二种方法的库不是特别会用。
实例:
from collections import defaultdict as default
def PrintYHTriangle(row):
f = [[1],[1,1]]
for i in range(row-2):
f.append([])
length =len(f[i]) #上一级的长度
f[i+2].append(1) #杨辉三角的每一层的第一个和最后一个都是1,
# 中间的为f[i][j]=f[i-1][j-1]+f[i-1][j]
for j in range(1, length+1):
f[i+2].append(f[i+1][j-1]+f[i+1][j])
f[i + 2].append(1)
for i in f:
print(i)
def PrintYaHuTwo(row):
way = default(list)
way.update({1: [1]})
way.update({2: [1, 1]})
for i in range(row - 2):
list_result = []
length = len(way.get(i + 2)) # 上一级的长度
list_result.append(1) # 杨辉三角的每一层的第一个和最后一个都是1,
# 中间的为f[i][j]=f[i-1][j-1]+f[i-1][j]
for j in range(1, length):
list_result.append(way.get(i + 2)[j - 1] + way.get(i + 2)[j])
list_result.append(1)
way.update({length + 1: list_result})
for i in list(way.values()):
print(i)
# 第二种方式:
if __name__ =="__main__":
print("第一种方式:")
row = int(input("输入整数t:"))
PrintYHTriangle(row=row)
print("第二种方式:")
row = int(input("输入整数t:"))
PrintYaHuTwo(row=row)
结果:
第三题
**要求:**编写函数模拟猜数游戏。
系统随机产生一个数,
玩家最多可以猜5次,
系统会根据玩家的猜测进行提示,
玩家则可以根据系统的提示对下一次的猜测进行适当调整。
实例:
import random
def GuessNumber():
number = random.randint(1,100)
i = 5;
while i >0:
print("你还剩余",i,"次猜测机会!!")
num = int(input("请输入你所猜测的数字(你只有五次机会):"))
if num > number:
print("你所猜测的数字大于正确答案!")
elif num < number:
print("你所猜测的数字小于正确答案!")
elif num == number:
print("恭喜你猜到了正确答案!")
break
i-=1
if i ==0:
print("抱歉你的猜测次数已用完!!\n","正确答案是",number)
if __name__ =="__main__":
GuessNumber()
结果:
第四题
要求:
设计程序,编写函数,
计算字符串匹配的准确率。以打字练习程序为例,
假设origin为原始内容,userInput为用户输入的内容,
下面的代码用来测试用户输入的准确率。
实例:
def CountAccuracy(originalContent,matchContent):
orcon =list(originalContent)
macon = list(matchContent)
if orcon == macon:
print("准确率为","100%")
else:
counts =0
for i in range(len(macon)):
if orcon[i] == macon[i]:
counts += 1
print("准确率为","{:4.2f}%".format((counts/len(orcon))*100))
if __name__ == "__main__":
orcon ="设计程序,编写函数,计算字符串匹配的准确率。以打字练习程序为例,假设origin为原始内容,userInput为用户输入的内容,下面的代码用来测试用户输入的准确率。"
macon = input("请输入:")
CountAccuracy(orcon,macon)
结果:
第五题
要求:
24点游戏是指随机选取4张扑克牌(不包括大小王),
然后通过四则运算来构造表达式,如果表达式的值恰好等于24就赢一次。
下面的代码定义了一个函数用来测试随机给定的4个数是否符合24点游戏规则,
如果符合就输出所有可能的表达式
实例:
import random
from pprint import pprint
def PrintAll():
style =["红桃","黑桃","方块","梅花"]
playingCards = [i for i in range(2,11)]
playingCards.append('J')
playingCards.append('Q')
playingCards.append('K')
playingCards.reverse()
playingCards.append('A')
playingCards.reverse()
playingCard = []
# 选择四个数
for i in range(4):
value =random.randint(0,12)
values = playingCards[value]
playingCard.append({str(style[random.randint(0,3)]+str(values)):value+1})
# pprint(playingCard)
#把花色 和 值 分别储存到两个列表中以便使用
CardColor =list( list(i.keys())[0] for i in playingCard)
CardValue =list( list(i.values())[0] for i in playingCard)
print("随机选取四个扑克牌为:")
print(CardColor)
result =DetermineWhetherItMeetsTheFourPointRule(
CardValue[0],
CardValue[1],
CardValue[2],
CardValue[3]
)
if len(result) ==0:
print("很遗憾,没有符合的表达式")
else:
print("符合该条件的表达式有:")
for i in result:
print(i)
def DetermineWhetherItMeetsTheFourPointRule(number1, number2, number3, number4):
result = []
symbols =['+','-','*','/']
#遍历 需要三个符号
for s1 in symbols:
for s2 in symbols:
for s3 in symbols:
#判断是否需要括号:
if s1+s2+s3 == '+++' or s1+s2+s3 == '***':
expression =["{}{}{}{}{}{}{}".format(number1,s1,number2,s2,number3,s3,number4)]
else:
expression=[
"(({} {} {}) {} {}) {} {}".format(number1, s1, number2, s2, number3, s3, number4),
"({} {} {}) {} ({} {} {})".format(number1, s1, number2, s2, number3, s3, number4),
"({} {} ({} {} {})) {} {}".format(number1, s1, number2, s2, number3, s3, number4),
"{} {} (({} {} {}) {} {})".format(number1, s1, number2, s2, number3, s3, number4),
"{} {} ({} {} ({} {} {}))".format(number1, s1, number2, s2, number3, s3, number4)
]
#检查表达式是否符合条件
#中间会报错 ZeroDivisionError: division by zero
for i in expression:
try:
if eval(i) == 24:
result.append(i)
except ZeroDivisionError:
pass #把0作为除数的部分过滤
#遍历结束
return result
if __name__=="__main__":
PrintAll()
结果: