Crossin的编程教室

标题: 【每周一坑】3道题 [打印本页]

作者: crossin    时间: 2015-8-30 00:13
标题: 【每周一坑】3道题
1.难度:★
从控制台输入或从文件中读入一段文本,统计出其中每个字符出现的次数,并按照出现次数排序输出。
例如:
History is his story.
输出:
s:4
i:3
:3
t:2
o:2
r:2
y:2
h:1
H:1
.:1

2.难度:★★
制作一个骰子游戏:假想有3个6面骰子,可以掷出3~18的数,其中3~10为小,11~18为大。起始为100分,每掷一次之前先押注,可押大小或数字,可重复下注。掷出结果后,押中大小,所押分数翻倍返还;押中数字,所押分数10倍返还。
增加电脑玩家,同你一起进行游戏。

3.难度:★★★
脚本登陆器
挑一个你看得顺眼的网站,通过代码模拟登录请求,并获取登录状态。进而再模拟进行用户操作,如发表状态、留言、评论等。
模拟登录是自动抓取某些网站的必要步骤。




作者: 冷月无声    时间: 2015-10-26 01:03
为什么没有答案啊
作者: crossin先生    时间: 2015-10-26 13:03
冷月无声 发表于 2015-10-26 01:03
为什么没有答案啊

管挖不管埋
作者: manhong2112    时间: 2016-1-16 16:57
所謂的"重复下注"是指同時下注大,小,數字還是指下注多次分數啊?
作者: crossin先生    时间: 2016-1-16 17:11
manhong2112 发表于 2016-1-16 16:57
所謂的"重复下注"是指同時下注大,小,數字還是指下注多次分數啊?

同时下注好几个
作者: manhong2112    时间: 2016-1-16 18:47
本帖最后由 manhong2112 于 2016-1-16 22:21 编辑
  1. def ex1(text):
  2.   i = {}
  3.   for j in text:
  4.     if j in i: i[j] += 1
  5.     else: i[j] = 1
  6.   return sorted(i.items(),key=lambda i: i[1],reverse=True)

  7. print(ex1("History is his story."))
复制代码
這是練習一
  1. def ex2():
  2.   from random import randint
  3.   from sys import exit

  4.   class Game:
  5.     thrownNumber = 0
  6.     gameRound = 0

  7.     def startNewGame(self):
  8.       self.gameRound += 1
  9.       print("New Game start, Round",self.gameRound)
  10.       self.thrownNumber = randint(3,18)

  11.     def endGame(self,*players):
  12.       for i in players:
  13.         playerScore = 0
  14.         playerScore += i.bet.get("big",0) * 2 if self.thrownNumber >= 11 else 0
  15.         playerScore += i.bet.get("small",0) * 2 if self.thrownNumber < 11 else 0
  16.         playerScore += i.bet.get(str(self.thrownNumber),0) * 10
  17.         i.score += playerScore
  18.         i.bet = {}

  19.   class Player():
  20.     score = 0
  21.     bet = {}
  22.     id = ""
  23.     def __init__(self,id,score = 100):
  24.       self.id = id
  25.       self.score = score
  26.       self.bet = {}

  27.     def addBet(self,type,betScore):
  28.       if self.score - betScore < 0: raise ValueError()
  29.       self.bet[type] = self.bet.get(type,0) + betScore
  30.       self.score -= betScore

  31.   class Computer(Player):
  32.     def addBet(self):
  33.       for i in range(randint(1,5)):
  34.         try:
  35.           betScore = randint(1,int(self.score/randint(1,5)) + 1)
  36.           if randint(0,1):
  37.             super().addBet("big" if randint(0,1) else "small",betScore)
  38.           else:
  39.             super().addBet(str(randint(3,18)),betScore)
  40.           pass
  41.         except ValueError: break

  42.   comp = Computer("Computer")
  43.   player = Player(input("Input Your Name: \n> "))
  44.   game = Game()

  45.   # game main body
  46.   while True:
  47.     game.startNewGame()
  48.     # print(game.thrownNumber)

  49.     # read input
  50.     print("Input 'quit' to end game, input 'end' or leave blank to end input, input as '<type/number> <bet>' to bet")
  51.     while True:
  52.       tmp = input("> ")
  53.       if tmp == "end" or tmp == "": break
  54.       if tmp == "quit": exit(0)
  55.       tmp = tmp.split(" ")
  56.       try: player.addBet(tmp[0],int(tmp[1]))
  57.       except ValueError: print("Over your existing score")
  58.       except IndexError: print("Wrong input, try again")

  59.     comp.addBet()
  60.     print(comp.id," bet ",comp.bet,sep="")
  61.     print(player.id," bet ",player.bet,sep="")

  62.     game.endGame(player,comp)
  63.     print("Number is", game.thrownNumber)

  64.     print(comp.id,"'s score: ",comp.score,sep="")
  65.     print(player.id,"'s score: ",player.score,sep="")

  66.     print("="*24,sep="")

  67. ex2()
复制代码
不知道為甚麼有時候player的分數會動,而且只出現在一開始
Edit: 似乎在一開始有不知名原因讓電腦的下注寫入到玩家的下注了
Edit: 似乎沒這麼簡單,第一回兩者的下注合在一起了? ! 而且只限於第一回?!!!
Edit: 將繼承去掉後就能正常運作,然而我依然不懂繼承的哪裡弄錯了,都快崩潰啦TAT
Edit: 雖然不太清楚為甚麼,但兩個對象的dict都指向了同一個位址,是因為繼承直接把列表的位址也複製了嗎?也就是說,繼承時子類的東西是直接指向父類?
Edit: 在 __init__ 把dict初始化了, 也沒太大問題了,美化就懶的弄了,就醬子吧!
Edit: 插一句不相關的,能否加個折疊之類的把代碼折起來,免得一大串代碼放在那邊佔空間  
作者: catherinemic    时间: 2016-2-25 21:15
做第一题的时候遇到set这个概念,去查了下大致都懂了,但是有一个问题想请教crossin先生:
我知道set是无序的,但是在输出的时候却感觉总是有固定顺序,例如:
s = set([1, 2, 2, 3, 3, 3])
print s
for i in s:
        print i,
永远输出:
set([1, 2, 3])
1 2 3
如果:
a = [11, 22, 33, 44, 11, 22]
print set(a)
永远输出:
set([33, 11, 44, 22])
另外,如果s = {0, 1, 2, 3},调用s.pop(),又总是pop出0这个元素...
以上这些是为什么呢?
作者: catherinemic    时间: 2016-2-25 21:27
catherinemic 发表于 2016-2-25 21:15
做第一题的时候遇到set这个概念,去查了下大致都懂了,但是有一个问题想请教crossin先生:
我知道set是无序 ...

好像是电脑会有记忆一样,在别人的电脑上run一下,是不是就会有不一样的结果?
作者: crossin先生    时间: 2016-2-25 22:15
catherinemic 发表于 2016-2-25 21:27
好像是电脑会有记忆一样,在别人的电脑上run一下,是不是就会有不一样的结果? ...

这个我不知道。但无序不代表乱序,它的顺序肯定跟它的实现有关,输入条件不变,顺序每次应该是一致的。至于会是什么顺序,那要去看它的源码实现了
作者: catherinemic    时间: 2016-2-26 16:15
crossin先生 发表于 2016-2-25 22:15
这个我不知道。但无序不代表乱序,它的顺序肯定跟它的实现有关,输入条件不变,顺序每次应该是一致的。至 ...

谢谢crossin老师,今天准备去看看爬虫的一些内容,但是看到headers里的一些属性,就不太懂了,感觉是跟网页相关的一些东西,这些内容该怎么学呢?
作者: crossin先生    时间: 2016-2-26 23:08
catherinemic 发表于 2016-2-26 16:15
谢谢crossin老师,今天准备去看看爬虫的一些内容,但是看到headers里的一些属性,就不太懂了,感觉是跟网 ...

去网上搜相关的内容,关于html header,这个没捷径的,要靠经验积累,慢慢踩坑的。而且不同网站的限制可能会有区别,都要慢慢去解决的
作者: catherinemic    时间: 2016-5-3 12:20
crossin先生 发表于 2016-2-26 23:08
去网上搜相关的内容,关于html header,这个没捷径的,要靠经验积累,慢慢踩坑的。而且不同网站的限制可 ...

谢谢Crossin老师,好久没来啦,最近开学好忙,现在有点时间再捡起来,感觉之前看的有点忘了,先滚去复习了~~
作者: huiwenwu    时间: 2017-3-7 04:18
本帖最后由 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()


作者: huiwenwu    时间: 2017-3-7 04:25
对于题目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()


作者: crossin先生    时间: 2017-3-7 13:51
huiwenwu 发表于 2017-3-7 04:25
对于题目1,只是这样输出的话会得到一个以元组为元素的列表,这个输出结果是不是不方便以写入文件?以下是 ...

写得挺不错的
作者: niki_fan    时间: 2017-11-8 14:04
def countz(text):
    #遍历text,并用count统计字符出现次数
    dict={}
    for c in text:
        cont=text.count(c)
        dict[c]=cont
    return dict



作者: jodie    时间: 2020-10-17 10:04
第一道题
  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


作者: jodie    时间: 2020-10-17 10:12
本帖最后由 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


作者: crossin先生    时间: 2020-10-18 23:37
jodie 发表于 2020-10-17 10:12
第二道题:不是很理解“增加电脑玩家,同你一起进行游戏”这句,所以只写了一个用户 ...

意思是,再增加一个玩家,每次跟你一起猜(自动随机),一样的规则。就好比有个电脑跟你一起在押注
作者: jodie    时间: 2020-10-26 15:10
第三题:
  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("今天天气真好!")



复制代码

作者: FERRYMAN    时间: 2021-2-9 19:56
  1. import re

  2. def fangfa(text_):
  3.     text = re.findall(r'.',text_)
  4.     #  print(text)
  5.     keylist = set(text)
  6.     #  print(keylist)
  7.     dic = {}
  8.     for keylists in keylist:
  9.         dic[keylists] = 0
  10.     for texts in text:
  11.         if texts in keylist:
  12.             dic[texts] += 1
  13.     #  print(dic)
  14.     sortext = sorted(dic.items(), key=lambda l: l[1], reverse = True)
  15.     for sortexts in sortext:
  16.         print(sortexts[0] + ':' + str(sortexts[1]))
  17.         
  18. fangfa('History is his story')
复制代码
希望老师还能看到

不知道我这样行不行

渴望老师的建议和意见
(比如说哪里太繁琐了、可以更简洁,或者哪里不够合理、可以更有逻辑)

谢谢各位老师

作者: crossin先生    时间: 2021-2-10 17:00
FERRYMAN 发表于 2021-2-9 19:56
希望老师还能看到

不知道我这样行不行

没必要用正则,直接字符转列表即可
作者: FERRYMAN    时间: 2021-2-10 17:16
crossin先生 发表于 2021-2-10 17:00
没必要用正则,直接字符转列表即可

好的,谢谢老师
作者: FERRYMAN    时间: 2021-2-14 18:15
第二题

希望老师能看看

有一个问题(不知道是不是我多虑了):如果有某些用户心血来潮,押注的是一些奇奇怪怪的东西,刚好又不会被while检测到,那该怎么解决呢?

谢谢老师啦
  1. import random

  2. my_score = 100
  3. com_score = 100

  4. yx_rule = "游戏规则:\n双方玩家分别为真人和电脑,初始分数均为100.\n"
  5. yx_rule += "有3个6面骰子,可以掷出总和为3~18的数,其中3~10为'small',11~18为'big',总和为实际数字.\n"
  6. yx_rule += "游戏开始后可押'big'或'small',或3~18中的数字(最多5个),也可同时押大小和数字.\n"
  7. yx_rule += "双方玩家的计分制度相同:押中大小,加分数为实际数字的两倍;押中数字,加分数为实际数字的10倍;\n"
  8. yx_rule += "同样存在扣分机制:若押了超过2个数字,扣分数为 (押注中的数字个数 - 2)* (实际数字的2倍)."
  9. print(yx_rule)
  10. print('\nOK!游戏开始啰!\n\n')

  11. active = True  #使用变量作为循环条件便于后面退出循环
  12. while active == True:
  13.     input_w = "请押注:\n您可以押'big''small'或3~18中的任意整数,或同时押注.\n"
  14.     input_w += "(最多押1个大小和3个不重复的数字.若同时押注,您需要用逗号分隔.)\n"
  15.     mb_input = input(input_w)
  16.     mb_num = []
  17.     mb_str = []
  18.     sy = []   #sy为不舍去的情况下的数字列,若sy长度大于mb_num,即可判断有不符合条件的数,并进入while循环
  19.     for a in mb_input.split(','):
  20.         if a.isnumeric():
  21.             sy.append(a)
  22.             if (int(a) > 18) or (int(a) < 3):  #若不符合条件将被舍去
  23.                 continue
  24.             mb_num.append(int(a))
  25.         elif a.isalpha():
  26.             mb_str.append(a)

  27.     while (len(set(mb_num)) < len(mb_num)) or (len(mb_num) > 5) or (len(mb_str) > 1) or (len(mb_num) < len(sy)):
  28.         mb_num = []
  29.         mb_str = []
  30.         sy = []
  31.         print("注意!最多押1个大小和3个不重复的数字(3~18)!重复押注要用逗号分隔!")
  32.         mb_input = input("请重新押注:")
  33.         for a in mb_input.split(','):
  34.             if a.isnumeric():
  35.                 sy.append(a)
  36.                 if (int(a) > 18) or (int(a) < 3):
  37.                     continue
  38.                 mb_num.append(int(a))
  39.             elif a.isalpha():
  40.                 mb_str.append(a)  #这一段和while前的那段基本相同
  41.     if mb_str:
  42.         mb_str = mb_str[0]
  43.     #以上为记录用户输入部分:得到所押大小&数字
  44.    
  45.     d_1 = random.randint(1,6)
  46.     d_2 = random.randint(1,6)
  47.     d_3 = random.randint(1,6)
  48.     #专门定义三个dice而不是直接random.randint(3,18),增加点儿真实感(?)
  49.     real_num = d_1 + d_2 + d_3
  50.     if d_1 + d_2 + d_3 <= 10:
  51.         real_str = 'small'
  52.     elif d_1 + d_2 + d_3 >= 11:
  53.         real_str = 'big'

  54.     if mb_str:
  55.         if mb_str == real_str:
  56.             my_score += real_num * 2
  57.     for mn in mb_num:
  58.         if mn == real_num:
  59.             my_score += real_num * 10
  60.             if len(mb_num) > 2:
  61.                 my_score -= (real_num * 2) * (len(mb_num) - 2)
  62.     if (real_num not in mb_num) and (len(mb_num) > 2):
  63.         my_score -= (real_num * 2) * (len(mb_num) - 2)

  64.     com_str = random.choice(['big','small'])
  65.     com_num = random.randint(3,18)
  66.     if com_str == real_str:
  67.         com_score += real_num * 2
  68.     if com_num == real_num:
  69.         com_score += real_num * 10
  70.     #以上为后台判断部分

  71.     print('你押了: %s' % mb_input)
  72.     print('电脑玩家押了: %s,%d' % (com_str, com_num))
  73.     print('骰子分别掷出%d,%d,%d,实际数字为%d,实际大小为%s' % (d_1,d_2,d_3,real_num,real_str))
  74.     print('\n那么,您和电脑玩家的比分现在是: %d - %d' % (my_score, com_score))
  75.     #以上为输出结果部分
  76.    
  77.     b = 1  #先定义b以进入while循环
  78.     while b != '':   #防止玩家兴趣渐消
  79.         b = input("如果要结束游戏,请输入'quit'.要继续的话请按回车哦.\n")
  80.         if b == 'quit':
  81.             active = False
  82.             print('游戏结束,拜拜!')
  83.             break
  84.     #以上为判断是否结束游戏部分

