请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
楼主: crossin

【每周一坑】3道题

[复制链接]

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2016-2-26 23:08:26 |显示全部楼层
catherinemic 发表于 2016-2-26 16:15
谢谢crossin老师,今天准备去看看爬虫的一些内容,但是看到headers里的一些属性,就不太懂了,感觉是跟网 ...

去网上搜相关的内容,关于html header,这个没捷径的,要靠经验积累,慢慢踩坑的。而且不同网站的限制可能会有区别,都要慢慢去解决的
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

1

好友

273

积分

中级会员

Rank: 3Rank: 3

发表于 2016-5-3 12:20:01 |显示全部楼层
crossin先生 发表于 2016-2-26 23:08
去网上搜相关的内容,关于html header,这个没捷径的,要靠经验积累,慢慢踩坑的。而且不同网站的限制可 ...

谢谢Crossin老师,好久没来啦,最近开学好忙,现在有点时间再捡起来,感觉之前看的有点忘了,先滚去复习了~~
回复

使用道具 举报

1

主题

0

好友

45

积分

新手上路

Rank: 1

发表于 2017-3-7 04:18:20 |显示全部楼层
本帖最后由 huiwenwu 于 2017-3-7 04:24 编辑
manhong2112 发表于 2016-1-16 18:47
這是練習一不知道為甚麼有時候player的分數會動,而且只出現在一開始
Edit: 似乎在一開始有不知名原因讓電腦 ...

对于题目1,只是这样输出的话会得到一个以元组为元素的列表,这个输出结果是不是不方便以写入文件?以下是我的解法,把结果变成字符串,写入文件(其实中间有好几步列组和字符串的转换)。
因为是刚入门,有点冗长,请教更简单的写法哈:

#!/usr/bin/python

text='History is his story.'

result={}

for i in text:
  num=0
  for j in text:
    if i==j:
      num +=1
  result=num
print result

result2=sorted(result.items(),key=lambda x:x[1], reverse=True)  #生成排序的以元组为元素的列表
print result2

result3=[]
for content in result2:
  content='%s:%s\n' % (content[0],content[1])
  result3.append(content)        #把结果转换成以字符串为元素的列表                           

print result3

result4=''.join(result3)          #把结果转换成字符串
print result4

output=file('times.txt','w')
output.write(result4)
output.close()

回复

使用道具 举报

1

主题

0

好友

45

积分

新手上路

Rank: 1

发表于 2017-3-7 04:25:45 |显示全部楼层
对于题目1,只是这样输出的话会得到一个以元组为元素的列表,这个输出结果是不是不方便以写入文件?以下是我的解法,把结果变成字符串,写入文件(其实中间有好几步列组和字符串的转换)。
因为是刚入门,有点冗长,请教更简单的写法哈:

#!/usr/bin/python

text='History is his story.'

result={}

for i in text:
  num=0
  for j in text:
    if i==j:
      num +=1
  result[i]=num
print result

result2=sorted(result.items(),key=lambda x:x[1], reverse=True)  #生成排序的以元组为元素的列表
print result2

result3=[]
for content in result2:
  content='%s:%s\n' % (content[0],content[1])
  result3.append(content)        #把结果转换成以字符串为元素的列表                           
print result3

result4=''.join(result3)          #把结果转换成字符串
print result4

output=file('times.txt','w')
output.write(result4)
output.close()

回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2017-3-7 13:51:03 |显示全部楼层
huiwenwu 发表于 2017-3-7 04:25
对于题目1,只是这样输出的话会得到一个以元组为元素的列表,这个输出结果是不是不方便以写入文件?以下是 ...

写得挺不错的
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

4

积分

新手上路

Rank: 1

发表于 2017-11-8 14:04:20 |显示全部楼层
def countz(text):
    #遍历text,并用count统计字符出现次数
    dict={}
    for c in text:
        cont=text.count(c)
        dict[c]=cont
    return dict


回复

使用道具 举报

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
回复

使用道具 举报

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
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

发表于 2020-10-18 23:37:18 |显示全部楼层
jodie 发表于 2020-10-17 10:12
第二道题:不是很理解“增加电脑玩家,同你一起进行游戏”这句,所以只写了一个用户 ...

意思是,再增加一个玩家,每次跟你一起猜(自动随机),一样的规则。就好比有个电脑跟你一起在押注
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

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-3-29 04:39 , Processed in 0.028372 second(s), 23 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部