【问题标题】:print integer number from list random python从列表随机python打印整数
【发布时间】:2023-03-03 11:53:01
【问题描述】:

我有一个小问题,当我在列表中输入相同的数字时,我生成随机数到 50 个列表后,它不会打印“找到匹配”。它总是会向我发送“未找到匹配项”。你们能解释一下代码有什么问题吗?

import random

mylist=[]

for i in range (50):
 x= random.randint(100,999)
 mylist.append(x)

print(mylist)

p = input('Enter an integer number: ')

for i in range(len(mylist)):
    if p == mylist[i]:
        print('Match found at position')
        break
else:
    print('no match found')

输出示例

[836, 569, 378, 788, 847, 584, 404, 159, 362, 271, 151, 100, 702, 414, 867, 213, 194, 553, 946, 930, 777, 143, 143, 879, 724, 752, 431, 416, 944, 509, 752, 211, 713, 951, 882, 836, 710, 998, 447, 892, 720, 210, 364, 768, 603, 456, 540, 727, 346, 153]
Enter an integer number: 836
no match found
>>> 

我刚开始学习编码,所以如果你们能解释一下,我很乐意理解以供将来参考:)

【问题讨论】:

  • input() 返回一个字符串,使用int() 将其转换为整数,然后再与列表中的数字进行比较,如:p = int(p)
  • input 将返回一个字符串而不是整数。在比较之前,您需要转换一个或另一个,以便它们是相同的类型
  • 还有更短的方法来实现这一点。了解random.choices()list.index() 方法。
  • 好的,非常感谢您在将其更改为 p = int(input('enter an integer number: ') 后的回答。再次感谢您:)

标签: python list random input


【解决方案1】:

使用int() 输入您的输入 然后打印匹配的索引

import random

mylist=[]

for i in range (50):
 x= random.randint(100,999)
 mylist.append(x)

print(mylist)

p = input('Enter an integer number: ')

for i in range(len(mylist)):
    if int(p) == mylist[i]:
        print('Match found at position ' + str(i))
        break
    else:
        print('no match found')

【讨论】:

    【解决方案2】:

    除了纠正 cmets 中提到的类型转换之外,您甚至不需要循环来查找匹配项。在 python 中使用强大的in。你可以用这个替换你的整个搜索循环:

    if int(p) in mylist:
        print('Match found at position')
    else:
        print('no match found')
    

    如果你需要在列表中打印p的索引,使用这个:

    try: 
      print('Match found at position ',mylist.index(int(p)))
    except:
      print('no match found')
    

    你也可以使用 numpy 包创建一个没有循环的随机整数列表:

    import numpy as np
    mylist = np.random.randint(100, high=999, size=50).tolist()
    

    所以您的整个代码将如下所示:

    import numpy as np
    
    mylist = np.random.randint(100, high=999, size=50).tolist()
    p = input('Enter an integer number: ')
    if int(p) in mylist:
        print('Match found at position')
    else:
        print('no match found')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-02
      • 2021-03-29
      • 1970-01-01
      • 2011-08-11
      • 1970-01-01
      相关资源
      最近更新 更多