我创建一个“ a”随机数列表。而且我需要将奇数更改为该列表的最小数量。但是它没有改变任何数字,怎么了?
import random
a = int(input('Num -> '))
s = []
for i in range(a):
s.append(random.randint(0,10))
if s[i]%2!=0:
s[i]=min(s)
答案 0 :(得分:1)
实际上,您的程序确实会根据您的要求更改数字。我添加了一些琐碎的print
语句来对此进行跟踪:
随机导入
a = 10
s = []
for i in range(a):
s.append(random.randint(0,10))
if s[i]%2==0:
print("Changing", i)
print("\tbefore", s)
s[i]=min(s)
print("\t after", s)
输出:
Changing 1
before [3, 10]
after [3, 3]
Changing 6
before [3, 3, 5, 9, 9, 1, 8]
after [3, 3, 5, 9, 9, 1, 1]
Changing 7
before [3, 3, 5, 9, 9, 1, 1, 6]
after [3, 3, 5, 9, 9, 1, 1, 1]
Changing 8
before [3, 3, 5, 9, 9, 1, 1, 1, 6]
after [3, 3, 5, 9, 9, 1, 1, 1, 1]
Changing 9
before [3, 3, 5, 9, 9, 1, 1, 1, 1, 0]
after [3, 3, 5, 9, 9, 1, 1, 1, 1, 0]
如您所见,偶数 do 被替换为列表的最小值。您声称它不会更改任何数字是不正确的。
如果要更改奇数号,则需要将支票取反:
if s[i]%2 == 1:
答案 1 :(得分:0)
将if s[i]%2==0
更改为if s[i]%2!=0
以选择奇数。第一种方法将更改偶数
import random
a = int(input('Num -> '))
# creates your list of x random numbers
s = []
for i in range(a):
s.append(random.randint(0,10))
# change odd numbers to the min of the original list
for i in range(a):
if s[i]%2!=0:
s[i]=min(s)
因此,假设a为10:
>>> [2, 2, 8, 1, 2, 2, 10, 7, 5, 7]
现在将所有奇数更改为min(在本例中为'1')
>>> [2, 2, 8, 1, 2, 2, 10, 1, 1, 1]
以下答案也适用,这只是您是否需要在创建列表的每次迭代后进行更改,还是先创建列表,然后应用您的规则。