guess

事情的起因是这样的:

img

于是呼,写下了下面的代码输入不同的time,可以得到不同的结果

1
2
3
4
5
6
7
8
9
10
11
12
#!/usr/bin/python
# -*- coding: UTF-8 -*-
time = 5
guess = ['你猜我']
for x in range(time):
guess.append('猜你')
str = ''
for x in guess:
str += x
last = '猜不猜'
str += last
print str[0:]

运用到的知识:

  • 字符串的拼接
  • 列表的扩展
  • 字符串的输出,不能直接这样输出
  • 输出的时候用[0:]可以去掉引号
1
2
3
print guess

['\xe4\xbd\xa0\xe7\x8c\x9c\xe6\x88\x91', '\xe7\x8c\x9c\xe4\xbd\xa0', '\xe7\x8c\x9c\xe4\xbd\xa0', '\xe7\x8c\x9c\xe4\xbd\xa0', '\xe7\x8c\x9c\xe4\xbd\xa0', '\xe7\x8c\x9c\xe4\xbd\xa0']

她这样回复的:

img

她敢嘲笑我大Python不行,说Python麻烦,于是吸取她的代码经验,不需要存储直接print就好(我经常犯这种错误,经常存储起来然后使用!!!)

1
print "%s%s%s" % ('你猜我', 5*'猜你', '猜不猜')

这个地方也可以这样写:

1
print "{}{}{}".format('你猜我', 5*'猜你', '猜不猜')

这个地方不能这样写,是因为:

1
2
3
4
print '你猜我',
for x in range(5):
print '猜你',
print '猜不猜'

因为Python中默认print是换行输出的,所以这里要加逗号,但是这样的话会有空格

结果如下:

1
你猜我 猜你 猜你 猜你 猜你 猜你 猜不猜

就着这个时候,他说不行,逻辑是错的,应该是你猜与我猜交叉:

于是经过近乎斗气般的努力:

敲出了如下语句:

1
print "".join([('猜你' if x % 2 == 0 else '猜我')for x in range(1, 11)])

首先我们是这样添加头的:

1
print "hello".join([('猜你' if x % 2 == 0 else '猜我')for x in range(1, 11)])

然而出现了下面情况:

1
猜我hello猜你hello猜我hello猜你hello猜我hello猜你hello猜我hello猜你hello猜我hello猜你

查原因请看附录中join的用法

然后改成这样添加头与尾:

1
print "{}{}{}".format('你猜我', ''.join([('猜你' if x % 2 == 1 else '猜我')for x in range(1, 11)]), '猜不猜')

效果:

1
你猜我猜你猜我猜你猜我猜你猜我猜你猜我猜你猜我猜不猜

最终当然是我伟大的Python赢了,于是乎结果:

img

PS:Python一行打印心形:

1
print'\n'.join([''.join([('PYTHON!'[(x-y)%7]if((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3<=0 else' ')for x in range(-30,30)])for y in range(15,-15,-1)])
------ 本文结束------
坚持原创技术分享,您的支持将鼓励我继续创作!

欢迎关注我的其它发布渠道