lbf4325 发表于 2022-4-29 11:56:50

格式化输出问题

这是改进我们的小游戏最后一讲双色球题目:
下面是我的写法,程序是有问题的。

import random
while True:
    z = random.randint(1,16)
    c = random.sample(range(1,34),k=6)
    print("开奖结果是:%d ,特别号码是:%d" % (*c, z))
    input("按任意键继续开奖")


我的才猜想是不是问题出在这行

print("开奖结果是:%d ,特别号码是:%d" % (*c, z))

应该是格式化输出*C这里面包含了多个数子,而我用的是%d,去格式化应该是有问题的;
那么如果我要按照我这样的写法输出,该怎么做?

isdkz 发表于 2022-4-29 12:03:27

本帖最后由 isdkz 于 2022-4-29 12:08 编辑

c 解包后有 6 个整数,所以要用 6 个 %d

import random
while True:
    z = random.randint(1,16)
    c = random.sample(range(1,34),k=6)
    print("开奖结果是:%d %d %d %d %d %d,特别号码是:%d" % (*c, z))
    input("按任意键继续开奖")

或者不解包,直接用 %s :
import random
while True:
    z = random.randint(1,16)
    c = random.sample(range(1,34),k=6)
    print("开奖结果是:%s,特别号码是:%d" % (c, z))
    input("按任意键继续开奖")

import random
while True:
    z = random.randint(1,16)
    c = random.sample(range(1,34),k=6)
    print("开奖结果是:%s,特别号码是:%d" % (' '.join(map(str, c)), z))
    input("按任意键继续开奖")

wp231957 发表于 2022-4-29 12:03:42

不能用%d   就直接用连接吧

老八秘制 发表于 2022-4-29 13:27:48

直接用字符串拼接,这么整就跟C没区别了

lbf4325 发表于 2022-4-29 16:01:04

wp231957 发表于 2022-4-29 12:03
不能用%d   就直接用连接吧

import random
while True:
    z = random.randint(1,16)
    c = random.sample(range(1,34),k=6)
    print("开奖结果是:",*c,"\n特别号码是:" ,z)
    input("按任意键继续开奖:")


大哥你说的是这个意思把!

wp231957 发表于 2022-4-29 16:02:23

lbf4325 发表于 2022-4-29 16:01
大哥你说的是这个意思把!

是啊

lbf4325 发表于 2022-4-29 16:06:14

isdkz 发表于 2022-4-29 12:03
c 解包后有 6 个整数,所以要用 6 个 %d




最后这个用法我去瞧瞧看。

lbf4325 发表于 2022-4-29 16:11:22

wp231957 发表于 2022-4-29 16:02
是啊

嗯谢谢提醒!忘了print函数的用法!

lbf4325 发表于 2022-4-29 16:12:29

老八秘制 发表于 2022-4-29 13:27
直接用字符串拼接,这么整就跟C没区别了

没太明白你的意思 ,和楼上大哥说的是一个意思吗?
页: [1]
查看完整版本: 格式化输出问题