簡體   English   中英

在用戶不斷輸入之前如何運行程序?

[英]How to run a program until user keeps giving input?

問題陳述

給定名字和電話號碼,組裝電話簿,將朋友的名字映射到他們各自的電話號碼。 然后,將為您提供未知數量的名稱,以查詢電話簿。 對於所查詢的每個名稱,將電話簿中的相關條目以“名稱= phoneNumber”的形式換行打印; 如果找不到名稱條目,則打印“找不到”。

輸入格式:...

在電話簿條目行之后,存在未知數量的查詢行。 每行(查詢)都包含一個要查詢的內容,以及

您必須繼續閱讀各行,直到沒有更多輸入為止。

在沒有更多輸入之前,應如何循環播放?

也有人可以告訴我在C ++中這怎么可能嗎?

這是我在Python 3中的代碼:

n = int(input())
names = {}
for foo in range(n):
    entry = input().split(' ')
    names[entry[0]] = entry[1]
while (1==1):
    check = input()
    if(names.get(check)!=None):
        print(check + '=' + names.get(check))
    else:
        print('Not Found')

它只是無限循環,因此觸發錯誤。 在此處輸入圖片說明

這是C ++代碼:

#include<iostream>
#include<map>
#include<string>
using namespace std;

int main(void)
{
    map<string, string> phonebook;
    int n;
    cin >> n;
    string key, num;
    for(int i = 0; i < n; i++)
    {
        cin >> key >> num;
        phonebook.insert(pair<string, string>(key, num));
    }
    while (1 == 1)
    {
        cin >> key;
        if(phonebook.count(key) > 0)
            cout << key << "=" << phonebook[key] << endl;
        else
            cout << "Not found" << endl;
    }
}

在沒有更多輸入之前,應如何循環播放?

您可以使用while循環。 要捕獲並消除錯誤,可以使用try-except塊:

n = int(input())
names = {}
for foo in range(n):
    entry = input().split(' ')
    names[entry[0]] = entry[1]

while True:     # (1 == 1) == True
    try:
        check = input()
    except EOFError:  # catch the error
        break       # exit the loop

    if(names.get(check)!=None):
        print(check + '=' + names.get(check))
    else:
        print('Not Found')

也有人可以告訴我在C ++中這怎么可能嗎?

嗯...奇怪的要求。 我將把您指向std::getlinestd::map然后讓他們進行交談。 :-)

這是正確的C ++代碼:

#include<iostream>
#include<map>
#include<string>
using namespace std;

int main(void)
{
    map<string, string> phonebook;
    int n;
    cin >> n;
    string key, num;
    for(int i = 0; i < n; i++)
    {
        cin >> key >> num;
        phonebook.insert(pair<string, string>(key, num));
    }
    getline(cin, key);

    while(getline(cin, key))        //Loop runs while we are getting input.
    {
        if(phonebook.count(key) > 0)
            cout << key << "=" << phonebook[key] << endl;
        else
            cout << "Not found" << endl;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM