是否可以根据用户输入添加到字符串 python
Is it possible to add to a string based on user input python
我目前正在开发一个接受用户输入的程序,根据用户输入的不同,字符串应该会发生变化。我想知道是否有一种方法可以在收到用户输入后更改字符串。以下是示例代码。
title = input('Title: ')
subtitle = input('Subtitle: ')
chapter = input('Chapter: ')
subchapter = input('Subchapter: ')
title1 = '/title{}'.format(title)
subtitle1 = '/subtitle{}'.format(subtitle)
chapter1 = '/chapter{}'.format(chapter)
subchapter1 = '/subchapter{}'.format(subchapter)
output_txt = title1+subtitle1+chapter1+subchapter1
print(output_txt)
- 用户输入:应该是一个数字
- 然后输入将被格式化为它的透视字符串
- 根据用户输入的字符串,output_txt,应该进行相应的格式化
场景 1:
用户输入
Title: 4
Subtitle:
Chapter: 12
Subchapter: 1
output_txt应该是
output_txt = '/title4/chapter12/subchapter1'
场景二:
用户输入
Title: 9
Subtitle:
Chapter: 2
Subchapter:
output_txt应该是
output_txt = '/title9/chapter2'
我一直在使用 if elif,但由于可能有多种组合,我认为这样做并不是最有效的。
非常感谢任何正确方向的帮助或提示
您可以在将字符串值分配给变量时使用 if-else 条件
title = input('Title: ')
subtitle = input('Subtitle: ')
chapter = input('Chapter: ')
subchapter = input('Subchapter: ')
title1 = '/title{}'.format(title) if title else ''
subtitle1 = '/subtitle{}'.format(subtitle) if subtitle else ''
chapter1 = '/chapter{}'.format(chapter) if chapter else ''
subchapter1 = '/subchapter{}'.format(subchapter) if subchapter else ''
output_txt = title1+subtitle1+chapter1+subchapter1
print(output_txt)
给大家介绍一下typer
typer 将帮助您使用 python 轻松创建 CLI
您的代码可以这样处理
import typer
# By defining the data type, we can set the input only a number
def main(title: int = None, subtitle: int = None, chapter: int = None, subchapter: int = None):
title = f'/title{title}' if title else ''
subtitle = f'/subtitle{subtitle}' if subtitle else ''
chapter = f'/chapter{chapter}' if chapter else ''
subchapter = f'/subchapter{subchapter}' if subchapter else ''
output_txt = title+subtitle+chapter+subchapter
print(output_txt)
if __name__ == "__main__":
typer.run(main)
您只需要 运行 通过为每个需要的参数添加参数即可
python script_name.py --title 5 --chapter 2 --subchapter 7
为了完整起见,您可能还想测试一个数字。
# Test
def test_for_int(testcase):
try:
int(testcase)
return True
except ValueError: # Strings
return False
except TypeError: # None
return False
# Get the inputs
title = input('Title: ')
subtitle = input('Subtitle: ')
chapter = input('Chapter: ')
subchapter = input('Subchapter: ')
# Run the tests and build the string
output_txt = ''
if test_for_int(title):
output_txt += '/title{}'.format(title)
if test_for_int(subtitle):
output_txt += '/subtitle{}'.format(subtitle)
if test_for_int(chapter):
output_txt += '/chapter{}'.format(chapter)
if test_for_int(subchapter):
output_txt += '/subchapter{}'.format(subchapter)
print(output_txt)
你可以这样做...
def get_user_input(message):
user_input = input(message+' : ')
if user_input == '' or user_input.isdigit() == True:
return user_input
else:
return False
def f():
title = ''
while True:
title = get_user_input('title')
if title == False:
continue
else:
break
subtitle = ''
while True:
subtitle = get_user_input('subtitle')
if subtitle == False:
continue
else:
break
chapter = ''
while True:
chapter = get_user_input('chapter')
if chapter == False:
continue
else:
break
subchapter = ''
while True:
subchapter = get_user_input('subchapter')
if subchapter == False:
continue
else:
break
s = ''
s += '/title'+str(title) if title != '' else ''
s += '/subtitle'+str(subtitle) if subtitle != '' else ''
s += '/chapter'+str(chapter) if chapter != '' else ''
s += '/subchapter'+str(subchapter) if subchapter != '' else ''
return s
输出...
title : 1
subtitle : 2
chapter : 3
subchapter : 4
'/title1/subtitle2/chapter3/subchapter4'
title : 1
subtitle :
chapter : 3
subchapter :
'/title1/chapter3'
显然,您需要为特定目的对代码进行少量更改。
这是一种使用正则表达式进行输入验证和列表推导来收集输入并构建输出字符串的方法。
import re
def get_input( label: str = None ) -> int:
entry = input(label + ': ')
if re.match(r'^\d+$', entry) is None:
return None
if int(entry) <= 0:
return None
return int(entry)
tpl_labels = ('Title', 'Subtitle', 'Chapter', 'Subchapter')
lst_values = [get_input(x) for x in tpl_labels]
output_txt = '/'.join([f'{x.lower()}{y}' for x, y in zip(tpl_labels, lst_values) if y])
if not output_txt:
print('No valid responses given.')
else:
output_txt = '/' + output_txt
print(output_txt)
get_input() 函数要求用户输入的每个值都是正整数。所有其他输入都被静默忽略(并返回 None
)。
我目前正在开发一个接受用户输入的程序,根据用户输入的不同,字符串应该会发生变化。我想知道是否有一种方法可以在收到用户输入后更改字符串。以下是示例代码。
title = input('Title: ')
subtitle = input('Subtitle: ')
chapter = input('Chapter: ')
subchapter = input('Subchapter: ')
title1 = '/title{}'.format(title)
subtitle1 = '/subtitle{}'.format(subtitle)
chapter1 = '/chapter{}'.format(chapter)
subchapter1 = '/subchapter{}'.format(subchapter)
output_txt = title1+subtitle1+chapter1+subchapter1
print(output_txt)
- 用户输入:应该是一个数字
- 然后输入将被格式化为它的透视字符串
- 根据用户输入的字符串,output_txt,应该进行相应的格式化
场景 1: 用户输入
Title: 4
Subtitle:
Chapter: 12
Subchapter: 1
output_txt应该是
output_txt = '/title4/chapter12/subchapter1'
场景二: 用户输入
Title: 9
Subtitle:
Chapter: 2
Subchapter:
output_txt应该是
output_txt = '/title9/chapter2'
我一直在使用 if elif,但由于可能有多种组合,我认为这样做并不是最有效的。
非常感谢任何正确方向的帮助或提示
您可以在将字符串值分配给变量时使用 if-else 条件
title = input('Title: ')
subtitle = input('Subtitle: ')
chapter = input('Chapter: ')
subchapter = input('Subchapter: ')
title1 = '/title{}'.format(title) if title else ''
subtitle1 = '/subtitle{}'.format(subtitle) if subtitle else ''
chapter1 = '/chapter{}'.format(chapter) if chapter else ''
subchapter1 = '/subchapter{}'.format(subchapter) if subchapter else ''
output_txt = title1+subtitle1+chapter1+subchapter1
print(output_txt)
给大家介绍一下typer
typer 将帮助您使用 python 轻松创建 CLI
您的代码可以这样处理
import typer
# By defining the data type, we can set the input only a number
def main(title: int = None, subtitle: int = None, chapter: int = None, subchapter: int = None):
title = f'/title{title}' if title else ''
subtitle = f'/subtitle{subtitle}' if subtitle else ''
chapter = f'/chapter{chapter}' if chapter else ''
subchapter = f'/subchapter{subchapter}' if subchapter else ''
output_txt = title+subtitle+chapter+subchapter
print(output_txt)
if __name__ == "__main__":
typer.run(main)
您只需要 运行 通过为每个需要的参数添加参数即可
python script_name.py --title 5 --chapter 2 --subchapter 7
为了完整起见,您可能还想测试一个数字。
# Test
def test_for_int(testcase):
try:
int(testcase)
return True
except ValueError: # Strings
return False
except TypeError: # None
return False
# Get the inputs
title = input('Title: ')
subtitle = input('Subtitle: ')
chapter = input('Chapter: ')
subchapter = input('Subchapter: ')
# Run the tests and build the string
output_txt = ''
if test_for_int(title):
output_txt += '/title{}'.format(title)
if test_for_int(subtitle):
output_txt += '/subtitle{}'.format(subtitle)
if test_for_int(chapter):
output_txt += '/chapter{}'.format(chapter)
if test_for_int(subchapter):
output_txt += '/subchapter{}'.format(subchapter)
print(output_txt)
你可以这样做...
def get_user_input(message):
user_input = input(message+' : ')
if user_input == '' or user_input.isdigit() == True:
return user_input
else:
return False
def f():
title = ''
while True:
title = get_user_input('title')
if title == False:
continue
else:
break
subtitle = ''
while True:
subtitle = get_user_input('subtitle')
if subtitle == False:
continue
else:
break
chapter = ''
while True:
chapter = get_user_input('chapter')
if chapter == False:
continue
else:
break
subchapter = ''
while True:
subchapter = get_user_input('subchapter')
if subchapter == False:
continue
else:
break
s = ''
s += '/title'+str(title) if title != '' else ''
s += '/subtitle'+str(subtitle) if subtitle != '' else ''
s += '/chapter'+str(chapter) if chapter != '' else ''
s += '/subchapter'+str(subchapter) if subchapter != '' else ''
return s
输出...
title : 1
subtitle : 2
chapter : 3
subchapter : 4
'/title1/subtitle2/chapter3/subchapter4'
title : 1
subtitle :
chapter : 3
subchapter :
'/title1/chapter3'
显然,您需要为特定目的对代码进行少量更改。
这是一种使用正则表达式进行输入验证和列表推导来收集输入并构建输出字符串的方法。
import re
def get_input( label: str = None ) -> int:
entry = input(label + ': ')
if re.match(r'^\d+$', entry) is None:
return None
if int(entry) <= 0:
return None
return int(entry)
tpl_labels = ('Title', 'Subtitle', 'Chapter', 'Subchapter')
lst_values = [get_input(x) for x in tpl_labels]
output_txt = '/'.join([f'{x.lower()}{y}' for x, y in zip(tpl_labels, lst_values) if y])
if not output_txt:
print('No valid responses given.')
else:
output_txt = '/' + output_txt
print(output_txt)
get_input() 函数要求用户输入的每个值都是正整数。所有其他输入都被静默忽略(并返回 None
)。