在python
裡,沒有與
scanf
()直接等同的功能函式,因此需要格式化輸入,就需要使用正規表示式的功能來實現,並且正規表示式的功能比
scanf
()更加靈活,功能更加強大,下面就來列出一些等同的表達:
scanf()格式字串
正規表示式
%c%5c.%d
[-+]?\d+
%e,%e,%f
,%g[-+]?(\d+(\.d*)?|\.\d+)([ee][-+]?\d+)?
%i[-+]?(0[xx][\da-fa-f]+|0[0-7]*|\d+)
%o[-+]?[0-7]+
%s\s+
%u\d+
%x,%x
[-+]?(0[xx])?[\da-fa-f]+
輸入乙個字串的例子:
/usr/sbin/sendmail - 0 errors, 4 warnings
對於上面格式的字串,如果使用c
函式scanf
()來輸入,需要使用下面的格式來實現:
%s - %d errors, %d warnings
如果我們使用正規表示式來表示,如下:
(\s+) - (\d+) errors, (\d+) warnings
例子:print('scanf()')
pattern = re.compile(r"(\s+) - (\d+) errors, (\d+) warnings")
match = pattern.match('/usr/sbin/sendmail - 0 errors, 4 warnings')
if match:
print(match.groups())
結果輸出如下:
scanf()
('/usr/sbin/sendmail', '0', '4')
%c的例子:
print('scanf() %c')
pattern = re.compile(r".")
match = pattern.match('this is for test\n')
if match:
print(match.group())
結果輸出如下:
scanf() %c
t%5c的例子:
print('scanf() %5c')
pattern = re.compile(r".")
match = pattern.match('this is for test\n')
if match:
print(match.group())
結果輸出如下:
scanf() %5c
this
%e, %e, %f, %g的例子:
print('scanf() %e, %e, %f, %g')
pattern = re.compile(r"[-+]?(\d+(\.\d*)?|\.\d+)([ee][-+]?\d+)?")
match = pattern.match('+200.3721\n')
if match:
print(match.group())
match = pattern.match('x9876\n')
if match:
print(match.group())#不匹配沒有輸出
結果輸出如下:
scanf() %e, %e, %f, %g
+200.3721
%i的例子:
print('scanf() %i')
pattern = re.compile(r"[-+]?(0[xx][\da-fa-f]+|0[0-7]*|\d+)")
match = pattern.match('0xaa55\n')
if match:
print(match.group())
match = pattern.match('234.56\n')
if match:
print(match.group())
結果輸出如下:
scanf() %i
0xaa55
八進位制的%o
的例子:
print('scanf() %o')
pattern = re.compile(r"[-+]?[0-7]+")
match = pattern.match('0756\n')
if match:
print(match.group())
match = pattern.match('898\n')
if match:
print(match.group())#不匹配沒有輸出
結果輸出如下:
scanf() %o
字串%s
的例子:
print('scanf() %s')
pattern = re.compile(r"\s+")
match = pattern.match('深圳是乙個小漁村
\n')
if match:
print(match.group())
match = pattern.match('898\n')
if match:
print(match.group())
結果輸出如下:
scanf() %s
深圳是乙個小漁村
%u的例子:
print('scanf() %u')
pattern = re.compile(r"\d+")
match = pattern.match('756\n')
if match:
print(match.group())
match = pattern.match('-898\n')
if match:
print(match.group())#不匹配沒有輸出
結果輸出如下:
scanf() %u
十六進製制%x, %x
的例子:
print('scanf() %x %x')
pattern = re.compile(r"[-+]?(0[xx])[\da-fa-f]+")
match = pattern.match('0x756\n')
if match:
print(match.group())
match = pattern.match('-898\n')
if match:
print(match.group())#不匹配沒有輸出
結果輸出如下:
scanf() %x %x
0x756
C語言 scanf 函式
scanf 函式是用來從外部輸入裝置向計算機主機輸入資料的。scanf 函式的一般格式 案例 已知圓柱體的底半徑radius 1.5,高high 2.0,求其體積。main 案例 已知圓柱體的底半徑為radius,高為high,求其體積。功能 說明函式scanf 的格式及作用。main 程式執行結果...
C語言scanf函式
四 注意事項 編寫程式的主要目的就是為了處理資料。資料從 來?資料的 有很多種方式,如從磁碟檔案中讀取資料 從資料庫中讀取資料 從網頁中抓取資料等,還有一種原始的方式就是從鍵盤輸入資料。在c語言中,有三個函式可以從鍵盤獲得使用者輸入。getchar 輸入單個字元,儲存到字元變數中。gets 輸入一行...
C語言 scanf函式
1 scanf函式,是乙個標準的輸入函式 是乙個阻塞式的函式 當使用scanf的時候,程式會等待使用者輸入,如果不輸入內容,程式不再往下執行 作用 接收從鍵盤輸的的內容 2 使用格式 對比printf printf 格式控制字串 變數列表 scanf 格式控制字串 變數的 位址 列表 printf ...