设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 5828|回复: 2
打印 上一主题 下一主题

白丁一枚,断断续续学到40课,交个作业,望指点

[复制链接]

1

主题

0

好友

13

积分

新手上路

Rank: 1

跳转到指定楼层
楼主
发表于 2017-9-28 15:46:33 |只看该作者 |倒序浏览
本帖最后由 grass1996 于 2017-9-28 15:53 编辑

新手,学到40课,磕磕碰碰完善了一下猜数字游戏
本来只是想简单的完善下,没想到完善的代码比猜数字本身的代码多多了,中间也遇到很多问题,磕磕碰碰总算弄出来了有写的不好的地方或者可以精简代码做出来的,希望可以指点一下,谢谢。
有两个疑问:
\n 换行,为什么跑出来的效果是空了两行,不应该是只空一行吗?
另一个疑问是
chose == "Y" or chose == "Yes" 和 chose == "Y" or "yes" 的实现效果不一样,没太弄明白原理。
  1. from random import randint

  2. f = open("game.txt","rt")
  3. score = f.read().split()
  4. f.close()

  5. game_times = int(score[0])
  6. min_times = int(score[1])
  7. total_times = int(score[2])

  8. print ("Do you want to play game? Y or N")

  9. i = 1
  10. while i == 1 :
  11.         chose = input()
  12.         print ("\n")
  13.         if chose == "Y" or chose == "Yes":
  14.                 num = randint(1, 10) #Game start
  15.                 times = 0
  16.                 print ("Guess a number from 1 ~ 10")

  17.                 bingo = False
  18.                 while bingo == False:
  19.                         answer = input()
  20.                         if not answer.isdigit():
  21.                                 print("please choose a number from 1 ~ 10 \n")
  22.                                 continue
  23.                         else:
  24.                                 answer = int(answer)

  25.                         times +=1
  26.                         if answer < num:
  27.                                 print ("too small")
  28.                         if answer > num:
  29.                                 print ("too big")
  30.                         if answer == num:
  31.                                 print ("Bingo!")
  32.                                 bingo = True

  33.                 #count times
  34.                 if game_times == 0 or times < min_times or min_times == 0:
  35.                         min_times = times

  36.                 total_times += times
  37.                 game_times += 1

  38.                 if game_times > 0:
  39.                         avg_times = float(total_times) / game_times
  40.                 else:
  41.                         avg_times = 0

  42.                 #save score
  43.                 result = "%d %d %d" %(game_times, min_times, total_times)
  44.                 f = open ("game.txt", "wt")
  45.                 f.write(result)
  46.                 f.close()

  47.                 print ("玩了%d次, 最少%d轮猜出答案, 平均%.2f猜出答案 \n" %(
  48. game_times, min_times, avg_times))

  49.                 #again Y/N
  50.                 print ("Once again? Yes or No")


  51.         elif chose == "N" or chose == "No":
  52.                 break

  53.         elif chose == "C" or chose == "n": #RESET
  54.                 for l in range(len(score)):
  55.                         score[l] = 0

  56.                 with open ("game.txt", "w") as f:
  57.                         for item in score:
  58.                                 f.write("%s\t" %item)
  59.                 f.close()

  60.                 game_times = 0
  61.                 total_times = 0
  62.                 times = 0

  63.                 print ("RESET \n")
  64.                 print ("Do you want to play game? Y or N")
  65.                 continue
  66.                
  67.         else:
  68.                 print("please input Y or N \n")

  69. print ("Game over")
复制代码
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

沙发
发表于 2017-9-28 17:28:35 |只看该作者
1. print自身会在输出后换行,这个课程里应该有过类似练习,输出*图形那里
2.
chose == "Y" or "yes"
相当于
(chose == "Y") or ("yes" )
非空字符串相当于True,bool类型转换那课里有说
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

1

主题

0

好友

13

积分

新手上路

Rank: 1

板凳
发表于 2017-9-29 10:22:06 |只看该作者
crossin先生 发表于 2017-9-28 17:28
1. print自身会在输出后换行,这个课程里应该有过类似练习,输出*图形那里
2.
chose == "Y" or "yes"

明白了,非常感谢解惑~~
回复

使用道具 举报

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

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

GMT+8, 2024-11-24 04:48 , Processed in 0.026519 second(s), 23 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部