Python,回答不正确分裂

时间:2017-04-05 22:43:47

标签: python

我有一个用python语言制作的软件。 行为:

  1. 开始
  2. 选择1到100之间的随机数
  3. 请我输入一个尝试。
  4. 它会输出一个消息:

    • 4.1它会打印出您已完成的尝试次数
    • 4.2它会打印出用户的所有条目。
    • 4.3它会要求您重播
  5. 问题出在4.2节中,用户的所有输入的打印都是这样显示的

    Vos essais: 33 44556677798082848687887079747271
    

    而不是

    Vos essais: 33 44 55 66 77 79 80 82 84 86 87 88 70 79 74 72 71
    

    我已经尝试了一切使它工作,但我尝试添加的所有空间只是分开打印的每个字符。 (我加入join()。分裂())似乎没什么用。

    我知道完整的代码不是专业的,但我是初学者。

            liste = tentative
            for i in str(liste):
                total = total + i
                message = total
        print("Bravo vous avez devinez mon choix après", "\x1b[0;33;40m" + str(compteur) + "\x1b[0m",\
    "\x1b[0;33;40m"+ "essais!" + "\x1b[0m", "\nVos essais:", str(premieressaie), str(message))
    

5 个答案:

答案 0 :(得分:1)

您的问题出在代码的这一部分:

    liste = tentative
    for i in str(liste):
        total = total + i
        message = total

您正在迭代最后一个猜测的每个字母,只是添加每个数字。你也应该添加一个空格。相反,你可以这样做:

message += str(tentative) + ' '

然而,这不是解决这个问题的最蟒蛇方式。跟踪你所有的猜测会更好。然后,当您将其打印出来时,您可以将它们作为字符串连接起来。像这样:

guesses.append(str(tentative))

然后当您想打印出列表时,请执行以下操作:

print ' '.join(guesses)

答案 1 :(得分:1)

我已经使它成为最简单的方法并删除了只是使用这条线,如

所提到的那样
message += str(tentative) + " "

对于我必须做的事情,它的工作非常精细和简单。

感谢大家的快速回答

答案 2 :(得分:0)

考虑到你有一个包含所有数字的巨型字符串。

container=[]
yourstring="your string here"
for i in range(len(yourstring)):
    try:
        container.append(yourstring [i:(i+2)])
    except:
        break

答案 3 :(得分:0)

tentative = int(input("Votre essai svp: ")),所以暂定是用户表示的任意数字的str代表。

当你这样做时

    liste = tentative
    for i in str(liste):
        total = total + i
        message = total

你正在循环遍历每个liste的角色。

如果用户输入的第二个数字是44,那么在第一个循环i上是4,总数=" 4"和消息=" 4"。在第二个循环中,i再次为4,总数变为" 44"和消息=" 44"

如果第三个数字是55,那么在第一个循环i =" 5"和= =#34; 445",并且在第二个循环total =" 4455"。当你添加'你不在它们之间添加空格的字符。

要解决此问题,您可以在for循环total += " "之外添加一个空格。

此外,message变量多余为total

答案 4 :(得分:0)

如果您想要播放器猜到的数字列表,请使用列表。这是我用代码替换 total 的代码,并删除了一个或两个额外的变量:

def devinettes():
    nombre = random.randint(1, 100)
    compteur = 1
    total = []
    premieressaie = ""
    message = ""
    print("J'ai choisi un nombre aléatoire de 1 à 100 inclusivement \n\
et je vous invite à deviner de quel nombre il s'agit.")
    while True:
        try:
            tentative = int(input("Votre essai svp: "))
            total.append(tentative)
            break
        except ValueError:
            print("Ceci n'est pas un nombre entier.")
    while tentative != nombre:
        if tentative < 0:
            print("Bon, vous en avez assez, ça se voit...")
            sys.exit()
        elif tentative > nombre:
            print("Trop grand! ")
        elif tentative < nombre:
            print("Trop petit! ")
        while True:
            try:
                tentative = int(input("Votre essai svp: "))
                break
            except ValueError:
                print("Ceci n'est pas un nombre entier.")
        compteur += 1
        liste = tentative
        total.append(tentative)

    message = ' '.join([str(essai) for essai in total])
    print("Bravo vous avez devinez mon choix après", "\x1b[0;33;40m" + str(compteur) + "\x1b[0m",\
"\x1b[0;33;40m"+ "essais!" + "\x1b[0m", "\nVos essais:", message)
    reessaie = recommence()
    return reessaie

我玩了两场比赛,它运作正常。例如:

J'ai choisi un nombre aléatoire de 1 à 100 inclusivement 
et je vous invite à deviner de quel nombre il s'agit.
Votre essai svp: 50
Trop petit! 
Votre essai svp: 75
Trop petit! 
Votre essai svp: 88
Trop grand! 
Votre essai svp: 81
Trop grand! 
Votre essai svp: 78
Trop petit! 
Votre essai svp: 79
Trop petit! 
Votre essai svp: 80
Bravo vous avez devinez mon choix après 7 essais! 
Vos essais: 50 75 88 81 78 79 80
Rejouer (o/n) ?