Crossin的编程教室

标题: 【Python 第14课】 字符串格式化 [打印本页]

作者: crossin先生    时间: 2014-4-23 17:28
标题: 【Python 第14课】 字符串格式化
我们在输出字符串的时候,如果想对输出的内容进行一些整理,比如把几段字符拼接起来,或者把一段字符插入到另一段字符中间,就需要用到字符串的格式化输出。

先从简单的开始,如果你想把两段字符连起来输出
str1 = 'good'
str2 = 'bye'

你可以
print str1 + str2

或者还可以把字符变量一个字符串相加
print 'very' + str1
print str1 + ' and ' + str2

但如果你想要把一个数字加到文字后面输出,比如这样
num = 18
print 'My age is' + num
程序就会报错。因为字符和数字不能直接用+相加。

一种解决方法是,用str()把数字转换成字符串
print 'My age is' + str(18)
num = 18
print 'My age is' + str(num)

还有一种方法,就是用%对字符串进行格式化
num = 18
print 'My age is %d' % num
输出的时候,%d会被%后面的值替换。输出
My age is 18

这里,%d只能用来替换整数。如果你想格式化的数值是小数,要用%f
print ‘Price is %f’ % 4.99
输出
Price is 4.990000

如果你想保留两位小数,需要在f前面加上条件:%.2f
print ‘Price is %.2f’ % 4.99
输出
Price is 4.99

另外,可以用%s来替换一段字符串
name = 'Crossin'
print '%s is a good teacher.' % name
输出
Crossin is a good teacher.

或者
print 'Today is %s.' % 'Friday'
输出
Today is Friday.

注意区分:有引号的表示一段字符,没有引号的就是一个变量,这个变量可能是字符,也可能是数字,但一定要和%所表示的格式相一致。

现在,试试看用字符串格式化改进一下之前你写的小游戏。
比如你输了一个数字72,程序会回答你
72 is too small.
或者
Bingo, 72 is the right answer!


作者: Flughafencon    时间: 2015-1-4 21:54
本帖最后由 Flughafencon 于 2015-1-4 21:55 编辑
  1. from random import randint

  2. print "guess what i think?"
  3. bingo = False
  4. num = randint(1, 100)

  5. while bingo == False:
  6.     answer = input()

  7.     if answer < num:
  8.         print str(answer) + " is too small!!"

  9.     if answer > num:
  10.         print str(answer) + " is too big!!"

  11.     if answer == num:
  12.         print str(answer) + "?, finally bingo!!"
  13.         bingo = True
复制代码

作者: sunbin726    时间: 2015-1-17 12:32
from random import randint
num = randint(1,100)
print 'guess what i think?'
bingo = True

while bingo == True:
    answer = input()

    if answer < num:
        print '%s is too small!' % answer

    if answer > num:
        print '%s is too big!' % answer

    if answer == num:
        print 'BINGO, %s is the right answer!' % answer
        bingo = False
作者: zzxomg    时间: 2015-3-12 21:08
  1. #coding:utf-8
  2. #猜数游戏1.0
  3. #zzx 2015.03.12
  4. print '-------------------------欢迎光临新新猜数游戏,猜中了有大奖哦!-------------------'
  5. print '规则:1-10的整数,随机一个'
  6. from random import randint
  7. num = randint(1,11)

  8. while True :
  9.                 input_num =int(raw_input('输入你心仪的数吧:'))
  10.                 if input_num < num :
  11.                                 print '您输入的数是:%d,小了哦' %input_num
  12.                                 continue
  13.                 elif input_num > num :
  14.                                 print '您输入的数是:%d,大了哦' %input_num
  15.                                 continue
  16.                 elif input_num == num :
  17.                                 print '您输入的的数是:%d,您很厉害啊,猜对了,亲亲!' %input_num
  18.                                 brea
复制代码

作者: fix    时间: 2015-5-12 23:43

from random import randint

print 'which num?'

num = randint(1, 100)
answer =input()

while answer !=num:
    if answer<num:
        print '%d is too small'%answer
        answer =input()
    if answer>num:
        print '%d is too big'%answer
        answer = input()

while answer==num:
    print '%d is right'%num
    answer =111

作者: 草办    时间: 2015-12-3 09:46
简洁易懂。
作者: catherinemic    时间: 2015-12-28 13:44
前几天给装了win8.1,感觉速度快了一些,不过C盘可用空间掉得好快,想问crossin老师,我是不是只能去重新分区给C盘大一点空间呢?

Python9.png (5.36 KB, 下载次数: 401)

Python9.png


作者: crossin先生    时间: 2015-12-28 16:23
catherinemic 发表于 2015-12-28 13:44
前几天给装了win8.1,感觉速度快了一些,不过C盘可用空间掉得好快,想问crossin老师,我是不是只能去重新分 ...

嗯,win的c盘消耗很快的,感觉100g都撑不了多久。尽量不放东西在c盘吧
作者: catherinemic    时间: 2015-12-29 11:12
crossin先生 发表于 2015-12-28 16:23
嗯,win的c盘消耗很快的,感觉100g都撑不了多久。尽量不放东西在c盘吧

看来只能去重新分区了,谢谢crossin老师~~
作者: Killuia    时间: 2016-4-27 16:22
from random import randint
num=randint(1,100)

print'Guess what I think?'
bingo=False

while bingo==False:
    answer=input()

    if answer<num:
        print"%d is too small!"%answer

    if answer>num:
        print"%d is too big!"%answer

    if answer==num:
        print"%d is BINGO!"%answer
        bingo=True
   
