python中輸入多個數字(代碼實現)


不多說,直接上代碼:
 1 list1 = [] #定義一個空列表
 2 str1 = input("請輸入數值,用空格隔開:") #
 3 list2 = str1.split(" ") #list2用來存儲輸入的字符串,用空格分割
 4 
 5 i = 0
 6 while i <= len(list2)+1:
 7     list1.append(int(list2.pop())) #將list2中的數據轉換為整型並賦值給list1
 8     i += 1
 9    
10 print(list1) #打印list1,可知list1為用戶輸入整數的列表

改進:以上代碼中有兩個小問題,其一是打印所得列表list1與用戶輸入順序相反;其二是列表list1中元素個數少於用戶輸入的整數個數。問題一可以用python中的reverse()函數將列表list1中的元素進行反向排序,至於問題二,其出現的原因是在上述第7行代碼:list1.append(int(list2.pop()))  此行代碼中的list2.pop()影響了循環的次數,因為每次列表list2中pop出一個元素時,len(list2)的值減一,這樣最終導致list1中的元素數量少於list2中的元素個數,及列表list1中元素個數少於用戶輸入的整數個數。因此,可行的方法是在進入循環之前我們用一個不變的變量來表示列表list2的長度值,然后用這個值來控制循環,這樣就不會出現問題二的情況了,改進代碼如下:

 1 list1 = [] #定義一個空列表
 2 str1 = input("請輸入數值,用空格隔開:") 3 list2 = str1.split(" ") #list2用來存儲輸入的字符串,用空格分割
 4 
 5 list2_length = len(list2)
 6 i = 0
 7 while i <= list2_length-1:
 8     list1.append(int(list2.pop())) #將list2中的數據轉換為整型並賦值給list1
 9     i += 1
10 
11 print(list1) #打印list1,可知list1為用戶輸入整數的列表
12 list1.reverse()
13 print(list1) #再次打印list1

說明:以上是比較繁瑣的一種方法了,但是比較容易理解,下面方法更為簡單,用python內置函數map()來解決此問題。

首先我們必須明白python的map()函數是什么,要怎么用?(PS:以下內容來自網站:http://www.runoob.com/python/python-func-map.html)

Python map() 函數

Python 內置函數 Python 內置函數


描述

map() 會根據提供的函數對指定序列做映射。

第一個參數 function 以參數序列中的每一個元素調用 function 函數,返回包含每次 function 函數返回值的新列表。

語法

map() 函數語法:

map(function, iterable, ...)

參數

  • function -- 函數,有兩個參數
  • iterable -- 一個或多個序列

返回值

Python 2.x 返回列表。

Python 3.x 返回迭代器。

實例

以下實例展示了 map() 的使用方法:

                                                                                                                                                                 

上面我們介紹了python內置函數map(),下面就python中輸入多個數字這一問題用map()函數解決如下:

 

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

一行代碼搞定,是不是很驚奇!其實python就是這么簡潔。

人生苦短,我用python!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM