我需要一个程序,要求用户输入任何文本,然后显示三个字符串,第一个字符串包括文本中的所有元音,所有辅音中的第二个,以及所有其他字符中的第三个。我现在有一个while循环,我想知道如何将它转换为Python中的for循环。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/md_white_1000"
android:gravity="center_horizontal"
android:orientation="vertical" >
<ImageView
android:layout_width="@dimen/laytop_imgwidthheight"
android:layout_height="@dimen/laytop_imgwidthheight"
android:contentDescription="@string/app_name"
android:src="@drawable/app_icon"
android:visibility="gone"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="start"
android:orientation="horizontal" >
<com.commonutility.RoundImageView android:id="@+id/image_view_country_flag"
android:layout_width="32dp"
android:layout_height="32dp"
android:adjustViewBounds="true"
android:scaleType="fitXY"
android:layout_marginLeft="16dp"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:layout_gravity="center_vertical"
android:layout_marginRight="16dp"
android:src="@drawable/country_default_logo"/>
<View
android:layout_width="1dp"
android:layout_height="match_parent"
android:layout_margin="7dp"
android:background="@color/md_grey_300"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/credits_bar_credits_label"
android:textColor="@color/md_grey_700"
android:textSize="19sp"
android:fontFamily="sans-serif-thin"
android:layout_gravity="center"/>
<TextView
android:id="@+id/credit_wallet"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="19sp"
android:layout_gravity="center"
android:textColor="@color/md_grey_700"
android:textStyle="normal"
android:padding="16dp" />
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/md_grey_300"/>
</LinearLayout>
答案 0 :(得分:2)
由于字符串是可迭代的,因此可以替换
while i < len(text):
char = text[i]
带
for char in text:
# no more need for 'i'
顺便说一下,试试if char.lower() in "aioue":
答案 1 :(得分:0)
既然代码很简单,那么通过使用set()
元音而不是字符串,可以提高效率:
# Vowels Set
vowels = set("aeiouAEIOU")
# Accumulators
vowels_string = ""
consonants_string = ""
other_string = ""
# User Input
text = input("Enter text: ")
# Process Text
for char in text:
if char.isalpha():
if char in vowels:
vowels_string += char
else:
consonants_string += char
else:
other_string += char
# Add pseudo-guillemets to make spaces "visible"
print("<<", vowels_string, ">>", sep="")
print("<<", consonants_string, ">>", sep="")
print("<<", other_string, ">>", sep="")