环境
UiPath Studio Community 2022.4.3
Windows
C#
练习
练习 1 - 列表
对列表进行排序并打印 3 个值
给定国家/地区的输入列表,请对该列表进行排序,并按降序打印前 3 个值。
注意:请使用此值初始化列表:new List(of String) from {"Germany", "Spain", "Japan", "Brazil", "India", "China"}。
解决方案
- 以序列形式启动项目,并使用以下默认值定义字符串变量(“country”)的列表,默认值为:new List(string) (){"Germany", "Spain", "Japan", "Brazil", "India", "China"}。
- 添加一个调用方法活动。在“方法名称”下写入“Sort”,在“目标对象”下写入“country”。保持“目标类型”不变 (null)。
- 在“方法名称”下再添加一个“调用方法”活动。在“方法名称”下写入“Reverse”,并填写其他 2 个字段,就像在前面的“调用方法”中一样
- 创建一个新的字符串变量列表newVariable。
- 向“设计器”面板添加一个“分配”活动。
- 在值字段中,输入原始变量的名称,再输入 country.GetRange(0,3)。此变量将前三个值存储在排序列表中。
- 添加一个“写入行”活动。这将打印值。
- 使用“string.Join”方法:string.Join (", ", newVariable.ToArray()),在“写入行”活动的文本中。
练习 2 - 列表和日期时间
验证列表中的日期在今年是否已过
给定格式为 dd.MM.yyyy 的输入字符串列表,请检查是否有任何日期的月份与当前月份相同,然后打印该日期以输出。
对于具有不同月份的日期,请打印以输出从当前日期到列表日期(当年)为止经过/到期的天数。
注意:使用以下值初始化列表:new List(of String) from {"01.02.1980", "04.05.1985","06.08.1988","24.09.1999","18.11.1986","11.10.1983"}
解决方案
在序列中使用遍历循环活动遍历列表中的所有项目(“变量名中的遍历循环项目”),并在正文中使用以下活动和方法:
- 创建一个日期时间变量(“dateTime”),并使用“DateTime.ParseExact”方法,在“分配”活动中,以转换为日期时间:dateTime= DateTime.ParseExact(item, "dd.MM.yyyy", null)
使用“IF 条件”活动以验证项目的月份是否与当前月份相同:dateTime.Month == DateTime.Today.Month:
- 如果满足条件,则使用“写入行”活动和“ToString("yyyy-MM-dd")”方法打印消息。
- 如果不满足条件,则使用以下活动和方法添加序列:
- a. 使用“分配”活动中的“Subtract”方法创建一个新的 int32 类型的变量(“day”),以计算当月与项目月份之间的差值:day = DateTime.Now.Subtract(new DateTime(DateTime.Today.Year, dateTime.Month, dateTime.Day)) .Days
- b. 将条件声明为 day > 0,然后使用“IF 条件”活动验证日期是未来日期还是过去日期,并使用“写入行”活动中的“String.Format”方法为过去或未来月份打印不同的消息:string.Format("从当前日期到列表日期(当年{0}月{1}日)为止经过{2}天",dateTime.Month, dateTime.Day,day) 和 string.Format("从当前日期到列表日期(当年{0}月{1}日)为止到期还剩下{2}天",dateTime.Month, dateTime.Day,Math.Abs(day)).
流程和变量
If语句
练习 3 - 字典和整数
计算并打印每位环法自行车赛冠军的获胜次数
给定包含年份和姓名的输入字典,请计算每位冠军的获胜次数,并打印所有冠军的姓名及其相应的获胜次数。
注意:使用以下值初始化(Int32、字符串)类型的字典 - New Dictionary(Of Int32,String) From {{2006,"Oscar Pereiro"},{2007,"Alberto Contador"}, {2008, "Carlos Sastre"}, {2009,"Alberto Contador"}, {2010, "Andy Schleck"}, {2011, "Cadel Evans"}, {2012,"Bradley Wiggins"}, {2013,"Chris Froome"}, {2014,"Vincenzo Nibali"},{2015,"Chris Froome"},{2016,"Chris Froome"},{2017,"Chris Froome"}, {2018,"Geraint Thomas"}}
解决方案
- 以序列形式启动项目并创建一个新的字典,类型为 (String, Int32)
利用“遍历循环”(“遍历 FirstDictionaryName.Values 中的 WinnerNames”)遍历第一个字典中的值,并检查该值是否已存在且已作为新字典的键,检查时使用“.ContainsKey”方法,该方法在“IF 条件”活动(“SecondDictionaryName.ContainsKey(WinnerName)”)中:
- 如果满足条件,则使用“分配”活动以增加相应键的值:WinnerCounts(WinnerName) = WinnerCounts(WinnerName) + 1
- 如果不满足条件,则使用“调用方法”活动将键添加到第二字字典,其值为“1”,以及使用目标对象添加第二个字典名称,并“Add”作为方法名称
- 使用“遍历循环”活动遍历第二个字典(“SecondDictionaryName 中的遍历循环冠军”),并利用“写入行”活动打印所有冠军的姓名及其相应的获胜次数。
流程和变量
遍历循环
练习 4 - 字典和双精度数
计算发送到一个城市的包裹总重量
考虑某家航运公司的数据库,其中包含公司人员,以及公司发往世界各地某些城市的包裹及其重量。该数据库是一个字典,其键为字符串类型(人员姓名),值为字典类型(字符串/城市、双精度数/重量)。
请计算一个城市目的地的总重量。计算完成后,应向用户显示一个输入对话框,其中包含输入数据字典中显示的不同城市列表。如果用户没有从输入对话框中选择任何值,则打印“用户未选择任何值”;否则,您可以打印“发送到 <选定城市> 的包裹总重量为 x.xx”(使用两位数)。
注意:对于输入数据,请下载下面已定义字典的工作流。
New Dictionary(Of String, Dictionary(Of String, Double)) From {
{"John C", New Dictionary(Of String, Double) From {{"Madrid",2.1},{"Paris",1.1}} },
{"Sarah C", New Dictionary(Of String, Double) From {{"New York",2.1},{"Paris",3.3},{"Berlin", 0.8}} },
{"Kyle R", New Dictionary(Of String, Double) From {{"San Francisco",2.8},{"NewYork",1.1}} },
{"Johnny B", New Dictionary(Of String, Double) From {{"New York",2.1},{"Paris",3.3}, {"Cairo",1.3},{"Chicago",1.9}} }}
解决方案
- 以序列形式启动项目.
使用“遍历循环”遍历初始字典的值,然后(在正文中)使用“遍历循环”活动遍历第二个字典(城市)的键,并检查字典中是否已有城市,(使用“IF 条件”和“包含”方法):
- 如果满足条件,则使用“分配”活动将存储在相应值中的重量添加到现有值中;
- 如果不满足条件,则使用“分配”活动将存储在相应值中的重量;
3.使用“输入对话框”活动,通过在“活动”属性的“选项”下使用 SecondVariableName.Keys.ToArray() 显示所有城市
a.如果用户选择城市,则使用“写入行”打印“发送到 <选定城市> 的包裹总重量为 x.xx”。
流程和变量
For Each配置
If配置