2016-12-23 2 views
-4

Wenn ich eine Liste von Integers und Floats habe und ich es ausdrucken, gibt es eine Möglichkeit, die ganzen Zahlen ohne Dezimalzahl zu drucken Platz, aber behalte es für die Schwimmer?In Python 3.5.2, ist es möglich, die Dezimalstelle für Ganzzahlen zu entfernen, während es für floats

Ich erstellte ein Spiel basierend auf den Karten in einem Deck, wo verschiedene Karten unterschiedliche Werte haben. Der Wert jeder Karte wird dann basierend auf der Farbe entweder mit 2, 1,5, 1 oder 0,5 multipliziert. Dies geschieht nach dem Zufallsprinzip. Dieser Vorgang wird 10 mal wiederholt.

Der Code sieht etwa so aus:

Ihr Ergebnis ist 12
Ihr Ergebnis ist 22,5
Ihr Ergebnis ist 18,0
:

Scores = [2, 4, 6, 8, 10, 12, 15] 
Suits = [2, 1.5, 1, 0.5] 
TScore = 0 
for each in range(10): 
Score = random.choice(Scores) 
Suit = random.choice(Suits) 
TScore = Score * Suit 
print("Your score is {0}".format(TScore)) 

Die Konsole so etwas wie dieses drucken kann Ihre Punktzahl ist 15
Ihre Punktzahl ist 30
Ihre Punktzahl i s 6.0
Ihr Ergebnis ist 6,0
Ihre Punktzahl ist 6,0
Ihre Punktzahl 12
Ihr Ergebnis ist 6

Gibt es eine Möglichkeit, um sicherzustellen, dass die ganzen Zahlen mit einem Komma nicht befolgt werden?

+1

Wie drucken Sie sie? Bist du sicher, dass sie nicht beide sind? Die Tatsache, dass man auch eine ganze Zahl sein könnte, kann mit 'float.is_integer' getestet werden; siehe z.B. http://StackOverflow.com/q/21583758/3001761 – jonrsharpe

+2

Bitte geben Sie weitere Details und genügend Daten an, um anderen zu helfen. – ade1e

+0

Das sind beide Schwimmer ... –

Antwort

1
for score in [4.0, 22.5]: 
    ''' 
    Modulo(%) pulls the remainder, if the number is a whole number 
    dividing by 1 should always return 0. 
    ''' 
    if score % 1 == 0: 
     score = int(score) 
    print(score) 

Für weitere Informationen über Modulo oder andere Betreiber: https://www.tutorialspoint.com/python/python_basic_operators.htm

In Bezug auf jonrsharpe die oben Kommentar .

if score.is_integer(): # a float.method returns true if the number is whole. 
     score = int(score) 
    print(score) 

Für weitere Informationen über float.methods: https://docs.python.org/3/library/stdtypes.html#additional-methods-on-float

+0

if score.is_integer: # a float.method gibt true zurück, wenn die Zahl ganz ist. score = int (score) print (score) es gibt 4, wenn die Punktzahl 4,0 oder 4,8 in beiden Fällen ist –

+0

Ich entschuldige mich, dass ich einen Syntaxfehler eingegeben habe, danke dafür, darauf hingewiesen zu haben. –

0

Ich hoffe, es wird in Ihrem Fall:

def removeDecimal(num): 
     num1 = list(str(num)) 
     if(num1[-1]=='0'):  
       return int(num) 
     else: 
       return num 

def main(): 
     score1 = 4.0 
     score2 = 22.5 
     print(removeDecimal(score1))  
     print(removeDecimal(score2)) 
if __name__=="__main__": 
     main() 

Ausgang hierfür ist:

22.5

Verwandte Themen