运行成功

作者: 十三才    时间: 2016-8-28 20:45
我看那位地板上的朋友有两行用elif来代替if,但是实际上对结果也没什么影响,elif和if有什么区别?
作者: crossin先生    时间: 2016-8-29 10:54
十三才 发表于 2016-8-28 20:45
我看那位地板上的朋友有两行用elif来代替if,但是实际上对结果也没什么影响,elif和if有什么区别? ...

看这里:
【Python 第23课】 if, elif, else
http://bbs.crossincode.com/forum ... d=909&fromuid=3

作者: 十三才    时间: 2016-8-29 10:56
crossin先生 发表于 2016-8-29 10:54
看这里:
【Python 第23课】 if, elif, else
http://bbs.crossincode.com/forum.php?mod=viewthread&tid= ...

后面会讲到啊,我一点一点来吧
作者: fjxc1893    时间: 2016-11-25 16:14
感谢!!!
作者: l0ve1o24    时间: 2016-12-4 18:22
from random import randint
num = randint(1,100)
print'guess waht i think?'
bingo = False
while bingo == False:
    answer = input()

    if answer < num:
        print'%d is too small'%answer
    if answer > num:
        print'%d is too big'%answer
    if answer == num:
        print'%d is bingo'%answer
        bingo = True

作者: 职业正经人    时间: 2016-12-12 16:00
from random import randint
num=randint(0,101)
print'''Guess what No. I'm thinking'''
answer=101
while answer!=num:
    answer=input()
    if answer>num:
        print str(answer)+' is too big'
    if answer<num:
        print str(answer)+' is too small'
    if answer==num:
        print 'BINGO '+str(answer)+' is right the number I was thinking!'

作者: ponber    时间: 2016-12-19 21:05
from random import randint
num1=randint(1,50)

print 'guess what num i\'m thinking?'
bingo=False
while bingo==False:
    x=input()
    if x>num1:
        print str(x)+' is too big'
    if x<num1:
        print str(x)+' is too small'
    if x==num1:
        print str(x)+' is the right answer'
        bingo=True


num2=randint(1,50)
aa='Your answer '

print 'guess another num?'
bingo=False
while bingo==False:
    y=input()
    if y>num2:
        print '%s'%aa+str(y)+' is too big'
    if y<num2:
        print '%s'%aa+str(y)+' is too small'
    if y==num2:
        print '%s'%aa+str(y)+' is right'
        bingo=True

作者: ponber    时间: 2016-12-19 21:07
求点评!
作者: crossin先生    时间: 2016-12-20 14:06
ponber 发表于 2016-12-19 21:05
from random import randint
num1=randint(1,50)

可以的。
你可以再尝试用while循环,把它写成一个可以一直猜的程序
作者: ponber    时间: 2016-12-20 19:33
from random import randint
m=0
while m==0:
    num=randint(1,50)
    bingo=False
    aa='Your answer '
    print'Just guess and guess again,don\'t stop!\nDo what \
Mr Crossin told you to do,please!'
    while bingo==False:
        x=input()
        if x<num:
            print'%s'%aa+str(x)+' is small'
        if x>num:
            print'%s'%aa+str(x)+' is big'
        if x==num:
            print'%s'%aa+str(x)+' is bingo'
            bingo=True
作者: rye    时间: 2018-1-13 23:07
from random import randint
answer = randint(1, 100)
print('Guess what number I\'m thinking?')
x = int(input())

while x != answer:
    if x > answer:
        print('%d is too big'% x)
        x = int(input())
    if x < answer:
        print('%d is too small'% x)
        x = int(input())
print('Bingo!%d is the right answer'% x)
作者: shan    时间: 2018-4-11 16:32
from random import randint
num=randint(1,100)
print('guess what is think')
bingo=False

while bingo== False:
    answer=int(input())

    if int(answer) < num:
        print ('%s is too small'%answer)
        
    if int(answer)>num:
        print('%s is too big!'%answer)

    if int(answer)==num:
        print('BINGO!,%s is the right'%answer)
        bingo=True
作者: suiersoda    时间: 2018-5-29 10:43
  1. from random import randint

  2. num=randint(23,218)

  3. print('guess what i think?')

  4. bingo = False

  5. while bingo == False:
  6.     a=int(input())
  7.    
  8.     if a >num:
  9.         print('%d is too big'%a)

  10.     if a<num:
  11.         print ('%d is too small'%a)

  12.     if a==num:
  13.         print('excellent!bingo!congratulations!the correct answer is %d'%a)

  14.         bingo=True
复制代码

作者: 哦哦UP    时间: 2020-3-16 20:55
手机公众号上是3.0版本的 这个是2.0版本

作者: 哦哦UP    时间: 2020-3-16 21:21
zzxomg 发表于 2015-3-12 21:08

你的这个序号怎么加上去的

作者: crossin先生    时间: 2020-3-16 22:37
哦哦UP 发表于 2020-3-16 21:21
你的这个序号怎么加上去的

回复框里有个 <> 图标,点一下
作者: cheer    时间: 2021-8-11 11:15
zzxomg 发表于 2015-3-12 21:08

饿 看不懂,尝试复制run也失败了。。
作者: crossin先生    时间: 2021-8-11 23:52
cheer 发表于 2021-8-11 11:15
饿 看不懂,尝试复制run也失败了。。

他发的是py2的代码




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