Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >打印一个单词,每行一个字符,向后打印

打印一个单词,每行一个字符,向后打印
EN

Code Review用户
提问于 2020-09-06 18:36:12
回答 5查看 7.7K关注 0票数 9

我有一个问题,我解决了两种不同的方式,我想知道哪个更好,更干净,更容易阅读。

问题:编写一个while循环,从字符串中的最后一个字符开始,返回到字符串中的第一个字符,将每个字母打印在单独的一行上。

示例1:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
char = 'Wednesday'
cont = -1
cont2 = len(char)
cont3 = len(char) + 1
while cont < cont2:
    print(char[cont2:cont3])
    cont2 = cont2 - 1
    cont3 = cont3 - 1

示例2:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
char = 'Wednesday'
cont = len(char) - 1
while cont >= 0:
    cont2 = char[cont]
    print(cont2)
    cont -= 1
EN

回答 5

Code Review用户

回答已采纳

发布于 2020-09-06 19:16:15

同时查看这两个实现,忽略练习和替代实现的目标,我认为第二个示例更好:

  • 它少使用一个变量。
  • 它做一个简单的索引查找,而不是一个切片。
  • 实现更容易跟踪。

对于类似这样的简单问题,将解决方案的复杂性看作写下它所必需的“标记”或不同的语言元素的数量通常是有用的。例如,print(cont2)是四个令牌:print(cont2)。通过快速阅读,第一个示例的标记数量大约是第二个示例的两倍。

票数 15
EN

Code Review用户

发布于 2020-09-06 20:13:47

代码越短,越好(只要它不陷入使代码混乱的极端状态)。因此,第二个解决方案更好--使用较少的行和变量来实现相同的目标。

这里有一个小小的吹毛求疵,听起来像是对这个简单任务的过度反应的建议,但是每一个大规模的代码库都是以简单的方式开始的:使用更好的变量名称。

  • char通常是对单个字符的引用,但是在您的示例中,它是整个字符串,这可能有点令人困惑。
  • cont是什么的缩写?
票数 12
EN

Code Review用户

发布于 2020-09-07 10:04:14

当然,第二个答案更好,但这两个答案都不像一个流利的Python程序员会编写的代码。

说明:两个答案都没有充分利用字符串是序列的事实,就像列表和元组一样。除其他外,这意味着字符串可以直接迭代。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
word = 'Wednesday'

# No: too much red tape.

for i in range(len(word)):
    print(word[i])

# Yes: nice and simple.

for char in word:
    print(char)

除了可直接迭代之外,序列是可排序的和可逆式的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for char in reversed(word):
    print(char)

甚至:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
print('\n'.join(reversed(word)))

而且你绝对必须使用一个while循环,也许这会奏效。是的,这是愚蠢的,但它仍然比按索引访问字符串中的字符的官僚作风更简单、更容易理解。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
while True:
    print('\n'.join(reversed(word)))
    break
票数 5
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/249015

