【目录】
文章目录
- 99. for循环练习题-3种方式输出0-9
- 1. for循环和while循环的区别
- 2. 输出 0~(n-1)的数字
- 2.1 基础代码
- 2.2 自定义函数代码
- 2.3 异常处理语句代码
【正文】
99. for循环练习题-3种方式输出0-9
1. for循环和while循环的区别
for循环和while循环都用于重复执行特定的代码块。
【for循环语法】
for 迭代变量 in 迭代对象:循环体
【while循环语法】
while 条件表达式:循环体
【区别】
while循环中,只有一个循环条件,如果为真,则执行循环体代码;否则,跳出循环。
while循环没有明确的计数器或循环变量,需要在循环体中手动更新条件或使用break语句来跳出循环。
有明确的条件,用while循环。
不确定条件,但明确了在某个范围之内,用fo循环。
2. 输出 0~(n-1)的数字
【目标任务】
在同一行内
输出 0-n 中的前 n 个数字,输出的每个数字后跟一个空格
。
【输入要求】
输入一个不大于10的正整数n。
【输出要求】
在同一行中输出 0~(n-1) 的数字。
【示例】
输入:3
输出:0 1 2
【思路解析】
输出 0~(n-1) 的数字,0~(n-1)
这是一个范围。
在某个范围内,我们用for
语句来实现。
2.1 基础代码
【代码示例】
n = int(input("请输入数字 n: "))for i in range(n):print(i, end=" ")
【终端输出】
0 1 2
终端输入3
,输出结果为0 1 2
。
【代码解析】
n = int(input("请输入数字 n: "))
input
函数获取用户输入的数字,注意input函数接收的数据类型为字符串类型。
用int
函数其字符串类型的数据转换为整数类型后赋值给变量 n
。
for i in range(n):
for循环语法:
for 迭代变量 in 迭代对象:循环体
`i`` 是迭代变量。
range(n)
是迭代对象。
使用 for 循环和 range(n) 来生成一个从 0
到 n-1
的整数序列。
range(n) 函数会生成一个包含 0 到 n-1 的序列,每次循环迭代时,将当前迭代的值赋值给变量 i。
注意注意 for 循环语句后面接一个英文冒号:
,冒号后面的循环体代码需要有4个空格
的缩进。
注意注意 range(n)是生成的序列只到n-1
,不包含n
。
print(i, end=" ")
这是是for语句要循环执行的代码。
注意该语句前有4个空格
的缩进。
print(i, end=" ")
将每个数字打印出来,并用空格作为分隔符。
end=" "
的作用是将默认的换行符 "\n"
替换为一个空格,这样数字就会在同一行上输出。
print函数语法:
print(value, …, sep=' ', end='\n', file=sys.stdout, flush=False)
一个完整的print()函数有5个参数:
end
参数设定输出语句以什么结尾,默认是换行符\n
结尾,即输出后会重新起一行。
注意题目要求在同一行内
,且每个数字后跟一个空格
,因此这里需要添加 end=' '
。
【没有end参数,默认 end=‘\n’】
n = 3
for i in range(n):print(i)
【终端输出】
0
1
2
【end=" "】
n = 3
for i in range(n):print(i, end= " ")
【终端输出】
0 1 2
【区别】
默认时,end='\n'
输出有换行效果。
end= " "
输出的数字以空格作为间隔。
2.2 自定义函数代码
【代码示例】
def print_numbers(n):for i in range(n):print(i, end=" ")n = int(input("请输入数字 n: "))
print_numbers(n)
【终端输出】
0 1 2
【代码解析】
def print_numbers(n):
def 语句定义了一个名为 print_numbers 的函数,它接收一个参数 n。
def
是关键字。print_numbers
函数名称,你可以根据自己的喜欢命名。( )
一对英文圆括号。n
是自定义函数接收的参数。
注意注意,如果有多个参数,参数之间使用英文逗号,
分隔。
注意注意,如果没有参数,也必须保留一对空的英文圆括号( )
,否则程序会报错。
for i in range(n):print(i, end=" ")
在函数内部,我们使用 for 循环和 range(n) 来生成一个从 0 到 n-1 的整数序列,并使用 print 函数将每个数字逐个打印出来。
我们使用 end=" " 参数来指定以空格作为分隔符,使得数字在同一行上输出。
n = int(input("请输入数字 n: "))
用input
函数从终端获取一个数字 n 。
print_numbers(n)
调用函数语法:
函数名(参数列表)
当你定义了一个函数后,你可以通过函数名加上一对圆括号来调用它。
括号里可以包含函数需要的参数。
如果函数没有参数,则括号可以为空。
print_numbers
是函数名。( )
一对英文圆括号。n
实际传入给函数的值。
2.3 异常处理语句代码
没有学过异常处理语句的同学,请忽略该部分内容。
要加入异常处理语句,就要先确定程序可能引发的异常错误。
上面的代码异常可能发生在终端输入。
终端输入有以下几种情况:
- 输入一个正整数。
- 输入一个负整数。
- 输入0。
- 输入一个小数。
- 输入的内容非数据类型。
【输入一个正整数:3】
def print_numbers(n):for i in range(n):print(i, end=" ")n = int(input("请输入数字 n: "))
print_numbers(n)
【终端输出】
0 1 2
【输入一个负整数:-3】
def print_numbers(n):for i in range(n):print(i, end=" ")n = int(input("请输入数字 n: "))
print_numbers(n)
终端输入-3
,程序什么也没输出。
【代码解析】
print(list(range(-3)))
【终端输出】
[]
range函数语法为:
range`(start,end,step)`
range 函数有3个参数start,end,step
。
在 range 函数中,如果传入的 end 参数小于等于 start 参数,并且步长 step 的符号与 start - stop 的符号相同,那么生成的序列将为空。
list(range(-3))
返回的是空列表。
for i in range(-3):
没有可以遍历的内容,因此for循环语句没有任何输出。
range函数相关知识可参考下面的链接:
42. range函数—生成器函数-更新
【输入0】
def print_numbers(n):for i in range(n):print(i, end=" ")n = int(input("请输入数字 n: "))
print_numbers(n)
【代码解析】
print(list(range(0)))
【终端输出】
[]
range(0)
和range(-3)
一样,都是空的,不会有内容返回。
【输入一个小数:0.3】
def print_numbers(n):for i in range(n):print(i, end=" ")n = int(input("请输入数字 n: "))
print_numbers(n)
【终端输出】
ValueError: invalid literal for int() with base 10: '0.3'
range函数接收的参数必须是整数。
当输入小数时程序报错。
ValueError: invalid literal for int() with base 10: '0.3'
:“传入的值错误:使用十进制将 ‘0.3’ 转换为整数时出现无效字面值”。
【输入的内容非数据类型:p】
def print_numbers(n):for i in range(n):print(i, end=" ")n = int(input("请输入数字 n: "))
print_numbers(n)
【终端输出】
ValueError: invalid literal for int() with base 10: 'p'
ValueError: invalid literal for int() with base 10: p'
:“传入的值错误:使用十进制将 ‘p’ 转换为整数时出现无效字面值”。
【思路解析】
输入一个正整数 - 程序正常运行
输入一个负整数 - 程序没有输出
输入0 -程序没有输出
输入一个小数- 程序报错 - ValueError: invalid literal for int() with base 10: '0.3'
输入的内容非数据类型-程序报错 - ValueError: invalid literal for int() with base 10: 'p'
【解决可能出现的异常】
输入一个负整数 - 输入的数<0,请重新输入
输入0 -输入的数=0,请重新输入
输入一个小数 - 用except语句抛出ValueError异常
输入内容非数据类型 - 用except语句抛出ValueError异常
【代码示例:99-1.py】
def print_numbers(n): for i in range(n):print(i, end=" ") try:n = int(input("请输入数字 n: "))while n<= 0:n = int(input("输入的数字小于等于0,请重新输入数字 n: "))print_numbers(n)
except ValueError as e:print("您输入的不是正整数!", e)
源代码请到金山文档对应文件夹下载。
【终端输出】
【代码解析】
def print_numbers(n):
定义了一个名为 print_numbers
的函数,该函数接受一个参数 n
。
for i in range(n):
使用 for 循环遍历从 0 到 n-1 的数字。
print(i, end=" ")
打印每个数字 i,并以空格作为分隔符。
try:
try…except 是捕获异常语句。
try 语句块中的代码会被执行。
如果执行过程中出现了异常,就会跳转到 except 语句块中的代码执行。
n = int(input("请输入数字 n: "))
提示用户输入一个数字,并将其转换为整数类型,赋值给变量 n。
while n<= 0:
当输入的数字小于等于 0 时,进入循环。
n = int(input("输入的数字小于等于0,请重新输入数字 n: "))
输入的数字小于等于 0 时,提示用户重新输入一个数字,并将其转换为整数类型,赋值给变量 n。
print_numbers(n)
当输入的数字为正整数时,执行该语句。
调用函数 print_numbers,传入参数 n,以打印从 0 到 n-1 的数字序列。
调用函数语法函数名(参数列表)
。
except ValueError as e:
当输入的内容不是数据类型,就会执行except语句。
-
except
:关键字。 -
ValueError
:异常名称。 -
as
:关键字。 -
e
可选参数,表示给前面的的异常指定一个别名,该别名可根据你的喜欢命名。
print("您输入的不是正整数!", e)
打印出错误消息,指示用户输入的不是一个正整数。
有e
可以输出该语句:ValueError: invalid literal for int() with base 10: 'p'
。
有关异常语句的相关内容可参考下面的链接:
95. Python基础教程:异常处理try…except语句