python-3.x 从最终打印语句中删除回车符

fslejnso  于 2023-02-10  发布在  Python
关注(0)|答案(3)|浏览(171)
import re 
import sys 

def isValid(s):
    pattern_= re.compile("[12][\d]{12}$")
    return pattern_.match(s) 

loop = int(input ()) 

output=[]
for _ in range(0, loop):
    ele = int(input())
    output.append(ele)

entries = ''
for x in output :
    entries += str(x)+ ''

print (output ) #['0123456789012']
print (entries ) #0123456789012
print(type(entries )) #str
print(type(output )) #list

# Driver Code 
for _ in range(loop):
    for x in entries:
        if (isValid(x)):
            sys.stdout.write ("Valid Number")
            break      
        else :
            sys.stdout.write ("Invalid Number")
            break

电话号码以数字1或2开头,后跟12位数字,即电话号码由13位数字组成。
对于每个电话号码,请在新行中打印“有效”或“无效”。列表中的输入有误
生成的输出为,

2
0123456789012
1123456789012
[123456789012, 1123456789012]
123456789012 1123456789012
<class 'str'>
<class 'list'>
Invalid NumberInvalid Number
[Program finished]

此外,我已经搜索了堆栈前张贴。这看起来不同的问题。如果有任何匹配的错误堆栈,请重定向我那里。

2
1123456789012
0123456778901
Valid Number
Invalid Number
[Program finished]

这是它应该看起来的样子

pxyaymoc

pxyaymoc1#

import re

def isValid(s):
    pattern_= re.compile(r'[1|2][0-9]{12}$')
    return pattern_.match(s)

loop = int(input())
# no of times loops to run

output = []
for _ in range(0, loop):
    output.append(input())

entries = ''
for x in output :
    entries += x + ''

result = []
# Driver Code
for val in output:
    if isValid(val):
        result.append('Valid Number')
    else:
        result.append ('Invalid Number')

for i in range(len(result )-1):
    print(result[i])
   
print(result[-1], end = " ")

print首先将对象转换为字符串(如果它还不是字符串),如果它不是一行的开头和结尾的换行符,它还会在对象前放置一个空格。
当使用stdout时,您需要自己将对象转换为字符串(例如,通过调用“str”),并且没有换行符。
我还可以建议重新措辞你的问题,因为它不是一个逻辑问题,而是一个语法问题。
备注:已检查单个和多个输入。工作正常。

soat7uwm

soat7uwm2#

尝试使用以下正则表达式

def is_valid(s):
    pattern_= re.compile(r'[1|2][0-9]{12}$')
    return pattern_.match(s)

我不知道你为什么要把数字附加到实体变量上。我已经修改了一些代码,正则表达式工作得很好。

def is_valid(s):
    pattern_= re.compile(r'[1|2][0-9]{12}$')
    return pattern_.match(s)

loop = int(input())

output = []
for _ in range(0, loop):
    output.append(input())

entries = ''
for x in output :
    entries += x + ''

print (output )  # ['0123456789012']
print (entries )  # 0123456789012
print(type(entries ))  # str
print(type(output ))  # list

# Driver Code
for val in output:
    if isValid(val):
        print('Valid Number')
    else:
        print('Invalid Number')

输入:

5
1234567891234
1893456879354
2897347838389
0253478642678
6249842352985

输出:

['1234567891234', '1893456879354', '2897347838389', '0253478642678', '6249842352985']
12345678912341893456879354289734783838902534786426786249842352985
<class 'str'>
<class 'list'>
Valid Number
Valid Number
Valid Number
Invalid Number
Invalid Number
kqhtkvqz

kqhtkvqz3#

import sys
import re

def isValid(s):
    pattern_= re.compile(r'[1|2][0-9]{12}$')
    return pattern_.match(s)

loop = int(input())

output = []
for _ in range(0, loop):
    output.append(input())

entries = ''
for x in output :
    entries += x + ''

print (output )  # ['0123456789012']
print (entries )  # 0123456789012
print(type(entries ))  # str
print(type(output ))  # list

# Driver Code
for val in output:
    if isValid(val):
        sys.stdout.write('Valid Number')
    else:
        sys.stdout.write('Invalid Number')

生产

1
1234567891234
['1234567891234']
1234567891234
<class 'str'>
<class 'list'>
Valid Number
[Program finished]

print总是返回carriage,而sys.stdout.write不返回,这个问题就这样解决了。

相关问题