复制
相关文章
Spring-引用Bean的属性值
将应用系统的配置信息存放在配置文件中并非总是最合适的,如果应用以集群的方式部署,或者希望在运行期动态调整引用的某些配置,这时,将配置信息放到数据库中不但方便集中管理,而且可以通过应用系统的管理界面动态维护,有效增强应用系统的可维护性。
小小工匠
2021/08/16
7330
Spring Boot引导过程
引导Spring Boot应用程序的一种方法是使用Spring Initializer。为此需要访问Spring Initializer 网页 www.start.spring.io[1] 并选择 Build,Spring Boot版本和平台。此外还需要提供组,工件和所需的依赖项来运行应用程序。
黑洞代码
2021/07/14
9070
Spring Boot引导过程
Spring框架中 Bean对象属性值的注入
注意:如果一个Bean对象同时存在set注入和构造注入两种方法,Spring在为Bean对象属性赋值时,会先使用set注入方式为属性赋值,再使用构造注入为Bean对象属性赋值。
运维搬砖
2018/12/26
4.1K0
transition属性值
transition-property是用来指定当元素其中一个属性改变时执行transition效果,其主要有以下几个值:none(没有属性改变);all(所有属性改变)这个也是其默认值;indent(元素属性名)。当其值为none时,transition马上停止执行,当指定为all时,则元素产生任何属性值变化时都将执行transition效果,ident是可以指定元素的某一个属性值。其对应的类型如下:
全栈程序员站长
2022/11/17
1.6K0
transition属性值
PHP-私有属性继承和重写
1.3 面向对象三大特性 封装 继承 多态 1.4 私有属性继承和重写 私有属性可以继承但不能重写。 <?php class A { private $name='PHP'; public fun
cwl_java
2022/11/30
6280
反射获取属性字段及属性值
上篇文章我们可以通过自己的类加载器加载指定类了,在获取指定类后我们需要拿到类属性名称及类属性的值。 获取属性字段: public static List<Field> getFields(String
春哥大魔王
2018/07/23
4.4K0
反射获取属性字段及属性值
类的继承 方法和属性的重写
当子类和父类进行同一件事进行不同的操作需要重新写方法(例如电脑鼠标点击打开图片,平板电脑触摸打开图片)
用户2965768
2019/01/28
1.5K0
【spring】属性注入
spring的属性注入是bean管理中的一个非常重要的内容,它可以通过有参数的构造函数注入属性,也可以通过set方法注入属性。包括基本类型的属性注入、对象类型的属性注入和复杂类型的属性注入。
全栈程序员站长
2022/08/10
3250
python @property 设置只读属性 重写 getter setter 方法
@property广泛应用在类的定义中,可以让调用者写出简短的代码,就可以重写属性的 get 和 set 方法,同时保证对参数进行必要的检查,这样,程序运行时就减少了出错的可能性。
onety码生
2018/11/21
2.6K0
jQuery 文本属性值
jQuery的文本属性值常见操作有三种:html() / text() / val() ; 分别对应JS中的 innerHTML 、innerText 和 value 属性。
星辰_大海
2020/10/09
2.5K0
jQuery 文本属性值
jQuery 文本属性值
​ jQuery的文本属性值常见操作有三种:html() / text() / val() ; 分别对应JS中的 innerHTML 、innerText 和 value 属性。
梨涡浅笑
2022/05/08
3.1K0
jQuery 文本属性值
jQuery的文本属性值常见操作有三种:html() / text() / val() ; 分别对应JS中的 innerHTML 、innerText 和 value 属性。
清出于兰
2020/10/26
1.8K0
Flex反射得到属性和属性的值
       今天要写一个生成json的方法,目的是将VO对象中的所有公共属性和值转换成一个json对象,这个类中20多个属性,手动拼的话,是个体力活,并且有其它的对象也要转成json,还要手动拼,脑袋里最先想到的就是反射。
高爽
2022/05/07
1.7K0
@JsonSerialize 使用:注解方式 实现条件判断属性值、条件修改属性值
预期效果为:当查到属性值为 1 时,就给序列化后的 json 中性别字段赋值为 “男” , 0 则 ”女“ 。
微风-- 轻许--
2022/04/13
3K0
@JsonSerialize 使用:注解方式 实现条件判断属性值、条件修改属性值
input的属性值_input标签常用的属性
大家好,又见面了,我是你们的朋友全栈君。 <input name=”txtPwd” type=”password” maxlength=”20″ id=”txtPwd” class=”lg_input” οnpaste=”return false;” οncοntextmenu=”return false;” οncοpy=”return false;” oncut=”return false;”>
全栈程序员站长
2022/09/21
4.4K0
Java反射,通过对象获取属性及属性值
在工作中,我们有时候会有很多重复的东西,唯一不一样的,可能就是对象不同,取字段什么的都是一样的。这个时候,就要不断的复制,然后修改对象。太狗屎了。那么有没有不用到处复制的呢?可以使用到Java反射来实现。
凯哥Java
2022/12/16
4.4K0
Java反射,通过对象获取属性及属性值
display属性值有哪些_验证控件display属性
<html> <head> <meta charset=”utf-8″> <title>W3Cschool教程(w3cschool.cn)</title> <style> #main { width: 70px; height: 300px; border: 1px solid #c3c3c3; display: -webkit-flex; display: flex; /* 设置flex布局*/ -webkit-flex-wrap: wrap; flex-wrap: wrap;/*换行*/ -webkit-align-content: center; align-content: center; /*垂直对齐*/ }
全栈程序员站长
2022/11/01
2.3K0
display属性值有哪些_验证控件display属性
java 反射机制--根据属性名获取属性值
1.考虑安全访问范围内的属性,没有权限访问到的属性不读取 [java] view plain copy /**      * 根据属性名获取属性值      *       * @param fieldName      * @param object      * @return      */   private String getFieldValueByFieldName(String fieldName, Object object) {   try {              Fiel
庞小明
2018/07/06
5.3K0
读取重写spring读取配置文件
[Java]代码     package com.templet.spring; import java.io.BufferedReader; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.Properties; import org.springframework
用户8671053
2021/09/26
1.3K0
点击加载更多

相似问题

Spring引导:重写属性值读取器

17

无法在spring引导中重写属性

21

spring引导停靠程序重写属性不工作。

11

从命令行重写Spring引导属性文件

11

使用外部属性重写spring引导application.properties

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文