簡體   English   中英

python 中的 while (cin >> var) 等價物是什么?

[英]What's the equivalent for while (cin >> var) in python?

在在線競賽中,當沒有指定輸入的長度並且無法通過程序直接讀取輸入文件時,可以在 C++ 中使用以下代碼:

while (cin >> var)
{
    //do something with var
}

python的等價物是什么?

  • 不使用任何與文件相關的函數,例如open() write() ...

Python 中沒有直接的等價物。 但是你可以用兩個嵌套循環來模擬它:

for line in sys.stdin:
    for var in line.split():

如果您需要字符串以外的其他內容,則需要在單獨的步驟中對其進行轉換:

        var = int(var)

這可能會有所幫助。

import sys

for line in sys.stdin:
    #Do stuff

在 C++ 中, cin >> n具有雙重性質:它既充當布爾表達式,指示它是否已讀取 (true) 或尚未讀取 (false) 序列中的元素,又充當“通道輸入”運算符,獲取元素(如果還有剩余)。 可悲的是,在 python 中,最接近的開箱即用是做n = input() ,它也充當“通道”,但不充當布爾表達式

為了解決這個問題(通過使事物成為“C++onic”而不是“Pythonic”),您可以定義一個輔助函數,方便地稱為cin() 這個函數將有一個參數n ,它實際上就像一個 C++ 傳遞引用(即輸入/輸出參數)一樣工作。 為了模擬這種行為,這里我讓n成為一個帶有一個元素的列表對象——在這種情況下是一個整數—— ,利用 Python 列表的別名屬性。 這樣,當輔助方法中的n[0]發生變化時,每次cin(n)調用返回 true 時,值的變化也會反映在主方法n[0]值中……無需再做。

def cin(n):
    #function that woks equally to doing cin >> n
    try:
        n[0] = int(input())
        return True
    except:
        return False

def main():
    #C++ like main method (for illustrative/comparative purposes)
    n = [0]
    while cin(n):
        #MESSAGE: do someting with n[0] (watch out, n is list object with one element)

main()

例如,在前面的代碼中,如果您想打印具有不確定數量的數字序列的元素的雙精度值,只需將#MESSAGE 行更改為以下內容:

print(n[0]*2)

或者,另一個例子,如果你想實現一個遞歸解決方案來以相反的順序打印一個序列的元素(也具有不確定的長度)並且具有不使用具有多個元素的列表的約束,你將再次需要將 #MESSAGE 行更改為以下內容:

main()
print(n[0])

編寫以下代碼

while True: a=input() if(a==''): break else ..... .

在其他部分,您編寫想要執行的代碼,如果您想在代碼中使用 int 將其轉換為 int 並使用它

暫無
暫無

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

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