设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
楼主: crossin
打印 上一主题 下一主题

【每周一坑】3道题

[复制链接]

0

主题

0

好友

52

积分

注册会员

Rank: 2

楼主
发表于 2020-10-17 10:04:50 |显示全部楼层
第一道题
  1. def count(string):
  2.     # 将字符串的每个字符拆开
  3.     string_list = list(string)
  4.     result_dict = {}
  5.     # 统计
  6.     for one in string_list:
  7.         if one not in result_dict.keys():
  8.             result_dict[one] = 0
  9.         result_dict[one] += 1
  10.     return result_dict


  11. if __name__ == "__main__":
  12.     # 判断是否输入空字符串
  13.     while True:
  14.         input_str = input("请输入文本: ")
  15.         if input_str.strip() != "":
  16.             break
  17.         print("请勿输入空字符串")
  18.    
  19.     result = count(input_str)
  20.     print("----------------统计结果如下---------------")
  21.     for x,y in result.items():
  22.         print("{}: {}".format(x,y))
复制代码

result1.jpg (16.84 KB, 下载次数: 349)

result1.jpg

回复

使用道具 举报

0

主题

0

好友

52

积分

注册会员

Rank: 2

沙发
发表于 2020-10-17 10:12:42 |显示全部楼层
本帖最后由 jodie 于 2020-10-17 10:16 编辑

第二道题:不是很理解“增加电脑玩家,同你一起进行游戏”这句,所以只写了一个用户
  1. from random import randint
  2. import time


  3. def play_game():
  4.     '''进行游戏'''
  5.     total = 0
  6.     print("开始掷骰子···")
  7.     time.sleep(3)
  8.     result_list = []

  9.     # 获取三个随机数
  10.     for i in range(0,3):
  11.         random_num = randint(1,6)
  12.         result_list.append(random_num)
  13.     print("三个骰子的点数分别为:{}、{}、{}".format(result_list[0],result_list[1],result_list[2]))

  14.     # 获取三个随机数的总数
  15.     for i  in range(0,3):
  16.         total += result_list[i]
  17.     print("总点数为{}".format(total))

  18.     # 判断总点数是 大 还是 小
  19.     if total >= 3 and total <= 10:
  20.         result_type = "小"
  21.     else:
  22.         result_type = "大"

  23.     return str(total), result_type



  24. def calculate_score(player,result_list):
  25.     '''计算游戏玩家最后得分'''
  26.     for one in result_list:
  27.         if one in player.bet_choice.keys():
  28.             if one == "大" or one == "小":
  29.                 player.existing_score += player.bet_choice[one] * 2
  30.             else:
  31.                 player.existing_score += player.bet_choice[one] * 10

  32.     print("游戏玩家:{}的最终分数为{}".format(player.name, player.existing_score))



  33. class Player():
  34.     '''游戏玩家'''
  35.     def __init__(self,name):
  36.         self.name = name
  37.         self.existing_score = 100
  38.         self.bet_choice = {}

  39.     def bet(self,choice,score):
  40.         '''押注,保存押注结果'''
  41.         if score > self.existing_score:
  42.             return False
  43.         else:
  44.             if choice not in self.bet_choice.keys():
  45.                 self.bet_choice[choice] = 0

  46.             self.bet_choice[choice] += score
  47.             self.existing_score -= score
  48.             return True



  49. def main():
  50.     print("------------------游戏开始-----------------")
  51.     player_name = input("请输入你的名字: ").strip()
  52.     # 玩家对象
  53.     player = Player(player_name)

  54.     # 判断是否再玩一局
  55.     while True:
  56.         # 判断是否多次下注,“否”则退出,“是”则继续循环
  57.         while True:
  58.             player_bet_choice = input("押大?押小?还是押数字?(输入“大”、“小”和3~18之间的数字)").strip()
  59.             # 判断押注的分数是否大于现有的分数,小于则退出循环,大于则重新输入分数
  60.             while True:
  61.                 player_bet_score = int(input("押几分?"))

  62.                 if player.bet(player_bet_choice, player_bet_score):
  63.                     break
  64.                     
  65.                 print("余下分数不足,请重新输入!")


  66.             bet_again = input("再次下注吗?是?否?").strip()
  67.             if bet_again == "否":
  68.                 break
  69.             print("-----------------再次下注-----------------")

  70.         # 开始游戏,计算结果
  71.         result_list = play_game()
  72.         calculate_score(player, result_list)


  73.         play_again = input("再玩一局吗?是?否?").strip()
  74.         if play_again == "否":
  75.             break
  76.             
  77.             
  78.         print("------------------再来一局-----------------")

  79.     print("------------------游戏结束-----------------")




  80. if __name__ == "__main__":
  81.     main()
  82.    
复制代码

result2.jpg (44.51 KB, 下载次数: 355)

result2.jpg

回复

使用道具 举报

0

主题

0

好友

52

积分

注册会员

Rank: 2

板凳
发表于 2020-10-26 15:10:34 |显示全部楼层
第三题:
  1. '''
  2. 模拟登陆豆瓣
  3. '''

  4. import requests
  5. import urllib3

  6. urllib3.disable_warnings()

  7. base_url = "https://www.douban.com"
  8. headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36"}
  9. session = requests.session()

  10. # 获取cookie
  11. def get_cookies():
  12.     r = session.get(base_url,headers = headers,verify = False)
  13.     cookies = r.cookies
  14.     return cookies

  15. # 登录
  16. def login(name,password):
  17.     login_url = "https://accounts.douban.com/j/mobile/login/basic"
  18.     data = {"ck":"","remember":"true","name":name,"password":password}
  19.     r = session.post(login_url, headers = headers, data=data)
  20.     return r
  21. # 发表广播
  22. def post(comment):
  23.     cookies = get_cookies()
  24.     ck = cookies["ck"]
  25.     post_data = {"ck":ck,"comment": comment,"privacy_and_reply_limit": "X,"}
  26.     res = session.post(base_url,headers = headers,data = post_data)

  27. if __name__ == "__main__":
  28.     get_cookies()
  29.     login("username","password")
  30.     post("今天天气真好!")



复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-5-2 16:36 , Processed in 0.017643 second(s), 24 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部