简体   繁体   中英

random, strings and intergers in python

Write python program that generates 3 random numbers between 1 and 10 one hundred times. The program should display each set of 3 numbers on a new line separated by commas. An example output should be formatted as follows:

Number set 1 is: 10,7,8   
Number set 2 is: 4,6,5
...  
Number set 100 is: 7,3,1

I need help displaying it correctly.
3 random numbers 100 times.


import random

mylist = [random.randint(1,11) for r in range(100)]
x = random.sample(mylist,3)
for i in range(100):
    print('Number set', i + 1, 'is', x)



   

The problem:

These lines of code are outside of your loop. This means that the numbers are not going to be unique every time you run the code and will stay the same for all iterations of your loop.

mylist = [random.randint(1,11) for r in range(100)]
x = random.sample(mylist,3)

Solution:

You could move the previous mentioned lines in your code to be inside your loop rather than outside:

import random

for i in range(100):
    mylist = [random.randint(1,11) for r in range(100)]
    x = random.sample(mylist,3)
    print('Number set', i + 1, 'is', x)

Or you could write a cleaner solution:

import random

for i in range(1,101):
    print(f"Number set {i} is: {random.randint(1,11)},{random.randint(1,11)},{random.randint(1,11)}")

Rather than using a list this solution will print a formatted string 100 times of 3 different random numbers. This will loop over 100 times.

You could also take a look at the other answer choices too.

random.choices() and random.sample() are good options too.

read more about them here

An even shorter answer would be:

import random
for x in range(100):
  print('Number set', x , 'is', random.sample(range(1, 11), 3))

if you want random numbers in array you should put random.sample() in loop

import random

mylist = [random.randint(1,11) for r in range(100)]
for i in range(100):
    x = random.sample(mylist,3)
    print('Number set', i + 1, 'is', x)

output is like

...
Number set 98 is [4, 3, 1]                                                                                                
Number set 99 is [11, 11, 4]                                                                                              
Number set 100 is [8, 3, 6]

The another easiest way is random.choices() ,try:

print(*[random.choices(range(1, 11), k=3) for i in range(100)])

Your x is being printed as a list.
What you'll need to do it convert the list in to a string and join them by ',' s

import random

l = ','.join(str(i) for i in x)` and use l in your loop

Here is a minimalist answer:

from random import sample

for i in range(100):
    print('Number set {i+1} is:', ','.join(sample([str(n) for n in range(1,11)],3)))

You can use this code to dynamically choose how many numbers will be in each set:

from random import randint as rd

n = 3 # Choose the amount

for i in range(1,101):
    print(f"Number set {i} is:",','.join(f"{rd(1,11)}" for _ in range(n)))

Output:

Number set 1 is: 8,1,1
Number set 2 is: 9,2,11
Number set 3 is: 4,2,9
Number set 4 is: 6,8,9
Number set 5 is: 8,9,8
Number set 6 is: 11,6,10
Number set 7 is: 10,1,7
Number set 8 is: 4,4,7
Number set 9 is: 9,1,4
Number set 10 is: 1,1,11
Number set 11 is: 6,4,7
Number set 12 is: 9,11,11
Number set 13 is: 11,9,5
Number set 14 is: 6,2,11
Number set 15 is: 7,1,4
Number set 16 is: 11,9,5
Number set 17 is: 9,2,4
Number set 18 is: 5,1,8
Number set 19 is: 5,5,6
Number set 20 is: 5,1,5
Number set 21 is: 1,2,6
Number set 22 is: 8,3,4
Number set 23 is: 3,6,4
Number set 24 is: 5,1,11
Number set 25 is: 7,9,1
Number set 26 is: 10,2,7
Number set 27 is: 9,7,1
Number set 28 is: 11,4,8
Number set 29 is: 10,7,1
Number set 30 is: 2,11,3
Number set 31 is: 3,11,8
Number set 32 is: 2,5,11
Number set 33 is: 9,7,5
Number set 34 is: 9,8,11
Number set 35 is: 1,11,4
Number set 36 is: 8,9,2
Number set 37 is: 6,3,7
Number set 38 is: 8,5,11
Number set 39 is: 7,10,8
Number set 40 is: 10,9,5
Number set 41 is: 9,5,4
Number set 42 is: 10,9,9
Number set 43 is: 1,1,6
Number set 44 is: 10,9,5
Number set 45 is: 7,7,10
Number set 46 is: 9,8,10
Number set 47 is: 9,5,6
Number set 48 is: 7,10,10
Number set 49 is: 6,2,7
Number set 50 is: 9,7,9
Number set 51 is: 11,10,1
Number set 52 is: 2,7,4
Number set 53 is: 11,2,6
Number set 54 is: 2,1,3
Number set 55 is: 9,5,10
Number set 56 is: 6,2,8
Number set 57 is: 1,7,9
Number set 58 is: 8,8,9
Number set 59 is: 5,2,2
Number set 60 is: 8,2,10
Number set 61 is: 4,11,10
Number set 62 is: 8,7,9
Number set 63 is: 3,9,7
Number set 64 is: 8,3,5
Number set 65 is: 10,3,9
Number set 66 is: 9,8,2
Number set 67 is: 7,1,9
Number set 68 is: 10,11,11
Number set 69 is: 1,6,11
Number set 70 is: 2,2,6
Number set 71 is: 10,1,8
Number set 72 is: 6,6,9
Number set 73 is: 7,7,2
Number set 74 is: 4,6,11
Number set 75 is: 4,11,9
Number set 76 is: 8,6,5
Number set 77 is: 11,11,3
Number set 78 is: 2,7,6
Number set 79 is: 11,2,8
Number set 80 is: 4,4,10
Number set 81 is: 5,2,8
Number set 82 is: 9,1,10
Number set 83 is: 10,7,7
Number set 84 is: 11,4,5
Number set 85 is: 7,9,1
Number set 86 is: 6,9,2
Number set 87 is: 2,8,7
Number set 88 is: 6,11,7
Number set 89 is: 6,2,10
Number set 90 is: 8,7,1
Number set 91 is: 3,6,1
Number set 92 is: 10,5,9
Number set 93 is: 3,9,6
Number set 94 is: 7,7,7
Number set 95 is: 11,5,9
Number set 96 is: 10,1,1
Number set 97 is: 11,1,10
Number set 98 is: 7,1,2
Number set 99 is: 5,3,5
Number set 100 is: 1,6,2

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM