1
votes

Problème de Python avec la multiplication str / int

Donc, j'essaie de multiplier un nombre qui est spécifié dans une variable, mais chaque fois que je multiplie, il le prend comme une chaîne et multiplie la chaîne, mais quand j'essaye de transformer la variable en un int, la syntaxe dit qu'il DOIT être str!

J'ai essayé de transformer la var en un entier avant la chaîne

def gamble_menu():
  global dice_amount
  dice_amount = input("How many dice? (higher dice count = higher wager multiplier) ")
  gamble_dice()

def gamble_dice():
  while True:

    print(str(dice_amount)); print("1 - " + (int(dice_amount)) * 6)
    print("You must guess the number rolled from the number of dice")
    print("Multiplier = *2")
    number_guess = input("#? ")
    if (int(number_guess)) < 0 or (int(number_guess)) > dice_amount * 6:
      print("Invalid integer, try again")

je m'attends à ce qu'il multiplie la variable par un nombre, mais il le prend littéralement


2 commentaires

if (int (number_guess)) <0 or (int (number_guess))> dice_amount * 6: signifiait ceci: if (int (number_guess)) <0 or (int (number_guess))> (str (dice_amount)) * 6:


Vous pouvez utiliser le lien modifier en bas de l'article pour le mettre à jour. Veuillez éviter de mettre des codes ou des informations supplémentaires dans les commentaires.


5 Réponses :


0
votes

Il semble que votre dice_amount soit une chaîne. (int (number_guess))> dice_amount * 6 essaie de comparer un entier avec une chaîne. Essayez plutôt int (dice_amount) .


2 commentaires

Traceback (dernier appel en dernier): fichier "main.py", ligne 72, dans le menu () Fichier "main.py", ligne 51, dans le menu gamble_menu () Fichier "main.py", ligne 26, dans gamble_menu gamble_dice () Fichier "main.py", ligne 31, dans gamble_dice print (str (dice_amount)); print ("1 -" + (int (dice_amount)) * 6) TypeError: doit être str, pas int


Parce que vous ne pouvez pas ajouter des chaînes et des entiers ensemble



0
votes

C'est peut-être parce que vous essayez de concaténer un nombre et une chaîne dans la fonction d'impression.

Essayez print ("1 -" + str (int (dice_amount) * 6))


1 commentaires

Ça a marché! Il fonctionne maintenant comme prévu, merci.



0
votes

Je pense que le problème vient de

print(f"1 - {int(dice_amount) * 6}")

Vous ne pouvez pas mélanger str + int. si vous êtes sur python 3.7 comme moi, essayez:

print("1 - " + (int(dice_amount)) * 6)


0 commentaires

-1
votes
def gamble_menu():
  global dice_amount
  dice_amount = input("How many dice? (higher dice count = higher wager multiplier) ")
  gamble_dice()

def gamble_dice():
  while True:

    print(str(dice_amount)); print("1 - " + str((int(dice_amount)) * 6))
    print("You must guess the number rolled from the number of dice")
    print("Multiplier = *2")
    number_guess = input("#? ")
    if (int(number_guess)) < 0 or (int(number_guess)) > dice_amount * 6:
      print("Invalid integer, try again")

print("1 - " + (int(dice_amount)) * 6) # this is that str + int, it is wrong.
print("1 - " + str((int(dice_amount)) * 6)) # this that str + str, it works.
Try my best to help you.

0 commentaires

0
votes

Je suppose que le code que vous avez inclus est incomplet. Veuillez ajouter plus de détails. J'ai corrigé quelques erreurs, principalement dues à la façon dont vous utilisez les chaînes en Python. Ce que la fonction essaie de faire n'est pas clair.

def gamble_dice(dice_amount): 

    while True:
        print(str(dice_amount)) 
        print("1 - ",  (dice_amount * 6))
        print("You must guess the number rolled from the number of dice")
        print("Multiplier = *2")
        number_guess = input("#? ")

    if number_guess < 0 or (number_guess > dice_amount * 6):
        print("Invalid integer, try again")
    else:
        print("right on!")

dice_amount = int(input("How many dice? (higher dice count = higher wager multiplier) "))

gamble_dice(dice_amount)


0 commentaires