复制代码

作者: crossin先生    时间: 2021-2-16 23:05
FERRYMAN 发表于 2021-2-14 18:15
第二题

希望老师能看看

输出后加个if条件判断输入的内容是不是符合要求的
作者: FERRYMAN    时间: 2021-2-17 11:16
crossin先生 发表于 2021-2-16 23:05
输出后加个if条件判断输入的内容是不是符合要求的

哦!懂了。谢谢老师
作者: ZZZZZ    时间: 2021-5-16 20:47
本帖最后由 ZZZZZ 于 2021-5-16 20:48 编辑
  1. # 第一题
  2. s = input()
  3. d = {}
  4. for i in s:
  5.   if i != '':
  6.     if i in d:
  7.       d[i] += 1
  8.     else:
  9.       d[i] = 1
  10. for i in d:
  11.   print('%s: %d' % (i, d[i]))
复制代码

作者: chinaso1111    时间: 2021-7-6 17:26
代码如下:
a=input('输入一段字,我能猜出这串字符里面每个字符出现的次数\n')
d={}
for b in a:
    d[b]=(a.count(b))
d_order=sorted(d.items(),key=lambda x:x[1],reverse=True)#排序
print(d_order)

运行结果如下:
[('s', 4), ('i', 3), (' ', 3), ('h', 2), ('t', 2), ('o', 2), ('r', 2), ('y', 2)]

但是怎么运行结果输出成如题的格式,我试了以下两种方式:
方式一:for key in d_order:
    print("{}:{}".format(key,d_order[key]))

报错如下:Traceback (most recent call last):
  File "C:/Users/duoduo520/AppData/Local/Programs/Python/Python39/ChacreterNumber3.py", line 9, in <module>
    print("{}:{}".format(key,d_order[key]))
TypeError: list indices must be integers or slices, not tuple
方式二:
for key in d_order:
     print(f'"{key}":{d_order[key]}')
报错如下:
Traceback (most recent call last):
  File "C:/Users/duoduo520/AppData/Local/Programs/Python/Python39/ChacreterNumber3.py", line 9, in <module>
    print(f'"{key}":{d_order[key]}')
TypeError: list indices must be integers or slices, not tuple

看了好长时间还是没明白,怎么修改,请crossin老师指导,谢谢!
作者: crossin先生    时间: 2021-7-6 19:44
chinaso1111 发表于 2021-7-6 17:26
代码如下:
a=input('输入一段字,我能猜出这串字符里面每个字符出现的次数\n')
d={}

你代码中的d_order 是个列表,列表里面元素是元组。但是你的代码在把它当字典来处理,所以不对
  1. for elem in d_order:
  2.     print(elem[0], ':', elem[1])
复制代码

作者: chinaso1111    时间: 2021-7-7 12:42
crossin先生 发表于 2021-7-6 19:44
你代码中的d_order 是个列表,列表里面元素是元组。但是你的代码在把它当字典来处理,所以不对 ...

谢谢crossin老师,




欢迎光临 Crossin的编程教室 (https://bbs.crossincode.com/) Powered by Discuz! X2.5