```python
【1.字典翻转】用户输入一个字典格式的字符串,利用eval()函数将字符串转换为字典,然后反转其中键值对输出。即,读入字典key:value模式,输出value:key模式。如果输入不正确,提示输入错误。(try…except…)
【2. 游戏编程】很多人都玩过"石头-剪子-布"的猜拳游戏,它又叫"Rochambeau"。规则是:你和你的对手在同一刻做出特定的手势,这个手势必须是石头、剪子、布中的一种手势。当满足以下规则时产生胜者。
布包石头.
石头砸剪子,
剪子剪破布.
现分别使用两个List:
(1)guess_list = ["石头", "剪刀", "布"]
(2)win_combination = [["布", "石头"], ["石头", "剪刀"], ["剪刀", "布"]]
其中,guess_list包括猜拳的种类,win_combination包含获胜规则。
请你编程操纵这两个list,实现“人-机”猜拳游戏。用户输入一个选项,计算机给出一个随机选项,然后由程序来判断谁是胜利者或者平手。
【3.】用水量文件“water.txt”的第一列为账号,后面是每个月的用水量(后一个数-前一个数),共12个月。每立方米需付1.05元。一行代表一户一年的数据。编程计算每户一年的水费。
(写出程序源码,并粘贴运行结果截图)
提示:1、先打开文件(用with…as…方式),用for…in…方式遍历文件中的每一行(逐行遍历,逐行处理的方式);2、每行内容构成一个字符串,利用strip函数去掉字符串末尾的’\n’字符,利用split函数将字符串分隔为列表;3、设置变量sum1=0,利用for循环,依次求两个相邻数据(注意:需要进行类型转换)的差,并将其叠加到sum1上,遍历结束后sum1存储的是某用户今年用水总量;4、用水总量*1.05求出需要交的水费。
【4.】文件data.txt中有若干整数,所有整数之间使用英文逗号分隔,编写程序读取所有整数,将其按升序排序后再写入文本文件data_asc.txt中。(写出程序源码,并粘贴运行结果截图)
提示:1、先打开文件(用with…as…方式),建立空列表lst,用于将每一行处理后的内容添加进去;2、用for…in…方式遍历文件中的每一行(逐行遍历,逐行处理的方式),每行内容构成一个字符串,利用strip函数去掉字符串末尾的’\n’字符,利用split函数将字符串分隔为列表;3、将每行处理产生的列表添加到已建立的列表lst中(思考使用extend还是append);4、将列表lst中的每个元素由字符串类型转换为整型;5、对列表lst排序;6、用join函数将列表中的每个元素用‘,’连接成一个字符串(用join函数连接列表中每个元素时,列表元素必须为字符串类型,因此需要将列表中的每个元素由整型转换为字符串);7、将连接好的字符串利用write函数写入文件data_asc.txt中。
【5.】请统计hamlet.txt文件中出现的英文单词情况,统计并输出出现最多的10个单词,注意:(1) 单词不区分大小写;(2) 请在文本中剔除如下特殊符号:!"#$%&()*+,-./:;<=>?@[\\]^_‘{|}~;(3) 输出出现最多的10个单词,每个单词一行;(4) 将统计结果再写入文本文件hamlet_data.txt中。
提示:1、先打开文件(用with…as…方式),利用read函数将文件中的内容读到一个大字符串中;2、利用lower函数将大字符串中的所有字符改为小写;3、利用replace函数将字符串中的特殊字符替换掉(替换为空格或者空字符串);4、利用split函数将字符串分隔为列表;5、建立空字典,遍历列表,统计每个单词出现的次数;6、利用sorted函数对列表进行排序;7、输出出现最多的10个单词;8、将统计结果写入文本文件hamlet_data.txt中。
第一题:
try:
dic = eval(input())
dic_s = {value: key for key, value in dic.items()}
print(dic_s)
except:
print('输入错误')
第二题:
import random
guess_list = ["石头", "剪刀", "布"]
win_combination = [["布", "石头"], ["石头", "剪刀"], ["剪刀", "布"]]
while 1:
inp = input("请猜拳:")
com = random.choice(guess_list)
if inp == com:
print("平手")
elif [inp, com] in win_combination:
print('你赢了')
else:
print('你输了')
第三题:
with open("water.txt", 'r') as f:
for line in f.readlines():
data_list = line.strip().split(',') # 这里逗号为分割两列的字符,我看不到文件不知道是啥,是啥改成啥就行了
sum1 = 0
for num in data_list[1:]:
sum1 += int(num)
print(sum1 * 1.05)
四五
# 第四题
with open('data.txt', 'r') as f:
nums = [int(temp) for temp in f.read().split(',')]
nums = sorted(nums, reverse=False)
nums = [str(temp) for temp in nums]
with open('data_asc.txt', 'w') as f:
f.write(','.join(nums))
# 第五题
with open('hamlet.txt', 'r') as f:
data = f.read().lower()
s = '!"#$%&()*+,-./:;<=>?@[]^_‘{|}'
for t in s:
data = data.replace(t, ' ')
data_list = data.split()
dic = {}
for word in data_list:
dic[word] = dic.get(word, 0) + 1
dic = sorted(dic.items(), key=lambda x:x[1], reverse=True)
with open('hamlet_data.txt', 'w') as f:
for i in dic[:10]:
print(i)
f.write(str(i) + '\n')
2.
import random
import string
guess_list = ["石头", "剪刀", "布"]
win_combination = [["布", "石头"], ["石头", "剪刀"], ["剪刀", "布"]]
num=15
while num:
num-=1
a=random.randint(0,3)
print('输入\n1:石头\n2:剪刀\n3:布')
b=int(input())
print('你出 ',guess_list[b-1])
print('对方出 ',guess_list[a-1])
if a==b:
print('ave')
c=guess_list[b-1]+guess_list[a-1]
d=guess_list[a-1]+guess_list[b-1]
e=[" "," "," "]
for i in range(0,3):
tem="".join(win_combination[i])
e[i]=tem
for i in range(0,3):
if c==e[i]:
print('win')
break
if d==e[i]:
print('lost')
break