Home > Software engineering >  Print random numbers on same line inside f string
Print random numbers on same line inside f string

Time:07-21

I'm trying to generate random numbers onto the same line and I am having some issues with the formatting.

I am trying to shorten my long code below into something more efficient code wise:

import random

randomnumber1 = random.randint(1,99)
randomnumber2 = random.randint(1,99)
randomnumber3 = random.randint(1,99)
randomnumber4 = random.randint(1,99)
randomnumber5 = random.randint(1,99)
randomnumber6 = random.randint(1,99)
lucky_numbers = f"{randomnumber1}-{randomnumber2}-{randomnumber3}-{randomnumber4}-{randomnumber5}-[{randomnumber6}]"
print(lucky_numbers)

Output is this:

31-29-31-50-69-[14]

After a few attempts, my new code is this:

for i in range(5):
    first_half=print(f"{random.randint(1,99)}-", end="")
print(f"{first_half}-[{random.randint(1,99)}]")

However, whenever I run it the output is this:

77-41-39-32-74-None-[29]

How do I stop the 'None' from appearing in my output and also why is it appearing? Thanks

CodePudding user response:

You assign print to first_half and print return None. You can use '-'.join.

first_half = '-'.join(str(random.randint(1,99)) for _ in range(5))
print(f"{first_half}-[{random.randint(1,99)}]")

63-55-77-71-81-[47]

Explanation:

# list comprehension
>>> [str(random.randint(1,99)) for _ in range(5)]
['94', '7', '15', '86', '54']

# use '-'.join()
>>> '-'.join(str(random.randint(1,99)) for _ in range(5))
'94-7-15-86-54'

CodePudding user response:

a bit shorter:

from random import choices

>>> '{}-{}-{}-{}-{}-[{}]'.format(*choices(range(1,100), k=6))

'79-48-93-81-18-[72]'
  • Related