【问题标题】:How to take inputs in same line in Python which is inside a loop?如何在循环内的 Python 中的同一行中获取输入?
【发布时间】:2020-07-18 05:26:02
【问题描述】:

如何拒绝。元素和列表在同一行?以下是示例:

1
8
234 567 321 345 123 110 767 111 

在这里我想问用户他/她想要多少个元素是 N 并且在指定我希望用户在他/她输入 N 的同一行中输入元素之后。

T = int(input())
for x in range(T):
    N = int(input())
    nums = list(map(int, input().split()))

使用此代码,我可以在不同的行中给出 N 和 nums,但我希望它们在同一行中,然后评估解决方案。 完整代码如下:

def largest(num):
    num_str = str(num)
    i = 9
    while i >= 0:
        if str(i) in num_str:
            return i
        i -= 1


def smallest(num):
    num_str = str(num)
    i = 0
    while i <= 9:
        if str(i) in num_str:
            return i
        i += 1


def pairs(num):
    if num == 2:
        return 1
    if num == 3:
        return 2
    return 0


T = int(input())
for x in range(T):
    N = int(input())
    nums = list(map(int, input().split()))

    assert(len(nums) == N)

    bitscore = [""]*N

    for i in range(len(bitscore)):
        curr_score = str(11 * largest(nums[i]) + 7 * smallest(nums[i]))
        if len(curr_score) > 2:
            curr_score = curr_score[-2:]
        bitscore[i] = curr_score

    odd_pos_freq = [0] * 10
    even_pos_freq = [0] * 10

    for i in range(len(bitscore)):
        index = int(bitscore[i][0])
        if (i + 1) % 2 == 0:
            even_pos_freq[index] += 1
        else:
            odd_pos_freq[index] += 1

    count_pairs = [0] * 10

    for i in range(10):
        if even_pos_freq[i] <= 1 and odd_pos_freq[i] <= 1:
            continue
        count_pairs[i] += pairs(even_pos_freq[i]) + pairs(odd_pos_freq[i])
        count_pairs[i] = min(2, count_pairs[i])

    print(sum(count_pairs))

我知道这个问题可能听起来很愚蠢,但很多时候我被困在这么小的事情上,即使逻辑正确,我也无法提交正确的答案。

【问题讨论】:

  • 如果用户输入的比他/她指定的少,你想做什么?
  • 您可以只读取一行 N 和所有数字并将它们拆分。索引 0 是 N。

标签: python python-3.x list loops user-input


【解决方案1】:

替换你的代码:

N = int(input())
nums = list(map(int, input().split()))

与:

line = input('')
nums = list(map(int, line.split()))
N = nums[0]
nums = nums[1:]

【讨论】:

  • 给出这段代码后,我无法评估答案。
  • 我想提供这样的输入 8 234 567 321 345 123 110 767 111 然后评估代码。
  • 只需读取整行,转换为整数。第一个元素是 N。其余的是数字。
  • 感谢您的帮助。我被困了很长一段时间
猜你喜欢
  • 1970-01-01
  • 2019-06-25
  • 1970-01-01
  • 2015-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-18
  • 2013-02-10
相关资源
最近更新 更多