2017-04-05 54 views
1

我有一個用python語言編寫的小軟件。 行爲:Python,答案不分裂right

  1. 啓動
  2. 從1到100
  3. 要求我輸入一個嘗試選擇一個隨機數。
  4. 它將輸出了一封郵件:

    • 4.1將打印你,你已經做了
    • 4.2的嘗試次數,將打印您的用戶的所有條目。
    • 4.3它會問你可以重播一次

的問題是當用戶的所有輸入的照片顯示類似這樣的

Vos essais: 33 44556677798082848687887079747271 

取而代之的是第4.2節中

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

我已經嘗試了一切,使其工作,但所有的空間即時嘗試噸o只添加印刷品的每個字符。 (ive join join().Split())似乎沒有任何問題。

我知道完整的代碼不專業,但我是一個初學者。

 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)) 

回答

1

你的問題是在你的代碼的這一部分:

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

你迭代通過最後的猜測中的每個字母,只是將每個數字。你也應該增加一個空間。相反,你可能只是這樣做:

message += str(tentative) + ' ' 

然而,這不是解決這個問題的最Python的方式。跟蹤你所有的猜測會更好。然後,當您打印出來時,可以將它們作爲字符串加入。就像這樣:

guesses.append(str(tentative)) 

,然後當你想打印出清單,這樣做:

print ' '.join(guesses) 
0

考慮到你有一個巨大的字符串與所有的數字。

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

tentative = int(input("Votre essai svp: ")),所以暫定爲任何數量的USR inputed的STR表示。

當你

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

您通過清單當然每個字符循環。

如果用戶輸入的第二個數字是44,那麼在第一個循環i上是4,total =「4」和message =「4」。在第二循環中,i再次是4,如果第三數目是55,則在第一環路i =「5」和總=「445」的總變成「44」和消息=「44」

,並在第二個循環總數=「4455」。當你「添加」字符時,你不會在它們之間添加空格。

要解決這個問題,您可以在for循環外部添加一個空格total += " "

另外,如果您想通過玩家猜中號碼的列表,然後使用列表中的message變量是多餘的total

0

。這裏是我已經取代與列表,並刪除一個或兩個額外的變量代碼:

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) ? 
1

我將它儘可能簡單的方式並刪除了只使用這條線像mentionned由

message += str(tentative) + " " 

它的工作超精細和簡單的足夠我有什麼做。

感謝大家快速回答