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
5 Réponses :
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) .
Traceback (dernier appel en dernier): fichier "main.py", ligne 72, dans le menu
Parce que vous ne pouvez pas ajouter des chaînes et des entiers ensemble
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))
Ça a marché! Il fonctionne maintenant comme prévu, merci.
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)
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.
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)
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.